Odczyt danych RS232.

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
RobertZo
Posty: 2
Rejestracja: 30 cze 2010 22:40
Wersja środowiska: LabVIEW 7.1

Odczyt danych RS232.

Post autor: RobertZo »

Witam.
Wysyłam z uC przez rs232 stałą liczbę bajtów, co ok 500ms a mianowicie:
Laaa=12.3 Lbbb=45.6 ..... Lccc=78.9 0A
Następnie dane te są wyodrębniane i wyświetlane natomiast nie mogę sobie poradzić z ich synchronizacją.
Chciałbym po odebraniu całej paczki (wiersza) wyodrębniać dane ale nie zawsze mi się to udaje gdyż często w buforze jest inna liczba danych raz 80 B a raz 220 B itp no chyba że wstrzelę się w timerze w odpowiednią wartość ale to i tak nie jest pewne.
Proszę o sugestie odnośnie zmian na schemacie abym mógł rozwiązać problem.
odczytRS232.JPG
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Odczyt danych RS232.

Post autor: bogdani »

Możesz po odczycie czyścić bufor, ewentualnie, jeśli wiesz ile jest bajtów w paczce (ma stały rozmiar) to możesz od razu dać, ile ma przeczytać danych.
Przy okazji sprawdź czy na pewno co 500 ms otrzymujesz stałą porcję danych - np. za pomocą przykładów z LV.

bogdani
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Re: Odczyt danych RS232.

Post autor: vugie »

RobertZo pisze:Witam.
Wysyłam z uC przez rs232 stałą liczbę bajtów, co ok 500ms....
....nie zawsze mi się to udaje gdyż często w buforze jest inna liczba danych raz 80 B a raz 220 B itp....
No to jak to jest?

Mogę Ci poradzić trzy rzeczy:
- stosuj taki format zapisu przy wysyłaniu, aby jedna paczka zawsze miała tę samą wielkość (czyli stała ilość miejsc przed i po przecinku) i czytaj stałą liczbę bajtów - wersja łatwiejsza, ale mniej elegancka i podatna na błędy
- stosuj jakiś delimiter (np. CR) do rozdzielania paczek i czytaj dane do momentu kiedy pojawi się delimiter sklejając je w jeden łańcuch, który następnie analizujesz. Reszta łańcucha idzie zawsze jako początek do następnej doklejanki. Wersja tylko ciut trudniejsza, ale bardziej odporna na błędy komunikacji. W najgorszym przypadku stracisz jedną paczkę, ale nie stracisz synchronizacji.
- Stosuj Scan From String do analizy danych
RobertZo
Posty: 2
Rejestracja: 30 cze 2010 22:40
Wersja środowiska: LabVIEW 7.1

Re: Odczyt danych RS232.

Post autor: RobertZo »

Dzięki za porady. Skorzystałem z obu, tzn. odbieram paczkę danych licząc bajty a następnie czyszczę bufor i to działa.
Natomiast jeżeli chodzi o detekcję znaku końca to z tym mam problem ponieważ znak ten jest wysyłany CR i LF ale w labview nie mogę go wykryć.
cin3k1
Posty: 4
Rejestracja: 27 sie 2010 11:18
Wersja środowiska: LabVIEW 2009

Re: Odczyt danych RS232.

Post autor: cin3k1 »

WItam, czy mógłby ktoś podesłać diagram z poprawnie wykonanym połączeniem rs 232 tak żeby nie (wychodził z synchronizacji) dla zadanej ilości odczytywanych bajtów
ODPOWIEDZ