我有一个小程序,可以通过SerialPort发送短信。它连续工作7-8天,每天发送数百条信息。但有时,它需要发送信息,只有硬件复位才能解决问题。
当调制解调器正在等待消息时(显示"> "字符串),而我发送了消息,就会出现这个问题。当调制解调器接收到CTRL+Z (ASCII#26)字符时,它应该返回一个"OK"。但是我从不重复这个响应,从那时起,每次写尝试都以一个System.TimeoutException: The write timed out结束。异常。
我可以捕捉到异常,但是我不能做任何事情来解决这个问题(除了硬件重置)。从第一次超时异常开始,串口就不能工作--甚至对于超级终端也不行。我有机会尝试了两种不同的调制解调器,但它们都产生了相同的模拟。(不同的调制解调器,但同一台计算机)我没有办法在像环境这样的生产中,在不同的机器上测试10天。
我使用了一个串行监控软件,它还显示,串行端口(或调制解调器)发送回写超时错误。当我初始化我的串口时,我将WriteTimeout属性设置为100 (ms)。根据调制解调器的制造商,我必须使用硬件握手。
我只发送简单的短信(没有PDU,不超过160个字符)。
我已经找到了this线程,谈到了写超时和硬件握手。我可以提高写超时值,但是我想知道为什么这个问题只是偶然发生的。我想知道这是否是我的问题.
我使用的是Windows4.0,程序运行在Windows200864位服务器上。
有什么想法吗?
根据丹尼斯的提示更新,我们找到了一个解决方案。看门狗部分是我自己的软件,检测超时异常。当发生这种情况时,程序将向专用硬件发送命令,以切换调制解调器的功率。起初,这种专门的硬件应该是中继卡,但我们发现了一种特殊的扩展线,可以通过RS-232或USB或以太网控制。(打开或关闭插头。)
发布于 2012-09-27 08:25:51
对于经常使用GSM调制解调器的人来说,这是一个众所周知的问题.通常,您可以在软件级别进行记录,而硬件重置是唯一有效的方法。
如果你查看任何通过GSM收发器工作的自动取款机,你会发现那里有一个小型的看门狗设备,它是专为单一设备而设的,用来进行硬件复位(它比打开的电源关了电源)。
https://stackoverflow.com/questions/12616635
复制相似问题