0
我有一個表單,我可以接收數據並將其顯示在richtextbox中,但我需要的是讀取連續來自串口的數據並進行相應的解碼。串口數據接收處理
例如:我以字節格式接收數據,其格式爲36 0 0 0 1 0 0...., 36
用於指示幀n的起始位置rest是將通過其觸發事件的數據。
我的代碼:
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.