Nie chodzi mi o bufor oferowany przez system. Sam układ ma bufor, chyba do 16 bajtów max. W managerze urządzeń znajdź port, w ustawieniach zaawansowanych można zmniejszyć lub wyłączyć FIFO.
Jeśli wysyłasz dane z układu uP co 500ms to program, który odczytuje dane z bufora, możne sprawdzać czy nie pojawiły się w nim nowe dane i jeśli zostały zapisane nowe dane to wtedy je dopiero odczytać. Na pewno jest coś takiego opisane w książce RS232-praktyczne programowanie. Jesli nie to poszukaj na http://4programmers.net/search.php?q=obs...
Korzystam również z komponentu APro. Robię to z wykorzystaniem maszyny stanów w następujący sposób: 1. Wysyłam polecenie 1 i ustawiam np. Stan1, 2. Gdy urządzenie odpowie, to w zdarzeniu OnTriggerAvail sprawdzam jaki jest ustawiony stan i w zależności od tego parsuję odpowiedź, 3. Wysyłam polecenie 2 i ustawiam np. Stan2, 4. Gdy urządzenie odpowie,...
Charakterystyczną właściwością bufora cyklicznego (kolejki FIFO) jest to, że wskaźniki początku i końca (odczytu i zapełniania) przemieszczają się niezależnie - każdy w swoim tempie. Stąd w Twoim programie indeksy powinny być niezależnymi zmiennymi globalnymi/statycznymi. Przypisanie liczniku=usartbufferlicznik zakłóciłoby normalny tryb pracy bufora...
tam mam ustawiony stos (zresztą standardowo).... dzięki chłopaki - czyli muszę niestety zmniejszyć trochę bufor odczytu dla transmisji rs232... pozdrawiam
czesc mam podbny problem ze swoim programem int j=0; int okres = 10000000; int wypelnienie = 5000000; char znak; /* Initialize Serial Interface */ PIO_PDR = (1<<PIORXD0) | (1<<PIOTXD0); /* Enable RXD and TXD */ US0_MR = US_CHRL_8 | US_PAR_NO; /* 8 bits, no Parity, 1 Stop bit */ US0_BRGR = 430; /* 9600 Baud Rate (at) 66 MHz...
W buforze wszystkie dane z RSa są z enterem i końcem linii. może nie być początku informacji ale zakończenie zawsze jest Tę kwestię możesz pominąć jest marginalna i nie powinna mieć kluczowego znaczenia dla poprawności odczytu danych jeśli 13 nie wystąpi to po 4096 zerowanie: Dim znak As Integer Dim ciąg As String Dim licznik As Integer licznik = 0...
Problem został rozwiązany! Zainspirował mnie kol. TvWidget uwagami o buforze. Okazało się, że trzeba było ustawić we właściwościach ComPort Timeouts.Constant tak, aby wystarczyło czasu na odczyt bufora. Temat zamykam, wszystkim autorom dziękuję.
Sam ostatnio z tym się bujałem z tym, że używam FLTK... Generalnie tryb OVERLAPPED jest upierdliwy i mi to do d... to działało... Trzeba pamiętać o tym, że funkcje odczytu/zapisu wracają natychmiast niezależnie czy odczytały cokolwiek czy nie potem to już zabawa z flagami, events itp, itd... Do odczytu, jeżeli już faktycznie coś zostało odebrane, używasz...
W załączniku masz gotowy projekt. Dodaj tylko swoją obsługę RS232 i ew. zmień nazwę bufora odczytu. for Bajt:=0 to Length(Bufor)-1 do begin Liczba:=Liczba+Waga*Ord(Bufor ... Waga:=Waga*256; end; Co do sposobu działania tej procedury to działa ona wg wzoru: integer = starszy_bajt * 256 + młodszy_bajt 1. Ord(Bufor[Bajt])...
Daj więcej listingu tego programu, bo tak to możemy sobie zgadywać. Na pierwszy rzut oka to nie wiem po co to waitms w funkcji odczytu ??. Przez to mogą się gubić znaki mimo, że masz bufor.
:arrow: Mictronic: Predkosc transmisji to 9600! Ponizej wklejam wycinki mojego programu do obslugi tego modulu: '------------------------------- ' modul RFiD ' ' 9600.1.0 ' dane 0xff,x,x,x,x,x,crc8 '------------------------------- {...} $baud = 9600 ' predkosc transmisji Config Serialin = Buffered , Size = 100 ' rozmiar bufora {...}...
"- a nie mówiłem :), pulling to pulling". czytaj dokładniej bo o tym na samym początku mówiłem i ja i inni i sam Osamu Tamura - tak więc z tego typu twoich wypowiedzi wynika tylko to co w skrócie zamieściłem w kilku linijkach poniżej: ... a nie mówiłem, że mówiłeś iż mówiłem o tym, że mówiłeś - to ty nie wiedziałeś że mówiłem o tym, że mówiłem ...................
Dlaczego do bufora 32 znakowego wpisujesz 64 znaki? Lekko zmodyfikowałem funkcję ReadUart, aby wypisywała zmienną buf: Jakbyś jeszcze kończył string w miejscu, gdzie skończyły się dane, to nie wypisywałyby się śmeci. Coś w tym stylu: [syntax=cpp] ret = ReadFile(hPort, buf, len,&retlen, NULL); buf[retlen] = 0; cout << buf; [/syntax] Tak w...
A po co ci aż tyle pamięci? Ustaw jakiś nieduży bufor odczytu i czytaj do niego znacznik odpowiedzi +CGMR=xx (8 znaków) i potem tylko interesujące cię znaki (8-10 znaków daty).
Witam. Posiadam program napisany w delphi którego zadaniem jest komunikacja ze sterownikami PLC. Do nawiązania komunikacji została użyta funkcja CreateFile (WinApi). Aby program zczytywał poprawnie bufor muszą być ustawione dwa timeouty: timeouts.ReadTotalTimeoutConstant := 950; // stale opoznienie dla odczytu timeouts.WriteTotalTimeoutConstant := 450;...
Witam ! Tak, rok temy pisałem oprogramowanie do pobierania wagi z wagi RHEWA 83 PLUS w środwisku Delphi7 poprzez port RS232. Program z powodzeniem zbiera dane z wagi. Waga jest ustawiona na tryb ciągłego nadawanie bieżącej wartości wagi. Co 0.5 sekundy zbieram odczyt z bufora RS232, parsuje wartości to tablicy w formie wartości rzeczywistych, wyciągam...
Napisałem parser dla twoich wymagań.. cały bufor to jeden string.. dane zamiast pobierać z rs232 to są pobierane z pliku (dla lepszego testu w porcjach o losowym rozmiarze od 1 do 10 bajtów) i przekazywane do parsera... jedyne co musisz zmienić to źródło danych przekazywanych do AppendToBuf oraz samą obsługe odpowiedzi -> zamienić writeln na co kolwiek...
A może podepnij te styki pod jeden port i go czytaj i zapisuj do bufora. A potem wyniki możesz sobie porównać. Przykład: zrób pętlę sprawdzającą czy coś sie zmieniło na tym porcie jak zmieni jakiś stan to zapisuj kolejne odczyty portu do bufora a potem jakoś je sobie wyślij np rs232.
Żeby to złożyć musisz poznać sposób zapisu liczb zmiennoprzecinkowych (dla uC opisany w jednym z linków, dla PC zapewne będzie podobny). W sumie, jeżeli nie zależy Ci na czasie, możesz sobie pozwolić na wysłanie kilkunastu bajtów, zamist czterech, i nie chce Ci się szukać standardów zapisu floatów to zrób tak jak pisałeś. Przy obsłudze UARTA przerwaniem...
VB6 - wystarczy dodać mscomm na formatkę, ustawić odpowiednio parametry, otworzyć i nadawać lub odbierać. Fajnie działa tam obsługa eventów - nie potrzeba samemu obsługiwać - ustawiasz bufor do wysłania (swój bufor) i się wysyła. Jak twój układ w odpwoeidzi coś odsyła to też dostaniesz odpowiedni event.
Kolejne pytanie: Jeśli chcę odebrać kilka znaków z klawiatury to powinienem wpisać to w jakąś tablicę? Jeśli chcę wysłać do PC cały wyraz to jak to robić? Możesz to zrobić różnie. Zależy czego potrzebujesz i na ile jesteś wprawny w programowaniu w C. W każdym z przypadków trudno jednak będzie się obyć bez tablic dla ciągów znaków odbieranych i wysyłanych....
Witam programator działa bezpośrednio na fizycznym porcie RS232 na starszym komputerze. Instalujemy tylko program Easy51Pro v2.0 dostarczony z programatorem lub poszukany w necie jak chińczyk nie przysłał wraz z programatorem. Programatora nie uruchomiłem na przejściówce USB - problemem może okazać się większy numer COM przypisywany przez system. Program...
Witam, Piszę program do komunikacji z przyrządem laboratoryjnym (PTW Unidos) przez RS232. Aktualny kod: [syntax=c]#include<windows.h> #include<stdio.h> #include<conio.h> #include<fstream> #include<iostream> #include<string> using namespace std; int main() { fstream plik; plik.open("wynik.txt",ios::out); HANDLE hComm;...
jaka będzie różnica Pierwszy odczyta tyle bajtów, ile czeka w buforze do odczuty, druga 8 bajtów: choć nie wiesz, ile jest w buforze - 3, 8 czy 17. Do tego, może głupio to zabrzmi, ale czym jest tu (w RS232) buffor Bufor, nie buffor... Bufor służy do tego, żeby pomieścić nadchodzące z portu kolejne znaki. Gdyby go nie było, musiałbyś obsługiwać je...
No to już bliżej. Nie mniej jednak jest różnica. Jak sam zauważyłeś w buforze przesuwnym przesuwa się dane. A to zajmuje czas. W kołowym się nie przesuwa danych tylko zmienia wskaźnik zapisu/odczytu.
W buforze odbioru są tylko dane wysłane przez czytnik. Należy zwrócić uwagę, że bufor wejściowy wypełnia się niezależnie od funkcji odczytu znaków. Jeżeli np. czytnik wysyła dane (ileś bajtów) cyklicznie, to jeżeli nie jest wywoływana funkcja odczytu znaków bufor wejściowy będzie stopniowo się zapełniał. Funkcja 4403 powoduje odczyt i usunięcie iluś...
Klepnąłęm kawałek kodu na STM32F0x dla obsługi transmisji uK=>PC. Jednak pojawił się dziwny objaw. Może ja nie widzę błędu.... Warto aby ktoś zerknął w ten kod: #define TBUF_SIZE_UART2 128 struct uart2_tx_buf_st { u16_t in; /* indeks zapisu */ u16_t out; /* indeks odczytu */ u16_t dat; /* licznik danych w buforze */ char buf [TBUF_SIZE_UART2];...
Pytanie, jak skonfigurowałeś port (w konfiguracji sprzętowej czy blokiem)? Jakie masz parametry zakończenia ramki? Dioda RX miga? Jeśli możesz załączyć program albo pokazać obrazki to się może coś wymyśli. RCV_PTP powinno działać, ale ten blok nie ma wejścia REQ. Działa w ten sposób, że po podaniu 1 na EN_R oczekuje na zebranie danych w buforze portu...
Witam, Mam program, który pobiera mi z procka jakieś dane. Za pomocą funkcji ComPort1.ReadStr(RevS,5); pobieram 5 bitów jakiejś informacji. Jednak mam wrażenie, że kolejne bity są doklejane do pozostałych już odczytanych. A ja chcę, żeby przed każdym wywołaniem funkcji bufor był czyszczony. Nie wiem czy moje rozumowanie działania RS232 jest prawidłowe....
. Jeśli zaś przychodzi "podzielona" tracę ją a chciałbym ją posklejać. Nie mozesz jej tracic bo przesylane dane sa buforowane, jezeli ich nie odbierzesz za pierwszym razem (kiedy count ma np 3 ) to odbierzesz je w nastepnym zdarzeniu. Musisz jednak pamietac ,zeby odbireac dokladnie 5 bajtow ,bo w buforze moga znajdowac sie kolejne bajty. Mozesz zrobic...
Na Twoim miejscu napisalbym metode, która wysyla zapytanie i odbiera odpowiedz. W przypadku, gdy nie "przyjdzie" 3, to rzuca wyjatek. Co z nim zrobisz zalezy od taktyki. Albo od razu zglosic blad, albo próbowac przeslac kilkakrotnie zapytanie (wczesniej odczekac chwile i wyczyscic bufor). Do debugowania ta pierwsza opcja bedzie latwiejsza i lepsza....
Witam, Podczas odczytu po rs232 otrzymuje jakieś dziwne wyniki. Chodzi mi o to, że nie wiem do końca jak prawidło odczytać z bufora wiadomość i potem ją wykasować. Teraz wydaje mi się, że wiadomości nachodzą na siebie. Odczyt robię używając kontrolki SerialPort w VB.net. [syntax=vbnet] Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal...
Rozumiem ale sęk w tym, że właśnie żadna dana nie może być pominięta, nawet ta pierwsza Dana Jezeli jako pierwsza pojdzie dana[2] (nawet w wersji bez sprawdzania wielkosci bufora) to i tak bedzie pominieta bo masz warunek if znak>127 a tu chodzi ,zeby odczyt byl robiony po zapelnieniu bufora ,jezeli bufor bedzie zapelniony conajmniej 3 bajtami to zaczyna...
Jaki kompilator? Nie pokazałeś deklaracji struktur danych - z tego co widzę to nie obsługujesz przepełnienia wartości zmiennych "odebrano" i "wysłano" - to miałyby być bufory cykliczne? w _putchar() gdy wysyłka_wyłączona == 1 powinieneś od razu wpisać bajt do rejestru SBUF, inaczej będziesz czekał na odbiór bajtu żeby zinicjalizować wysyłkę w przerwaniu....
W powyższych postach to się pojawiało. Ja bym w przerwaniu na maszynie stanów na okrągło wysyłał żądania konwersji temperatury i odczytywał wszystkie czujniki. Odczyt temperatury i zapis do bufora "do zapisu" zrobiłbym atomowo. Z drugiej strony każde żądanie ze strony PC-ta również atomowo przepisywałoby bufor "do zapisu" na bufor "do odczytu" i odczytanie...
Ogółem to jak RPi 2b to powinieneś móc odczyt danych robić po RS232(fizyczny lub emulowany w systemie). Jeśli to byś miał(co wymagałoby tak ogarnąć scalak na RPi, żeby wystawiał dane z sensorów na bufor magistrali RS-232) to w jakimkolwiek języku na desktopie to ogarniesz, ale imo najlepiej C# lub Java czy jeśli wolisz jaki Kotlin Native/React Native(język...
Witam, a po choinkę wyłączać Timer przy organizowaniu wymiany danych z PC ??? poczyta sobie kolega o takich poleceniach jak np: Config Serialin - dzięki któremu można ustawić sobie bufor wejściowy, do tego proszę zobaczyć co przy tym poleceniu robi Bytematch - dzięki, któremu można sobie ustalić po nadejściu jakiego znaku ma się zainicjalizować np jakaś...
Pliki amorficzne (zapewne o takie chodzi) nie posiadaja formatowania w postaci linijek. Dla wlasnych clelow mozesz ustawic bufor odczytu (i zapisu) pliku na pewna ilosc bajtow i po kazdym wyslanym buforze dodatkowo dodawac znak #13(a raczej #13#10) aczkolwiek musisz uwazac aby nie dopisac ich do pliku (poszczegolnego bufora)
ad. 1 Nie wciągnąłeś stdlib.h, w którym itoa() jest zadeklarowana. "Implicit declaration" to taka właściwość języka C, w którym możesz zawołać niezadeklarowaną funkcję. Kompilator wówczas przyjmie deklarację domyślną (funkcja zwracająca int o niezdefiniowanych argumentach). ad. 2 To jest C, tutaj nic nie dzieje się "automatycznie". Programista musi...
co do buforu to ja sie zbytnio niemęczyłem w pascalu.. stworzyłem sobie tablice, oraz 2 zmienne: jedna wskazująca na początek bloku (miejsce zżucania danych), oraz jedna wskazująca na koniec bloku (wskazuje kolejny odczytywany bajt).. podczas odczytu bądź zapisu następuje inkrementacja wskaźnika, jeśli wskaźnik wskazuje na bajt poza buforem (bufor 32...
Witam Mam drobny problem z odczytem dany z com'a w QB64 DIM SHARED NAD AS STRING * 16 'Wysylane 'DIM SHARED ODB AS STRING * 1 'odbierane NAD = "AT" OPEN "COM3:115200,N,8,1,BIN,CS0,DS0&... FOR RANDOM AS #1 PUT #1, , NAD DO GOSUB Readdata LOOP Readdata: DIM L AS STRING * 1 k$ = "" DO IF LOC(1) THEN GET #1, ,...
Podpiełem się pod płytkę i sprawdziałem sobie tą wersję z diodami, o której wcześniej pisałem i z rzeczywisty urządzeniem działa(ale nie do końca tak jak powinno) błąd był rzeczywiście tak ak kolega szelus pisał najpierw muszę sprawdzić stan na UCY 7447 a dopiero pózniej sprawdzac UCY 7442. Po tej modyfikacji wartości na poszczególnych urządzeniach...
Witam. Posiadam program, który komunikuje się ze sterownikami PLC. Mój problem polega na tym, że odczyt/zapis bufora rs232 spowalnia cały program. Wiem, że powinienem zrobić odczyt/zapis w wątku, w związku z tym prosiłbym o pomoc. Poniżej zamieszczam kod modułu odpowiedzialnego za komunikacje: [syntax=delphi] unit Srl_Com; interface uses WinTypes, WinProcs,...
Zrobiłem kolejne programiki testujące (już nawet zaczołem to pisać w C ale te same wyniki). Więc tak: uK napewno dobrze nadaje bo jak w pascalu odczytuje bufor za pierwszym razem to jest tam dana nadawana z mikrokontrolera. Ale flaga odbioru wcale nie była ustawiona. Zapis do portu jakiejś wartości powoduje wyzerowanie LSR. Po odczekaniu chwili odczytuje...
dziękuję bardzo za podpowiedzi, temat okazał się znacznie prostszy - przyznam, że nie doczytałem w PDFie, że odpowiedź z modemu GSM wygląda następująco: <ENTER><odpowiedź><ENTER&... zatem wychodzenie z pętli po pierwszym enterze było w tym przypadku bez sensu bo dane dopiero wchodziły do bufora, a gdy dane nie były buforowane lub nie...
Można zapisywać dowolne dane z dowolnej zmiennej. W pętli umieściłem odczyt adc, bo tylko w trybie jednoczesnej obsługi przetwornika i karty mamy możliwość rezygnacji z bufora. Oczywiście ta obsługa może dotyczyć kilku kanałów, łącznie z zapisem na karcie znaczników/wartości czasu. Analogicznie może się odbywać współpraca z rs232/485 (w procedurze odczytu...
Witam kolegów program napisałem w Visual Studio 2008 i korzystam z fabrycznego komponentu serialport mam zrobiony taki układ na FTDI i Atmega8, prockiem czytam napięcie na ADC z potencjometru i mam taki problem, jak odbieram dane z portu COM to dane są spoźnione o kila sekund, jak skręcę gałką to reakcja w programie jest za kilka sekund, pomyslałem...
Motam się znowu okrutnie z uartami. Mam dwa urządzenia i chcę aby w każdym nadawanie i odbieranie chodziło w przerwaniach. Urządzenia A odpytuje cyklicznie co kilka sekund urządzenie B. Całe odpytywanie polega na tym że: Moduł A wysyła poleceniem: Print #6 , "RED" ; chr(13) ; zapytanie o treści "RED" i na to zapytanie urządzenie B...
Mr_T_ -> ja z kolei zrobiłem z powodzeniem na ATtiny2313 obsługę RS232 a nawet RS485 i to w pełni z użyciem przerwań i buforem cyklicznym dla nadawania i odbioru - dzięki czemu wysyłanie czy odbieranie już z poziomu własnej aplikacji sprowadzało się tylko do wpisania czegoś do bufora lub odczytu stamtąd po sygnalizacji odpowiednim przerwaniem. Wszystko...
Hmmm... Odczyt odbywa się bajt po bajcie. Jeśli wykryto początek to zapis do bufora (tablicy/wektora) i jednoczesne liczenie CRC. Jeśli nie wykryto końca w odpowiednim momencie (ramka o stałym rozmiarze) lub nie zgadza się CRC to ramka jest olewana. Jeśli ok to w buforze znajduje się poprawna ramka. A co zyskuję mając zapis do struktury skoro i tak...
Fajnie że działa :D, program był pisany w Delphi 6 Personal + moduł do obsługi RS232 - VarianAsync wszystko pod WinXPPro i tak był sprawdzany na dwóch kompach z tym systemem. Co masz na myśli mówiąc o długości przesyłanych danych: czy chodzi o ilość miejsca w buforze portu szeregowego czy ilość wysyłanych rozkazów w jednej ramce? Jeśli dekodujesz odpowiedź...
Od kad zmienilem bit CKOPT w fusach dziala bardzo stabilnie za kazdym razem dostaje informacje AT+CSQ+CSQ: 19,99OK Ja wycinam z tego tylko to 19 i przeliczam na dBm oraz robie z tego bargraph Zmienilem tez petle while, wend tak aby wychodzil po znaku OK a nie po {CR} bo w takim wypadku bym nic nie odczytal. Nie rozumiem do konca czemu bez zerowania...
Witam, wypowiem sie na temat modułów tibbo bo z nimi mam duże doświadczenie, nad lentronix-em też się zastanawiałem w czasie projektu ale padło na tibbo, ma darmowe środowisko do programowania modułu, składnia języka oparta o BASIC, obiekty i programowanie zdarzeniowe to zmasakrowało Lantronix-a, dla którego trzeba zakupić "Paradigm C++ Compiler" (czy...
Pracowałem ostatnimi dniami nad małym kontrolerkiem, sterowanym przez RS232. Obsługa niektórych poleceń, wydawanych do niego, trwała nawet po kilka milisekund i... okazało się, że użyty przeze mnie 16F628A ma bufor wejściowy USARTa rozmiaru... 2 bajtów. Tak, to nie pomyłka :| Dlatego postanowiłem napisać obsługę cyklicznego bufora wejściowego - o rozmiarze...
Podepnę się do tematu. Mam odebrać dane z wagi, która wrednie cały czas wysyła trzy linijki: G.W. :+ 000.0g TOTAL:+ 0pcs U.W. :+ 0000g/pcs Interesuje mnie tylko linijka G.W. Spróbowałem w pętli czytać bufor i przy każdorazowym wykryciu tego ciągu pobrać następne 7 znaków i to jakoś działa jednak mój problem to ten bufor pomimo, że bufor na dane odczytywane...
Hej. Wiem że wszyscy jesteście bardzo zajęci i nie macie czasu na zajmowanie się pierdołami ale może ktoś się zlituje i pomoże dokończyć moje bazgroły i uruchomić je na ESP32 jako stronę www z możliwością odczytu i wprowadzania danych które przez I2C będą zapisywane i odczytywane ze sterownika. Tyle udało mi się nabazgrać w sprawiającym masę kłopotów...
Po prostu trzeba dodać warunki, które muszą zostać sprawdzone przed zmianą stanu maszyny Czyli musimy użyć zmiennych globalnych (klawisz, ADC_value). Jeśli o mnie chodzi to nie mam oporów przed używaniem zmiennych globalnych ;-) A jak skomunikować ze sobą kilka maszyn stanu? Zmiennymi globalnymi? Czy po prostu używać wskaźników na te same funkcje?...
Mam ten sam moduł, ten sam problem... Pozwoliłem sobie przerobić troszkę Twój kod: $regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Portb.3 = Output Config Portb.2 = Output Set Portb.3 Set Portb.2 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2...
Nie wiem, jak to jest w C#, ale może powinieneś ponawiać próby odczytu z portu szeregowego, aż dostaniesz cały tekst. Metoda Read może wrócić po wczytaniu już pierwszego znaku Ten fragment kodu... cos = serialPort1.Read(bufor, 0, 10); ...po mojemu odpowiada za odebranie do zmiennej bufor 10 znaków. Nie ustaliłeś prędkości. Wszystkie parametry...
jeśli do portu $3f8 wpiszesz jakąś daną, to zostanie ona wysłana przez kabel TxD.. jeśli dane zostaną odebrane z linii RxD to odczyt portu $3f8 zwróci tą właśnie daną.. tz: Zapis $3f8 - Wysłanie danych.. Odczyt $3f8 - Odczyt odebranych danych.. jeśli w porcie $3f8+5 (LSR) jest ustawiony bit: 0 - odebrano bajt, można go odczytać z portu $3f8 1 - błąd...
witam ano poprostu wysyła kolejne bity każdego bajtu. Każdy bit istnieje jakiś (stały) określony czas na porcie. Tuż przed wysłaniem pierwszego bitu jest wysyłany bit startu (np zero, jeśli stanem spoczynkowym jest 1), po tym bicie "leci" jeden bajt, po nim bit(y) stopu i jeszcze ewentualnie bit parzystości (jeśli liczba ustawionych bitów jest parzysta...
tak na prawdę odbieram tylko odczyty z 2ch kanałów ADC, czyli 4 bajty, żeby było dobrze musiałem dodać bajt synchronizacji po każdym bajcie danych, bo inaczej coś jeszcze nie pasowało, ale Twój sposób się sprawdził :) dzięki za pomysł. Inna sprawa, że cały czas odbieram i wysyłam w przerwaniu od RXC, bo wysyłanie w pętli głównej wysyła oprucz tego jakieś...
Aby przeczytać znaki z bufora, to one wszystkie tam muszą być. Jeżeli jest tylko część, to funkcja je odczyta, ale tylko te, które są aktualnie w buforze. Funkcja ReadDataWaiting sprawdza, ile jest nieprzeczytanych danych w buforze. Przed odczytem danych zawsze powinieneś sprawdzić ile tych danych jest. W twoim przypadku czas oczekiwania na znaki wynosi...
O ile mi wiadomo, sam silnik bazy danych dowolnego typu (Firebird nie będzie tu wyjątkiem) nie zapewnia bezpośredniej współpracy ze sprzętem. Generalnie silnik bazy danych oferuje tylko "zorganizowany magazyn" tabel podzielonych na kolumny i rekordy. Zapis i odczyt danych jest zadaniem programów, które można samemu tworzyć wykorzystując API danej bazy...
Przerwanie zostanie wykonane tylko wtedy gdy nadejdzie nowy znak. W innym przypadku będzie się wykonywał program główny. Jeżeli został odebrany znak to procesor wchodzi w przerwanie, gdzie następuje odczyt UDR i wpisanie go do twojego bufora. [kod] SIGNAL(SIG_UART_RECV) { bufor = UDR; // odczyt znaku } [/kod] Następnie procesor wychodzi z obsługi przerwania...
Na wstępie napiszę: korzystam z arduino mega, konwertera RS232 TTL- RS485 i modułu W5100 dla arduino, zaznaczam, że swoje doświadczenia opieram na arduino, języku programowania c++, czy wirring...tak to się nazywa w środowisku IDE? Nie jestem też z zawodu programistą, więc jakieś złośliwe komentarze proszę sobie darować, natomiast konstruktywne uwagi...
Zawsze można blokować pojedyncze przerwania, lub wewnątrz przerwania odblokować tylko to od UART'u. (tj. zablokować wszystkie inne i dać sei, a potem przywrócić stan początkowy, czyli cli i ponowne odblokowanie wszystkiego). Inne rozwiązanie to zrobienie odpowiednio dużego bufora, tak aby np. dane nagromadzone w czasie działania jakiejś sekcji krytycznej...
Witam, Chciałbym napisać sobie własny prościutki mały bootloader, który zapisywałby tylko pamięć Flash (bez eeprom). Oparty o wczytywanie danych przez RS232. Oczywiście chciałbym to napisać w C. Program miałby działać ze stałą prędkością np 9600. ale na razie mam teoretyczne pytanie czy dobrze rozumuję jak do tego podejść i czy już na tym etapie nie...
Zrobiłem coś takiego. Dane z wagi są bezpośrednio wpisywanie do Excela. działa przez RS232, a cała filozofia to zainstalowac kontrolke MSCOMM32.ocx i napisać proste makro gdzie: 1.otwieramy port; 2. ustawiamy parametry transmisji; 3.na wszelki wypadek czyścimy bufor odczytu; 4. zbierany dane z portu czekając na znak końca linii; 5. wyciągamy wagę z...
Witam serdecznie! Znany jest sposób na wysyłanie tekstu na port COM: import java.io.*; class Test { public static void main(String[] args) /*throws IOException*/ { try { BufferedWriter out=new BufferedWriter(new FileWriter("COM1"))... //com out.write("Tekst do zapisu"); out.close();...
Jeżeli masz na myśli bufory "wewnątrz" układu UART to sterowanie XON/XOFF jest możliwe tylko dla nielicznych realizacji UART i odbywa się przez programowanie odpowiednich rejestrów UART-u ( próg zadziałania, próg wznowienia, kody znaków XOFF i XON). W wiekszości przypadków sterowanie XON/XOFF dotyczy obsługi programowej, realizowanej na przerwaniach...
Mam problem z poprawną łącznością mojego uC z PC. W HyperTerminalu wszystko działa dobrze, tzn odbiera mi ciągle (bez przerwy) wartości temperatury, jednak problem zaczyna się gdy próbuje oprogramować to w c#: Kontrolka SerialPort jest skonfigurowana tak jak w uC Proszę pamiętać o używaniu znaczników code . - arnoldziq
Witam czy ten kod w w 100% kompletny i prawidłowy do obsługi portu RS232 ? pytam bo chciałem za jego pomocą odczytać dane z enkodera który jest połączony z przetwornikiem na mikrokontrolerze a następnie dane wędrują do PC. Aha i jeszcze jedno, czy ma ktoś link w którym jest wyjaśnione/pokazane jak za pomocą HyperTerminal można obsłużyć RS232, bo słyszałem...
A szczególnie, że przy starcie programu zwykle się nie pisze cli(); Nawet gdyby pisac cli na poczatku programu to tez niczego to nie zalatwia. Mozna np. wyobrazic sobie ze w trakcie trwania skoku lub juz nawet po nim trwajaca transmisja na UARCIe wpisala do buforu odbiornika dana i ustawila flage ze jest cos do odczytu. Owszem przerwanie sie nie zglosi,...
Witam, krótki opis układu: procesor 2313 zaimplementowane 2x RS232 jeden sprzetowy drugi programowy. Oba doprowadzone do max232. RS programowy podloczony do PC (hyperTerminal), RS sprzetowy poloczony z Nokia 6310i (przez oryginalny kabelek). Program: ******************************** $crystal = 4000000 $baud = 19200 Dim Odczyt As String * 10 Dim S As...
Witam. Zabrałem się za pisanie biblioteki do obsługi interfejsu SCI w ww. kontrolerze w języku C. Transmisja i odbiór są realizowane w przerwaniach. Tu mam problem. W procedurze obsługi przerwania wywołanego pojawieniem się odebranego znaku w buforze muszę skasować flagę przerwania (RDRF). Skasować ją można sekwencją: - odczyt SCISR - odczyt SCIDR Robię...
To zastanów się, co się stanie, jak jednak do portu dojdzie, z jakiegoś powodu, mniej niż 20 znaków. Wyczyść chociaż bufor wtedy.
Witam. Od jakiegoś czasu zastanawiam się jak przeprowadzić odczyt danych z Multimetrów tutaj omawianych [V-540, V-543, 553 itp.]. Myślałem o Bramie 8255 i Max 232. Nie wiem jak to zrealizować, a tym bardziej jak napisać program realizujący odczyt z 2 (3) takich mierników. W założeniach jest odczyt np. prądu i napięcia w odstępach czasowych programowanych...
proponuje ci dać printa w pętli głównej aby podglądnąć co procesor czyta z UARTA. Może się zdarzyć że czytasz śmieci i przy takiej pętli co się kręci miliony razy na sekundę ciągle się trafia przypadkowy znak 87. Albo wyślij inny znak i zobacz czy procesor czasem na niego też nie zareaguje, jeśli tak to masz pewność że jest coś nie tak sprzętowo. Albo...
Niestety tryb 8-bitowy działa tylko w trybie odczytu. W trybie zapisywania trzeba podawać całe 16-bitowe słowa. Porównywałem sygnały na wyjściach A0, A1, OE i CE programatora przy zapisie np. 27c4096 i 27c16 i wychodzi na to, że na wszystkich sygnałach są takie same przebiegi. A to sugeruje adapter w stylu http://www.ezoflash.com/adapters/dip40b1...
Witam, Z powyższym problemem męczę się już bardzo długo. Naczytałem się o bicie URSEL(w 328p go nie ma),sprawdzałem przejściówkę USB->RS232 działała "na krótko" i przy połączeniu do modułu bluetooth HC05. Wyeliminowałem błąd "UART receiving framing error" z terminala RealTerm poprzez ustawienie buforu FIFO i zmianę buforu zapisu i odczytu. Słyszałem...
Witam, Mam mały problem z komunikacją między uC. Ale od początku. Schemat układu pochodzi z EP http://obrazki.elektroda.net/52_12696388... http://obrazki.elektroda.net/91_12696388... Samą komunikację udało mi się zestawić i działa bardzo dobrze (załączony kod poniżej). Master non stop odpytuje slave i jest git. I teraz mój problem,...
... niewiele się dowiedziałem z powyższego posta.. pozdr. Masz rację, nie chciałem Ci narzucać języka. W Delphi technika może być taka, jak w poniższym przykładzie: var TH : Integer; npom : longint; lpcc : COMMCONFIG; stat : PComStat; const iblen = 1000; oblen= 1000; implementation function RS232Init : boolean; var dww : DWord;...
Witam Możesz spróbować zrobić też w taki sposób: Do D = Inkey() If D > 0 Then 'jeśli coś jest odczytane to wtedy to zapisz do tablicy W(n) = D Incr N 'przejdz do czytania kolejnego elementu tablicy If N = 16 Then N = 1 'wykonywanie operacji na całej tablicy itp. End If End If Loop cały czas odczytujesz znaki a jeśli bufor nie będzie...
Witam, po długiej i ciężkiej pracy udało mi się zbudować układ. Docelowo ma to być sterownik, który będzie odpowiednio reagował na komendy podawane przez rs232 z komputera, również odsyłał znaki i sterował portami wyjścia/wejścia. Proszę o sprawdzenie programu i schematu, sterownik musi działać stabilnie i nie chciałbym czegoś pominąć. (w tym momencie...
W chwili obecnej musze sprawdzic poprawnosc wysylania danych. Bo na razie wyglada ze jesli to nie wina PC, to avr sie nie wyrabia, wiec bufor nic nie da. Po paru testach okazuje sie ze problem moze byc po stronie PC. Jesli odpalam petle bez czekania program jakby zawisa na czas wykonania petli trwa to 31s. Jest to dziwne poniewaz transmisja z AVR do...
Witam, jak wiadomo (przynajmniej mi narazie) z helpa Bascoma - zwykłe polecenie PRINT generuje na końcu dwa dodatkowe znaki CR i LF również jak wiadomo polecenie INPUT reaguje na znak CR ... co więc się dzieje ze znakiem LF po instrukcji INPUT jeśli mamy zdefiniowany jakiś bufor: Config Serialin = Buffered , Size = 80 Input String_var Noecho i przylatują...
Zrób sobie zmienną globalną, która będzie indeksować łąńcuch bufora. W przerwaniu odczytujesz znak, wrzucasz do bufora pod baj o danym indeksie, zwiększasz indeks. Kiedy już przyjdzie znak końca łańcucha zerujesz indeks, a daną masz w buforze. Możesz ją jeszcze przepisać do innej zmiennej, by jej nie stracić, gdy zacznie się odbiór następnego łańcucha...
Absolutnie i zdecydowanie będzie ci to wszystko pięknie działało i to bez mrugnięcia oka czy serwa , i to bez żadnych układów DMA, bez żadnych sztuczek cyrkowych jeśli chodzi o pisanie takiego programu. Po prostu będzie działało - tylko trzeba zrobić podstawową i prostą obsługę RS232 (nadawanie i odbieranie) na przerwaniach ale z użyciem buforów cyklicznych....
Chce skomunikować swój mikrokontroler Atemga8 z komputerem na którym jest Linux. Na razie to dopiero chce sprawdzić czy to działa, a następnie się nauczyć obsługiwać rs232, więc chce cokolwiek wysłać z avr i odczytać na PC. Jednak otrzymuje nie to co powinienem. Do tego posługuję się: terminalem serial port :arrow: http://qt-apps.org/content/show.php/QTSe...
Właśnie wykonuję taki komputer wg całkowicie mojej koncepcji. Jak dotąd na wielkiej płytce uniwersalnej mam: -8080 (CPU), -8224 (zegar), -8228 (sterownik systemu i bufor szyny danych) -dwie sztuki 8212 jako bufory trójstanowe dla szyny adresowej - buduję rozbudowany system w dodatku z układami TTL dołączonymi do szyny adresowej, zatem potrzebne jest...
Witam wszystkich, Mam na stole stary interfejs Opel Scanner A650 z Attiny2313. Będąc u mnie przeszedł ewolucję RS232>USB(nie był to popisowy wykon)>BT(właśnie dziś ją przechodzi). Pomyślałem, że zrobię backup procesora w razie 'W'. Jest to spontaniczne zebranie się w sobie i nie mam pod ręką warsztatu, także chciałem go odczytać PonyProgiem v207c i...
To co zrobiłeś nie miało prawa zadziałać z wybraną płytką NG, ona ma ustwienie na kwarc 16MHz: c:\Program Files (x86)\Arduino\hardware\arduino\avr\board... ... ########################################... atmegang.name=Arduino NG or older atmegang.upload.tool=avrdude atmegang.upload.protocol=arduino atmegang.upload.speed=19200 atmegang.bootloader.tool=avrdude...
1.co do zapisu bajtow to robisz tak char tablica[2]; tablica[0]=0x23; tablica[1]=0x56; writeuart(tablica,2); //wysyla pierwsze 2 bajty ... tablica[0]=0x11; tablica[1]=0xfa; writeuart(tablica,2); //wysyla pierwsze 2 bajty .. itd. nie musisz miec tablicy na 256 znakow.. mozesz nawet bajty wysylac...
Ogólnie to ta przejściówka została zakupiona jakiś czas temu więc nie potrafię powiedzieć czy tak jest zbudowana jak narysowałem na schemacie. Z tego co pamiętam to posiada jakiś sprzętowy bufor danych, ale już nie zamieszczałem tego na schemacie. Jest o tyle niepoprawny, że przy FT232R nie masz kondka filtrującego 100nF a przy zasilaniu z USB może...
Miałem na myśli np. atmega162 cena za szt.7 pln. Czy cena tych procków o których kolega wspominał na poziomie 33 pln czyni je mało konkurencyjnymi a zasoby pamięci zostaną użyte może w 20 %. Fakt końcówek by starczyło bo mają już ich 100 ale przy PCB do prototypu to raczej się trochę namęczę. Dołożyłem zatem atmega8 za 5 pln. Chiałem po prostu aby było...
Za wiele umieć nie trzeba z Arduino, w przyklejonym w tym dziale jest opisane co trzeba zrobić by doinstalować do Arduino płytki ESP8266. Ale to i tak dużo pracy przed Tobą, bawię się Arduino ponad 2lata a i tak co dzień dowiaduję się czego jeszcze nie wiedziałem. Jak masz NODE MCU/ WEMOS to do programowania wystarczy kabelek MICRO USB + Arduino. Do...
zrobiłem tak: Atmega328 - Master Do Config Serialin = Buffered , Size = 24 Enable Interrupts If Ischarwaiting() = 1 Then ' sprawdź czy jest jakiś znak do odebrania w buforze lub HW UART Gosub Odczyt_rs End If '***************************** wysyłanie żadania danych do modułu 001 If Flaga_001 = 1 Then Set Re_de Waitms 2 Print "MOD001"...
https://obrazki.elektroda.pl/8368409700_... Celem projektu było stworzenie amatorskiego programowalnego sterownika logicznego. Motywacją do stworzenia tego sterownika była potrzeba posiadania uniwersalnego urządzenia pozwalającego w warunkach laboratoryjnych na szybkie przetestowanie różnych algorytmów sterowania przy przebiegach szybkozmiennych....
bufor rs232 rs232 bufor rs232 odczyt
przygasa płomień klawiatura zalać spirytus citroen bezpiecznik
wyłacznik selektywny wyłacznik selektywny
Jak przerobić lampy z USA na standardy europejskie? Schemat wtyczki ABS Peugeot 307 - szczegóły i lokalizacja