Niepoprawny rozmiar tablicy odebranych danych.

0

Mam mały program. który ma za zadanie wysłać zapytanie do sterownika a odebrane dane zaprezentować na ekranie. Problem polega na tym, że po wysłaniu ramki danych, tablica z odebranymi danymi rożni się od siebie. Chodzi o to, że gdy za pierwszy razem wyślę ramkę to odpowiedz jest prawidłowa i tablica ma odpowiednią wielkość [29]. Problem polega na tym, że kolejne ramki danych mają już inny rozmiar.

public byte[] send_17 = {  0x01, 0x17, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x9B};


private void button1_Click(object sender, EventArgs e)
        {

            port.Open();
            port.Write(send_17, 0, 13); 
            port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            
             
        } 

public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
                 SerialPort sp = (SerialPort)sender;
                 data = sp.ReadExisting();
                 dane = ASCIIEncoding.ASCII.GetBytes(data);
                 port.Close(); 
             

Gdy taką ramkę wpiszę do symulatora MODBUS RTU i wyślę do sterownika to wszystko jest prawidłowo. Za każdym razem odebrana ramka jest taka sama.
Dlaczego tak się dzieje ?

0

Po co za każdym kliknięciem dodajesz ten sam handler do port.DataReceived?

0

yyy.... dodałem jeden handler na początku ale to nic nie zmienia. Gdy łapię w pułapkę to pierwsza ramka jest [29], potem jakieś dziwne [3],[8] itp. potem znów ok po [29]...

0

Może urządzenie odpowiada innym zestawem danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1