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...
http://obrazki.elektroda.pl/7296913200_1... Przedstawiam konstrukcję wykonaną 2 lata temu, jaka jest graficzny wyświetlacz LCD przygotowany do współpracy z DSM-51, jednakże może współpracować z dowolnym innym układem mikroprocesorowym, który umożliwia szeregowe wysyłanie danych. W układzie sterującym jest zastosowany mikrokontroler...
Witaj. Także mam falownik ESB 6kW-24V. Sprawa jest generalnie prosta, tylko trzeba rozpracować poszczególne polecenia, a i to niekoniecznie, by pobrać dane z falownika o statusie i bieżącej konfiguracji. Ot wystarczy wysłać sekwencję bajtów i potem obrabiać odpowiedź. Na potrzeby pobierania statystyk - to wystarczy na dowolnej platformie (AVR/STM32/ARM/Android/PC...
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];...
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...
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 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...
Nie rozumie jak chcesz obslugiwac bufor? Buffor gromadzi nadchodzace dane i pobierasz je pokolei i teraz albo zrob osobna procedure odczytu portu (wtedy procedura nie bedzie sie wykonywala tylko jezeli zostana odebrane znaki) albo jezeli bedziesz mial onrxchar to poprostu czysc bufor: ComPort1.ClearBuffer(True, False); //czyscisz bufor wejscia...
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...
Po kiego grzyba w ogóle jest ci potrzebny ten PC-te. Jeśli się przy nim tak uparłeś a masz przecież 2 UART-y to pod jednego podepnij sobie PC-ta z MAX232 a pod drugi SIM-a a dzielnikiem na wyjściu Txd do atmega128 albo buforem 74LVHC08 zasilonym z samego SIM-a. Bedziesz sobie transmitował we wszystkie strony ile dusza zapragnie. Najwydajniejsza jest...
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ś...
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, Kombinuje taki maly układzik, który ma miedzy innymi dzwonić do klienta. Bazuje na jakichs prrzykładach pobranych z sieci. Generalnie z komunikacja z telefonem się uporałem. Niestety problem jest w momencie awari takiego telefonu, zaniku komunikacji. Wówczas kod utyka w instrukcji odczytu potwierdzenia z telefonu i jest zonk, watchdog nie zalatwia...
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...
Mam problem z kompilatorem AVR GCC który ignoruje przy kompilacji część kodu tak jakby nigdy nie mógłby być on wykonany. Kod: [syntax=c]#defineS_STX 0x02 #defineS_ETX 0x03 #defineS_ENQ 0x05 #defineS_ACK 0x06 #defineS_DLE 0x10 #defineS_NAK 0x15 #defineS_ESC 0x1B //pobierz zawartość nadruku i wyłuskaj ciągi unsigned char read_text(unsigned char *buff)...
main.cpp: [syntax=cpp]#include "UART.hpp" int main() { InitializeCriticalSection(&UART_BUSY... InitializeCriticalSection(&STOScs); InitializeCriticalSection(&WriteUART... SetupUart(); //inicjalizacja UARTa CreateThread(NULL, 0, ReadUART, NULL, 0, NULL); hWriteUART = CreateThread(NULL, 0, WriteUART, NULL, CREATE_SUSPENDED, NULL); unsigned...
Udało mi sie pójść krok dalej, robot przestał wariować, ale kiedy próbuje wysłać mu coś przez RSa, nic się nie dzieje. Ogólnie kiedy włączam robota zapala się lampka przy RS, która odpowiada wysyłanie, a kiedy podłączam kabel do RSa to zapala się też lampka od odbioru. Kod z robota: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h>...
Jakiś czas temu trafiłem na stronę www.whiteelectronics.pl której autor jest polskim dystrybutorem budżetowych paneli operatorskich DGUS. Z ciekawości nabyłem jeden z tych wyświetlaczy ( Aby moja biblioteka była jak najbardziej przyjazna postanowiłem, że: - umieszczona będzie w niej jedna zmienna określająca ilość zmiennych jaką wymieniamy się z panelem,...
[url=http://8052.com/codelib/files/efdUa... UARTa z buforami cyklicznymi - projekt ze strony 8052.com - sam nie używałem, ale możesz sprawdzić. Kod podobny do tego, który pokazałeś, ale na oko dużo lepiej dopracowany ;) Na początek zacznij od pollingu, bez przerwań, nie uruchamiaj wszystkiego na raz. Poza tym w keilu masz przecież świetny...
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...
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...
Przyklad: ramka ma 50 bajtow, w buforze masz 60 bajtow, poprzez ComPort1.ReadStr(odebrane,Count); odbierasz 60 bajtow ,czyli 50 ramka +10 nastepnej ramki, dlatego pytalem co robisz z odebrane , bo jezeli przetwarzasz pod wzgledem tylko jednej ramki (50 bajtow) , to te 10 idze do smietnika. przy nastepnym odczycie bufora masz wlasnie ramke z ucietymi...
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...
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...
tam mam ustawiony stos (zresztą standardowo).... dzięki chłopaki - czyli muszę niestety zmniejszyć trochę bufor odczytu dla transmisji rs232... pozdrawiam
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,...
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...
Witam, Panowie i Panie pomocy! Od dłuższego czasu próbuję nawiązać komunikację z licznikiem Landis. W celu odczytu jego wskazanych wartości. Mój licznik to: ZMG405CR4.041b.37 S2 P06 Docelowo chciałem zrobić odczyt w SCADZIE poprzez moxę nport (scada posiada obsługę Landis IEC/DLMS),ale nie mogę zmusić licznika do komunikacji. Licznik po prostu milczy....
Witam, Wykonałem sobie prosty program w Codesys w ST do odczytu danych z urządzenia po RS232. Ogólnie rozwiązanie działa choć nie jest optymalne. Chodzi głónie tu o odczyt całej ramki z RS232 a więc ramki która zaczyna się od znaku <STX> a kończy znakiem <ETX>. Poniżej moje rozwiązanie: [syntax=c] ////////////////////////odbieranie danych...
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....
Wywal wszystko od: Ch = Ischarwaiting() do clear serialin w podprogramie "Serial0bytereceived:" ustawiaj sobie jakąś flagę np. Serial0bytereceived: Flaga = 1 Return Następnie w pętli głównej sprawdzaj tą flagę: If flaga = 1 then If Ch = 1 Then U = Inkey() If U = 60 Then Portb.2 = 0 End If If U = 62 Then Portb.2 = 1 End If If U = 64 Then...
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])...
. 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...
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;...
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ę.
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...
Ż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...
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...
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.
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...
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)
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...
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ś...
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...
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...
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.
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....
: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 ...................
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...
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.
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...
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...
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...
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...
Ja Ci parę dni temu wrzuciłem już działający kod, tylko wstawiłem delay(5000) bo odpowiedzi wpisywałem z palca. Faktycznie, tylko że parę dni temu to była dla mnie czarna magia, a teraz zaczynam rozumieć ten kod. Dodano po 11 Witam wszystko działa tak jak chciałem, mam pytanie odnośnie poniższej części kodu: [syntax=c] if(Serial.available()) { buf2[i2]...
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...
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 ! 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...
Wszystko fajnie, ale zapomiałeś o istotnej sprawie, a mianowicie o mikrokontrolerze. Musisz mieć jakiś uC pomiędzy układem emulującym różne interfejsy FT4232 i układami dla termopar MAX6675. Mikrokontroler pozwoli też Ci na sterowanie przekaźnikami poprzez tranzystory, lub inne bufory. Ponadto ten FT4232 wydaje mi się tu zbyt zaawansowany. Sądzę, że...
Prosty skaner kodów kreskowych 2D oraz QR można kupić spokojnie < 1000 zł. Skanery takie posiadają najczęściej interfejs RS232. Kiedyś używałem chyba tego (Zebra, dawniej Motorolla): [url=https://www.zebra.com/pl/pl/product... Skaner posiada RS232 i po odczycie kodu przesyła go w formie znaków ASCII...
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,...
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...
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,...
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...
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...
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...
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...
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...
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...
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...
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?...
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...
... 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;...
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ś...
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,...
mikrokontroler master to nic innego jak terminal z oprogramowaniem napisanym przeze mnie w qb64. Mikrokontrolery podłączone do niego są poprzez port rs232 tj. linia rxd terminala jest dołączona do linii txd atmeg a linia txd terminala jest spieta z linia rxd admeg. Komunikacja pomiedzy nimi odbywa sie w formacie ascii tzn terminal wysyła adres atmegi...
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...
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...
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...
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...
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...
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...
I nie tylko. Prędkość procesora też musisz obniżyć w ustawieniach DOSbox option. Jeśli program się odpala to znaczy że typ i prędkość emulowanego procesora jest prawidłowa. Port RS232 taktowany jest z zegara komputera przez mostek południowy i układ zwany SIO z prędkością zadaną przez program. Prędkość wykonywania kodu programu i baud rate portu to...
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...
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...
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...
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...
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....
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...
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"...
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...
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...
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ź...
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...
2. Chyba ARM. Po RS232 FlachMagikiem (FlachMagic). FlashMagic jest tylko dla LPC2xxx, ale każdy (?) mikrokontroler z rdzeniem ARM ma bootloader i do każdego jest jakiś program. Bootloadery z komunikacją po UART albo USB, są też bardziej kosmiczne opcje (CAN / Ethernet). 3. Bo to to samo ;p Jak napisałem powyżej - wcale nie musi tak być. 4. THUMB to...
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, ,...
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....
rs232 bufor bufor rs232 rs232 bufor pusty
montaż zasilacza antenowego glowica laserowa panele akustyczne
sterownik rolet tester akumulatorów
Niebieski kabel w Peugeot 306 Kombi - funkcje i zastosowania Jak wprowadzić kod dezaktywujący immobilizer w Renault Master 3