witam
Właśnie staram się obsłużyć zdarzenie odbioru danych z comportu.
Wcześniej dane wysyłane i odbierane były stringami i nie było problemu, a teraz musze wysyłać i odbierać Bajty i nie za bardzo wiem jak to zrobić :(
opcja odebrania stringa była prosta:
private void RS232_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxCom = RS232.ReadLine();
}
Ponieważ urządzenie które składam odbiera dane i chce je wysłać (i są to czasem tez ciągi znaków ASCI) to jednak podczas odbioru danych w/w sposobem, program się wysypuje :-(
Pewny jestem, ze winą jest typ danych, które wysylam.
Dlatego chce odbierać dane pojedynczymi bajtami i zapisywać je w tablicy, którą wcześniej zdefiniowałem
Byte[] BuforTx = new Byte[512];
Byte[] BuforRx = new Byte[512];
Byte[] SendCom = new Byte[16];
Probowalem to zrobić tak, ale cos to nie działa :-(
private void RS232_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
IloscBajtow = RS232.BytesToRead;
RS232.Read(BuforRx,0,IloscBajtow);
}
Problem chyba polega na tym, ze choć dostaje na RE kilkanaście bajtów to nie koniecznie one mogą być odczytane w jednym zdarzeniu.
Wynikiem tego jest nadpisanie pierwszych bajtów gdyż za każdym razem dane z comportu zapisywane są od offsetu 0.
Najlepiej by było odczytywać bajty i zamieniać ich ciąg na stringa... ale w sumie nie zawsze to się sprawdzi bo dane to nie tylko ciągi znaków ASCII)
Może ktoś ma jakiś pomysł ?
dodam, ze muszę odebrany ciąg sprawdzić i z identyfikować i tez nie za bardzo wiem jak to zrobić z tablicy :-( porównywać jedną tablice z innymi tablicami ?? Taki mi się pomysł teraz nasunął :-)