我有一个表格,我可以在其中接收数据并将其显示在富文本框中,但我需要的是读取来自串行端口的连续数据并相应地解码。
例如:我正在接收格式为字节的数据,36 0 0 0 1 0 0...., 36
用于指示帧的开始 n 其余是触发事件的数据。
我的代码:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
// get number off bytes in buffer
Bytenumber = serialPort1.BytesToRead;
// read one byte from buffer
ByteToRead = serialPort1.ReadByte();
this.Invoke(new EventHandler(DoUpdate));
}
上面的代码用于接收数据并触发事件。该事件的代码如下:
int w=0;
public void DoUpdate(object sender, System.EventArgs e)
{
byte[] t = new byte[Bytenumber];
for(int g=0; g<Bytenumber;g++)
{
t[g] = Convert.ToByte(ByteToRead);
}
w++;
// richTextBox1.Text += ByteToRead;
if (ByteToRead == 36)
{
for (int r = 0; r <= 73; r++)
{
if (ByteToRead == 0x01)
{
timer1.Start();
w++;
}
}
}
}
在我正在寻找的数据接收事件处理程序中36
(即帧的开始),一旦我得到我正在从缓冲区中寻找 1 的信息。问题是当我得到36
(即帧的开始)时,相同的数据保留在 if 循环中并尝试与 1 进行比较,这在任何情况下都不是真的。我只需要在获得 36 后读取来自缓冲区的下一个字节数据。