private void Comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n = comm.BytesToRead;
byte[] buf = new byte[n];
comm.Read(buf, 0, n);
this.Invoke((EventHandler)(delegate
{
builder.Append(Encoding.ASCII.GetString(buf));
TextBox1.AppendText(builder.ToString());
}));
}
我连续发几个指令:a,b,c,d,e
理论上DataReceived接收到的数据顺序为:1,2,3,4,5
但是现在DataReceived接收到的数据顺序是:1,2,5,4,3(或者其他)
如果我在发指令后sleep一下,能正常收到1,2,3,4,5
但是现在不考虑用sleep,怎么解决才好?
你得判断你接收到的 SerialData 类型。根据类型去处理数据。
详细一点?
@addsds: 加个锁,Invoke可能不是顺序的。