private void Comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
{ int n = comm.BytesToRead; int m = comm.BytesToWrite; byte[] buf = new byte[n]; comm.Read(buf, 0, n); builder.Clear(); this.Invoke((EventHandler)(delegate { builder.Append(Encoding.ASCII.GetString(buf)); })); }
流程:1发指令,2接收数据,3做出判断,4下一个指令。。。
当我发这个指令(暂时叫T1)后,DataReceived那里,差不多3s后才收到数据,但间隔3s这段时间内又开始发下一条指令了(指令是连续发的),然后DataReceived又收到新的数据,这导致我在后面的各种判断出错了。
怎么处理这样的情况?
PS: 1 跟硬件工程师确认过,发完T1这个指令,数据的接收确实会延迟.
2 用串口工具发T1这个指令,数据接收也会延迟.
因此数据要做“包”分离。
最简单靠谱就是定长,request response 单工模式
可以详细点么?