首页 新闻 会员 周边 捐助

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

0
[已解决问题] 解决于 2017-07-05 11:16

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

addsds的主页 addsds | 菜鸟二级 | 园豆:226
提问于:2017-06-16 16:53
< >
分享
最佳答案
0

因此数据要做“包”分离。

最简单靠谱就是定长,request response 单工模式

奖励园豆:5
花飘水流兮 | 专家六级 |园豆:13617 | 2017-06-17 00:24

可以详细点么?

addsds | 园豆:226 (菜鸟二级) | 2017-06-17 13:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册