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

:MSCOMM控件发送数据导致死机的有关问题。

2012-11-09 
紧急求助:MSCOMM控件发送数据导致死机的问题。。。。环境:一台计算机向另外一台计算机定时发送串口数据。发送方

紧急求助:MSCOMM控件发送数据导致死机的问题。。。。
环境:
一台计算机向另外一台计算机定时发送串口数据。
发送方是公司自己写的VB程序。
接收方是其他公司的程序。

问题:
运行一段时间,发送方计算机会出现死机现象。重启计算机也不好使。将接收方计算机重启就好使了。

分析:
既然死机需要重启其他计算机才能好使,应该是通讯导致的。两台计算机只有一个串口通讯,而且发送方只是定时发送,并不接受。每1秒钟发送一包数据。不等待数据返回(接收方是否返回不知道,但我们不做读取接受buffer处理)。

采用MSCOMM控件进行串口通讯。
设置:
SThreshold = 0;不产生OnComm事件。

每1秒,执行一次发送:
comm1.output = buffer

串口操作,只有上面一条发送语句。如果死机,应该就是在这条语句上。(由于在现场发生的,现在无法模拟,因此只能推测)。


问题1:
那么,什么情况能够导致comm1.output = buffer这条语句死机呢?

问题2:
接收方重启才能解决问题,接收方串口问题对发送方有什么影响呢?发送缓冲区溢出?发送失败?这些能够导致output = buffer语句死机吗?

问题3:
如果我想重现死机情况,也就是制造发送失败或者发送缓冲区溢出的条件,如何制造?

最后,请各位大侠帮忙分析一下,还有什么可能??

不知道为什么,我只能发20分的帖子了,分数不高,请大家友情帮忙解决一下。。谢谢。。

[解决办法]
不知道你说的死机是程序出现假死还是其他情况?
你可以把代码贴出来,让大家给你看看。
[解决办法]

不清楚你所用的通讯协议,例如,发送方是否等待接收方的确认信号。

很有可能是发送及接收的过程太长,超过了定时器设置时间,因此有多个发送过程被嵌套,不断占用内存。

建议你设置为发送间隔 1 秒,而不是每一秒触发一次发送。实际上,就是在 Timer 事件中入口处代码禁用 Timer,发送完成后再重新使能 Timer,发送过程不计时。

热点排行