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 单工模式
可以详细点么?