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];
读取的方式视数据的情况而定。
一、读取之初增加一定的延迟。本身DataReceived 触发是可以通过参数设置的,接收缓冲多少字节数据时,触发事件,默认情况是1。
二、为数据增加一些数据交换协议,读取方法除了事件触发,还有手动read,比如readto,一直读取直到读取到一个特定的字符〔比如“ over”〕,还有readline读取到换行符号。增加部分交换协议,准确度也应该会提高。