说说 SerialPort 的缺点
SerialPort是串口通讯必不可少的类,但我发现它收数据的速度不稳定。
我在 DataReceived 方法里加入计时语句:刚进入该方法时读一次时间,读完缓冲区后再读一次时间,计算时间差,就知道它花了多久来读缓冲区。
在数据包的长度和波特率不变的情况下,我发现,通常1到2毫秒能读完,有时4到6毫秒,最夸张的一次花了18毫秒。每次进入DataReceived方法时,都知道缓冲区里有72个字节要读。把它们一个个读出来,花的时间可能是1毫秒,也可能要18毫秒。
因为 DataReceived只是从缓冲区里读出来,所以花的时间应该和硬件通信已经没有关系了。时间为什么变化这么大?
我唯一能想到的就是DataReceived方法在读到一半的时候,被什么东西打断了。但应该不是进程切换,因为进程切换的时间不太会这么短。