Я написал приложение на C #, которое запрашивает GSM-модем через последовательный порт дважды в секунду. Запросы выполняются через
AT+CMGL="ALL"
, и модем отвечает списком сообщений или простым ОК, если в хранилище сообщений нет доступных сообщений.
Теперь проблема в том, что если программа работает в течение нескольких часов или около того, после успешного запроса модема более 12000 раз (без входящих сообщений в это время), когда сообщение все же приходит, GSM-модем зависает и в ответ на команду AT + CMGL = "ALL" ответ не приходит.
Я даже пытался убить программу и получить доступ к модему через PuTTYTel через его последовательный порт, у меня такое же поведение. Единственный способ заставить модем работать снова - это физически удалить его из порта USB и снова подключить его. После того, как я сделаю этот «холодный сброс», последующая команда AT + CMGL = «ALL» извлекает вновь прибывшее SMS. 1008 *
Эта проблема потратила две драгоценные недели моей жизни после того, как я сначала подумал, что это была какая-то проблема синхронизации событий. Здесь действительно некуда идти. Кто-нибудь сталкивался с таким странным поведением? Я что-то не так делаю?
С уважением,
Валер