Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2342118
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:02:21

如果发送比较长的数据,会产生多个 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) |
给主人留下些什么吧!~~