реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема надежного приема SMS
AlexandrY
сообщение Sep 7 2007, 19:45
Сообщение #1


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Имеем ситуацию когда объект непрерывно посылает и принимает SMS.

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

Например мы начинаем посылкой AT+CMGR=1 и думаем, что начали транзакцию и модем не пошлет в ответ некие "unsolicited result codes", а ответит как положено содержимым ячейки памяти с индексом 1.
А модем на самом деле шлет все что ему вздумается, и таким образом нужно парсить практически любую строку от модема вне зависимости какую процедуру мы уже начали с ним проводить.
Это очень усложняет написание отдельных процедур выполнения отдельных действий связанных с цепочкой обменов.
И еще остается вопрос что будет если мы и модуль одновременно начали что-то передавать.
Остановится ли модем и повторит передачу, или так и продолжит работать в дуплексе.
Вообщем если напрявляем SMS прямо в терминал без сохранения в памяти, то можем потерять строки.
Если же выбрать режим сохранения в памяти, то через некоторое количество процедур выборки и стирания ячеек при непрерывном приеме, память сильно фрагментируется и мы теряем правильную очередность считываемых SMS.
Кто как выкручивается?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 7 2007, 21:53
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AlexandrY @ Sep 7 2007, 23:45) *
А модем на самом деле шлет все что ему вздумается, и таким образом нужно парсить практически любую строку от модема вне зависимости какую процедуру мы уже начали с ним проводить.

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

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

Можно попробовать сочитать эти два метода: выбрать режим сохранения SMS в памяти с информированием терминала, удалять сообщения сразу после чтения и переодически проверять память на наличие пропущенных. Но вот с очередностью будут проблемы.
Go to the top of the page
 
+Quote Post
afad
сообщение Sep 11 2007, 10:44
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 26-08-04
Пользователь №: 545



Цитата
Если же выбрать режим сохранения в памяти, то через некоторое количество процедур выборки и стирания ячеек при непрерывном приеме, память сильно фрагментируется и мы теряем правильную очередность считываемых SMS.
Кто как выкручивается?
Да, есть такая проблемка. Если проверять все ячейки памяти с первой до последней по порядку и после считывания удалять прочитанную SMS, то порядок обработки SMS может не совпадать с порядком прихода SMS. Не стал заморачиваться, мне нужно было просто ответить на все SMS, а в каком порядке не важно. Может смотреть на дату отправки SMS (эта информация содержится в пакете)?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 18:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016