首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

MSComm的SThreshold 属性解决办法

2014-04-20 
MSComm的SThreshold 属性MSDN中这样说,SThreshold 属性:在 MSComm 控件设置 CommEvent 属性为 comEvSend

MSComm的SThreshold 属性
MSDN中这样说,
SThreshold 属性:在 MSComm 控件设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。

语法
object.SThreshold [ = value ]

若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。
如果在传输缓冲区中的字符数小于 value,CommEvent 属性设置为 comEvSend,并产生 OnComm 事件。comEvSend 事件仅当字符数与 Sthreshold 交叉时被激活一次。例如,如果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生。如果在输出队列中从没有比 Sthreshold 多的字符,comEvSend 事件将绝不会发生。

我老半天没理解,这里的“传输缓冲区中的字符数”,是和我的通信协议有关,是不是?比如我一次要连续发6个数(比如是A,B,C,D,E,F),如果设置object.SThreshold =6,当ABCDEF全进传输缓冲区了,CommEvent 属性就成 comEvSend,OnComm事件发生,是这样的吗?
这段话怎么解释? SThreshold 属性,到底应该怎么用,希望高手指点一下的啊。
[解决办法]
就是下止点。当缓冲区的内容少于SThreshold值时,提醒你继续发送数据。
[解决办法]
假定 SThreshold = 6,你用 Output 命令发送 100 个字符。
可以将发送过程想象为很慢的,逐个字符发送,缓冲区长度就会按照 100,99,98... 的方式递减。
发送前 94 个字符(缓冲区长度从 100 递减到 6)没有 OnComm 事件;
发送第 95 个字符(缓冲区长度从 6 递减到 5)产生 OnComm 事件;
发送最后 5 个字符(缓冲区长度从 5 递减到 0)没有 OnComm 事件。

也就是仅在缓冲区长度递减到 SThreshold-1 时产生 OnComm 事件。

热点排行