Strona 1 z 1
segregacja odebranych danych rs232
: 19 lip 2009 22:44
autor: opaluch
Witam
Czy ktoś mógłby pomóc. Zbudowałem urządzenie odbierające dane z RS232.
W jaki sposób mogę odbierać i dzielić dane z portu. Wysyłam z kontrolera ciągiem dane współczynnikY enter współczynnikX enter współczynnikY...
Potrzebuję wyłuskać osobno dane Y i X które są wysyłane ciągiem.
Myślałem by użyć funkcji "termination char", ale w tym języku jestem początkującym i nie wiem jak.
segregacja odebranych danych rs232
: 20 lip 2009 01:30
autor: coolfon
Na samym początku proponuję zmienić format wysyłanego ciągu danych. Zamiast dzielenia wartości enterami, przed współczynnikX daj 'x', a przed współczynnikY daj 'y'. Bez tego możesz mieć problem, bo nie bardzo będziesz mógł rozpoznać która wartość to X a która Y (nigdy nie wiadomo jak 'wstrzelisz' się z odczytem). No chyba że taka zamiana jest Ci obojętna.
Na rozdzielanie wartości X i Y sposobów jest wiele. Możesz odczytywać z portu RS-232 po jednym bajcie, w momencie gdy pojawi się wartość 'x' kolejne bajty zostaną potraktowane jako współczynnikX itd.
Jeśli możesz sobie pozwolić na utratę np co 5 próbki, to możesz od razu odczytywać więcej bajtów z portu (a ile to już zależy od tego jak 'duże' masz te współczynniki) i w takiej paczce szukać 'x' oraz 'y' - współczynniki znajdujące się za nimi lądują w stosownych tabelach (przykładowo...).
Jak możesz to zapisz przykładowy ciąg wartości odczytywanych z RS-232 do pliku txt i wrzuć go tutaj. Pomyślimy wtedy nad rozdzielaniem.
Re: segregacja odebranych danych rs232
: 20 lip 2009 12:15
autor: ky3orr
jeśli dane nie służą do rysowania wykresu on-line może warto przesyłać je większymi pakietami co jakąś chwilę i na te pakiety założyć np. sumę kontrolną na końcu transmisji w celu dodatkowego zabezpieczenie przed błędami (tyle, że jeśli pakiet jest błędny to dane też).
być może mały bufor powiedzmy na kilkadziesiąt znaków, żeby dało się zrobić retransmisję, w razie błędu porównania sumy kontrolnej, zanim zostanie złożony nowy pakiet danych...