GSM модем не отвечает 30сек (приложение SMS) - PullRequest
3 голосов
/ 15 декабря 2011

Я разработал приложение для SMS (отправляю / получаю SMS с помощью модема 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);

Есть идеи, почему время от времени модем не отвечает? Отправка / получение сообщений производится отдельно. При отправке смс - чтение останавливается и наоборот.

Могу ли я сделать что-нибудь еще, чтобы проверить занят ли последовательный порт?

EDIT: Если это поможет, в момент возникновения ошибки dllhost.exe - суррогат COM появится в процессах.

1 Ответ

1 голос
/ 16 декабря 2011

Модем отвечает, что это ошибка в программном обеспечении Mr. Scampers. Ранее мы использовали программное обеспечение GSMComm для отправки смс-сообщений, но по этой причине мы написали собственную реализацию gsm. Что я не могу поделиться, я извиняюсь за это. Мы портировали pygsm и с тех пор у нас не было ни одного таймаута.

...