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 ?