首页 新闻 会员 周边

c# 串口通信问题

0
悬赏园豆:50 [已解决问题] 解决于 2013-05-30 10:03

pda 跟上位机 进行 串口通信。
上位机分包发送byte[] 数组, 每个包大概50个字节, 我把2个包发送之间Thread.Sleep(100)。 但是在pda接受的时候 不是一包一包的接受到,不太稳定,有的时候 一下接受到1000多字节,有点时候直接2047字节 缓存区就满了, 有的时候正常,36,45,45 这样 的接受到 。 请问是什么引起的

 

下面是代码:

上位机发送:

foreach (byte[] item in MessageFormat.UpperMonitorRUKuTaskToPDA())
{
ultra.Send(item);  //串口发送数据
Thread.Sleep(100);
}

下位机接受:(c# SerialPort 的_com_DataReceived 事件)

byte[] readBuffer = null;
int n = _com.BytesToRead;
byte[] buf = new byte[n];

kotl的主页 kotl | 初学一级 | 园豆:5
提问于:2013-04-27 14:27
< >
分享
最佳答案
0

读取的方式视数据的情况而定。

一、读取之初增加一定的延迟。本身DataReceived 触发是可以通过参数设置的,接收缓冲多少字节数据时,触发事件,默认情况是1。

二、为数据增加一些数据交换协议,读取方法除了事件触发,还有手动read,比如readto,一直读取直到读取到一个特定的字符〔比如“ over”〕,还有readline读取到换行符号。增加部分交换协议,准确度也应该会提高。

收获园豆:50
邢少 | 专家六级 |园豆:10926 | 2013-04-27 17:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册