SerialPort 的超时问题
我在调用 SerialPort 类来从串口读数据,有个超时问题让人头疼,就是对方没把数据包发完整就死掉了。
现在有两个办法。
一个是 用 SerialPort 的 read 方法,配合 ReadTimeOut 属性。但这样会导致阻塞,浪费CPU。
另一个办法是用 SerialPort 的 DataReceived 钩子,收到一个字节就调用一次钩子函数,把字节读到专门的数组里。当然了,如果在一定时间内没读够就是超时。这个办法不阻塞。可是,难道我要每次读个字节进来的时候都去读取系统时间、判断是否超时吗?那太累了!
有没有某种定时的事件,启动后过了一定时间就会触发。如果在触发前我已经读够了数据,我就撤销这个事件。
谢谢!