首页 新闻 会员 周边

c#DataReceived接收数据的问题

0
[已解决问题] 解决于 2017-07-24 09:08

 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,怎么解决才好?

addsds的主页 addsds | 菜鸟二级 | 园豆:226
提问于:2017-07-13 09:44
< >
分享
最佳答案
0

你得判断你接收到的 SerialData 类型。根据类型去处理数据。

奖励园豆:5
Hoze | 初学一级 |园豆:196 | 2017-07-13 10:08

 

详细一点?

addsds | 园豆:226 (菜鸟二级) | 2017-07-13 10:42

@addsds: 加个锁,Invoke可能不是顺序的。

Hoze | 园豆:196 (初学一级) | 2017-07-13 11:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册