的documentation for the Serial Port指出:如何确保通过串口两条消息之间的时间段
的DataReceived事件检索不能保证提高为每个字节 接收。使用BytesToRead属性来确定剩余数量的数据在缓冲区中被读取。
我们试图实现的协议按空闲周期分隔消息。由于我们必须依赖收到的每个角色的时间,这个.NET的限制似乎是一个问题。
有谁知道.NET的SerialPort如何决定是否引发事件。是否要避免高波特率的垃圾邮件,以便缓冲它们?
是否有任何担保至少会在XY毫秒内引发至少一个事件?那么最短的时间是什么时候?
如何解决这个问题?
编辑:多一点研究表明,它可以通过设置超时完成。愚蠢的我!
只需使用for循环与睡眠呼叫。检查是否有要读取的字节并跟踪计时以获取消息边界检测。尽管使用一些高精度的睡眠。 – CodingBarfield 2012-03-05 13:11:58