关于Mscomm通讯假死
在VB中使用timer控件循环通讯(用于测试),发现程序假死(有时上千次或更久也不出现一次,有时几十次就出现),CPU使用率1%左右。为何会如此,是硬件问题还是软件问题?寻求解决办法
[解决办法]
我以前也遇到过,程序死在output上,就问题而言,不是代码的问题,问题出在硬件上,我换了内存条就OK了。
[解决办法]
就我的问题而言,是内存的原因。
就不知道你的问题是否是这个原因。我只是把我的经验给你分享一下。你可仔细排除一下代码是否有问题。若确定代码无问题,那么可以怀疑硬件问题。
[解决办法]
这说明你的死机不是死在循环上,是死在某一条语句上(实际上是死在某一条机器指令上)
[解决办法]
首先,我是就我的问题而言,你这个是不是我不好说
如果你能单步运行捕获到死机的地方你就可以发现问题所在了。
我的问题就是语句执行到OutPut就死机了,没有反应,CPU利用率也很低。
[解决办法]
为什么我还真不知道,反正就是死在哪儿了。进程的CPU占用率是0%
我的意思你还不明白?说白了这是更深层次的问题了。牵涉到硬件的操作了,VB是无法分析的。毕竟我们是不知道一个output语句内部到底执行了什么机器语言。
[解决办法]
我觉得你的问题不在循环中,因为如果是循环体内死机,那么CPU利用率会超高。
我建议你在每条语句前面加一个Log,把操作记录入数据库或文本文件,当出问题时,结束进程,然后打开分析它,看看出在哪一条语句上。
[解决办法]
查看mscomm发送缓冲区大小,设大点然后测试。timer循环发送要有一定的间隔,间隔值不可太小。
通讯超时时,试着关闭mscomm打开的串口口,然后重新打开。
[解决办法]
把整个循环体列出来
[解决办法]
把com口的2、3脚短接,然后自发自收,看看有没有假死现象,或换台机子测试一下,以确保硬件没有问题。
[解决办法]
发哥很帅……
[解决办法]
建议定时主动关闭COM口,然后再打开来避免COM口假死.
[解决办法]