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ął :-)