GSM调制解调器无响应30秒(短信应用)

时间:2011-12-15 14:05:20

标签: c# winforms serial-port gsm

我使用此库开发了一个短信应用程序(使用GSM调制解调器发送/接收短信) - http://www.scampers.org/steve/sms/libraries.htm

我有一个定时器,每隔3秒检查收到的消息。 问题是每隔几分钟我就会收到这个错误:

***
at GsmComm.GsmCommunication.GsmPhone.GsmComm.GsmCommunication.IProtocol.ReceiveAnything(String pattern)
at GsmComm.GsmCommunication.GsmPhone.GsmComm.GsmCommunication.IProtocol.ReceiveMultiple()
at GsmComm.GsmCommunication.GsmPhone.GsmComm.GsmCommunication.IProtocol.ExecAndReceiveMultiple(String command)
at GsmComm.GsmCommunication.GsmPhone.ListMessages(PhoneMessageStatus status)
at GsmComm.GsmCommunication.GsmCommMain.ReadMessages(PhoneMessageStatus status, String storage)
at SMS.BL.TimerCalls_rec.recProcessTimerEvent(Object sender, EventArgs e) in D:\Csharp\SMS GSM\SMS\BL\TimerCalls_rec.cs:line 57++++++++No data received from phone after waiting for 30000 ms.

这是该代码的一部分:

try
{
    // Read all SMS messages from the storage
    if (CommSetting.comm.IsConnected())
    {
        DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Phone);

        foreach (DecodedShortMessage message in messages)
        {
            ReadMessage(message.Data);

            //delete message
            indexP = message.Index;
            CommSetting.comm.DeleteMessage(indexP, PhoneStorageType.Phone);
        }
    }
}
catch (Exception err)
{
    RIWL.log(err.StackTrace + "++++++++" + err.Message, "Error: ");
}

这是发生错误的行:

DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Phone);

任何想法为什么偶尔调制解调器没有响应? 发送/接收消息是单独完成的。 发送短信时 - 暂停阅读,反之亦然。

我可以做其他事情来检查串口是否正忙?

编辑: 如果有任何帮助,在发生错误时,dllhost.exe - COM Surrogate会在进程中出现。

1 个答案:

答案 0 :(得分:1)

调制解调器正在响应它是Scampers先生软件中的一个错误。我们之前使用GSMComm软件发送短信,但由于这个原因,我们编写了自己的gsm实现。哪个我不能分享我很抱歉。我们已移植pygsm,因此我们没有超时。