Kla*_*lay 4 wpf serial-port .net-3.5
我从MSDN文档中了解到事件DataReceived不一定每个字节触发一次.
但有谁知道导致事件发生的机制到底是什么?
在事件触发之前,每个字节的接收是否重新启动一个必须达到的定时器,比如字节之间的10 ms?
我问,因为我正在尝试编写一个应用程序来读取来自串行端口的XML数据.
因为我的笔记本电脑没有串口,我使用的是虚拟串口仿真器.(我知道,我知道 - 我对ATM无能为力).
当我通过模拟端口将数据传递到我的应用程序时,事件会为每个XML记录触发一次(大约1500字节).完善.但是当另一个办公室的同事尝试使用实际电缆连接的两台计算机时,DataReceived事件会在每10个字节的XML之后重复触发,这会完全抛弃应用程序.
DataReceived可以在一个或多个字节准备好读取的任何时候触发.它何时被触发取决于操作系统和驱动程序,并且在接收的数据和在.NET中触发的事件之间也会有一个小的延迟.
您不应该依赖DataReceived事件的时间来控制流.
相反,解析基础协议,如果您还没有收到完整的消息,请等待更多.如果您收到多条消息,请确保保留左侧消息以解析第一条消息,因为它们将是下一条消息的开头.