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.
Odczyt danych RS232.
-
bogdani
- Administrator
- Posty: 1315
- Rejestracja: 30 lip 2003 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Ruda Śląska
- Kontakt:
Odczyt danych RS232.
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
Przy okazji sprawdź czy na pewno co 500 ms otrzymujesz stałą porcję danych - np. za pomocą przykładów z LV.
bogdani
-
vugie
- Posty: 383
- Rejestracja: 17 lis 2006 00:00
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Warszawa
Re: Odczyt danych RS232.
No to jak to jest?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....
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
Re: Odczyt danych RS232.
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ć.
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ć.
Re: Odczyt danych RS232.
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