Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема надежного приема SMS
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
AlexandrY
Имеем ситуацию когда объект непрерывно посылает и принимает SMS.

С посылкой вроде все нормально, но одновременный прием оказался проблемой.
В стандарте на AT команды не разрулены проблемы полнодуплексной работы модуля.

Например мы начинаем посылкой AT+CMGR=1 и думаем, что начали транзакцию и модем не пошлет в ответ некие "unsolicited result codes", а ответит как положено содержимым ячейки памяти с индексом 1.
А модем на самом деле шлет все что ему вздумается, и таким образом нужно парсить практически любую строку от модема вне зависимости какую процедуру мы уже начали с ним проводить.
Это очень усложняет написание отдельных процедур выполнения отдельных действий связанных с цепочкой обменов.
И еще остается вопрос что будет если мы и модуль одновременно начали что-то передавать.
Остановится ли модем и повторит передачу, или так и продолжит работать в дуплексе.
Вообщем если напрявляем SMS прямо в терминал без сохранения в памяти, то можем потерять строки.
Если же выбрать режим сохранения в памяти, то через некоторое количество процедур выборки и стирания ячеек при непрерывном приеме, память сильно фрагментируется и мы теряем правильную очередность считываемых SMS.
Кто как выкручивается?
aaarrr
Цитата(AlexandrY @ Sep 7 2007, 23:45) *
А модем на самом деле шлет все что ему вздумается, и таким образом нужно парсить практически любую строку от модема вне зависимости какую процедуру мы уже начали с ним проводить.

Да, от этого никуда не деться - приходится быть готовым принять от модема любой ответ. Но не могу сказать, что это так уж усложняет работу - все решается независимым парсером на приеме.

Цитата(AlexandrY @ Sep 7 2007, 23:45) *
Вообщем если напрявляем SMS прямо в терминал без сохранения в памяти, то можем потерять строки.
Если же выбрать режим сохранения в памяти, то через некоторое количество процедур выборки и стирания ячеек при непрерывном приеме, память сильно фрагментируется и мы теряем правильную очередность считываемых SMS.
Кто как выкручивается?

Можно попробовать сочитать эти два метода: выбрать режим сохранения SMS в памяти с информированием терминала, удалять сообщения сразу после чтения и переодически проверять память на наличие пропущенных. Но вот с очередностью будут проблемы.
afad
Цитата
Если же выбрать режим сохранения в памяти, то через некоторое количество процедур выборки и стирания ячеек при непрерывном приеме, память сильно фрагментируется и мы теряем правильную очередность считываемых SMS.
Кто как выкручивается?
Да, есть такая проблемка. Если проверять все ячейки памяти с первой до последней по порядку и после считывания удалять прочитанную SMS, то порядок обработки SMS может не совпадать с порядком прихода SMS. Не стал заморачиваться, мне нужно было просто ответить на все SMS, а в каком порядке не важно. Может смотреть на дату отправки SMS (эта информация содержится в пакете)?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.