发表于:2007-05-06 16:40:00
8楼
问题解决了吗?
如果没有解决,问题出现在你的VB的程序上,你用的COMM控件没有处理好,你用的485通信,在给没有电的终端发查询命令时,应是接到了了刚发出的信息,(不知你用的何种通信电路或设备,也可能接收到数据已不是你刚发出的数据了).所以,在接收的部分已存在着某种状态.
可以如下试一次:
1.
每次查询一台新设备时,都读空接收缓冲区
如果不行则试验下:
2.将接收出错时引起的接收事件都作处理,且处理的结果都一样,清接收缓冲并读空接收缓冲共
如果不行:
3.修改引起接收事件的hold字节数,确定接收缓冲区内仅有一个字节时是不是能产生接收事件,如果不能,应将hold的数设为1,也就是说只要接收缓冲区内有一个字节就会引起接收事件,
不用在意,这对接收没有影响,当你用9600的速率连续接收几十个字节的数据时他不会产生几十次接收事件,除非你是不连续的发送的.COMM控制产生接收事件的频率大约是每秒一次,所以不会对你的程序造成什么效率上影响.
如果这些都还不能解决,请回www.gougunsk.com上查个信箱,发个信给李照书,我可以再给你想点别的方法.不过,我认为这样应能解决了.
我最近也不用COMM控件写通讯了,只因闲他反应太慢,但以前写的程序还是很稳定的.