如果发送比较长的数据,会产生多个 OnCommNotify 事件,每个 OnCommNotify 收到一部分数据,按先后顺序连接起来才是完整的
如果你希望在没发生间断的连续数据一次性接收,产生一个事件,而不是分几次产生事件,需要设定一个时间间隔,
两个字节之间小于这个时间间隔的在一起接收。
YbCommDevice1->PackageInterval = 50; //间隔为 50 毫秒, 根据实际情况设置
YbCommDevice1->PackageSize = 4096; //产生一次事件最多能够接收的字节数, 根据实际情况设置
YbCommDevice1->PackageType = cptFrameTimeout; //用判断时间间隔的方法接收数据
YbCommDevice1->UsePackage = true; //启动数据包
然后产生事件为 OnPackage 每接收一个完整的数据包产生一次,OnCommNotify 仍然是收到数据就产生,没有变化
在 OnPackage 事件里面用 ReadPackage 方法代替 Read 可以一次读到完整的数据。
OnPackage 事件/ReadPackage 方法:是本控件特有的功能,在保持原来控件的兼容性方面加入了完整数据的判断。
如果启动了 OnPackage 事件,发送数据也要用 WritePackage 代替。
--------------------next---------------------
阅读(1229) | 评论(0) | 转发(0) |