gongxiaojiu 2017-06-16 09:46 采纳率: 0%
浏览 1370

c#串口返回数据延迟(硬件引起的)

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这个指令,数据接收也会延迟.

  • 写回答

1条回答 默认 最新

  • 立月尽黄昏 2017-06-16 12:17
    关注

    我不太懂你这个,但是可以借鉴一下mpi里面进程间非阻塞传输数据的思想,接受端要确认接收数据的先后顺序,才会执行。或者使用阻塞发送。希望可以帮到你。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器