GSM-модем не отвечает 30 секунд (приложение для SMS)

Я разработал приложение для 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);

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

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

РЕДАКТИРОВАТЬ: Если это поможет, в момент возникновения ошибки dllhost.exe - COM Surrogate вскоре появится в процессах.


person Alex    schedule 15.12.2011    source источник
comment
foreach (короткое сообщение в сообщениях) ... SMSPDULib.SMS sms = new SMSPDULib.SMS (); ... SMSPDULib.SMS.Fetch (смс, справочное сообщение); ... phoneNo = sms.PhoneNumber;   -  person Alex    schedule 10.12.2014


Ответы (1)


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

person albertjan    schedule 16.12.2011
comment
Спасибо за ответ, возможно, вы правы. Похоже, что пока поддерживаются не все устройства. Мой код отлично работает со старым телефоном Sony-Ericsson. Однако, когда я использовал старую версию библиотеки (я думаю, 1.14 или 1.15) с устройством SE, возникала та же проблема, пока я не обновился до более новой библиотеки. Теперь у меня есть GSM-модем Siemens, и я снова получаю эти ошибки (с использованием последней версии библиотеки), и все изменения исходного кода, которые я делаю, похоже, не помогают. Единственное, что сбивает с толку, это то, что этот пример работает нормально codeproject.com/KB/cs/ SMS.aspx, и код очень и очень похож на мой! - person Alex; 16.12.2011
comment
Если никто другой не даст мне быстрого обходного пути / подсказки / решения моей проблемы, мне придется начать с нуля :( - и я отмечу это как принятый ответ ... - person Alex; 16.12.2011
comment
Вероятно, это связано с несовместимостью с модемом Сименс. Мы их тоже используем. Странно, что код-проект действительно работает. Мы также видели очень нестабильные результаты: в одном инструмент работал большую часть времени, а в двух других он не работал вообще. Возможно, это потому, что проект codeproject использует .net версии 1. Возможно, вы могли бы попробовать использовать pygsm в .net с помощью ironpython. - person albertjan; 16.12.2011