Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подскажите алгоритм
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
DeVOuR
Привет всем.
Подскажите пожалуйста алгоритм разделения посылок от модема к МК (будь-то ответ на команду, включение, либо какие либо сообщения о пониженном питании).
В принципе, распознать, что за ответ - проблем нету. Проблемма в том, как определить конец посылки от модема.
Конец строки - CR LF. Но иногда модем возвращает пару строк подряд. т.е. определив конец строки и пойдя ее обрабатывать в это время могет заломится следующая строка и поламать мне преридущую.
Вариант нескольких буферов приема не катит.

Единственное, до чего дошел - по приему CR LF врубать таймер на n мсек. Если в течении этого времени что-то придет - то продолжить писать в буфер. Если нет - то обработать буфер, разделенный все теми же CR LF на строки.
Возникает вопрос, каково должно быть это вот n сек, не все же команды обрабатываются одинаково по времени.

Ну и за одно, начитался,что модемы эти, бывает, лагают, и иногда их приходится ресетить. Кроме как отсутствия ответа от модема (опять же вопрос, какое время стоит ожидать ответа?) есть ли какие-то еще явные признаки о глюках на уровне МК?

Или стоит раз в несколько часов его принудительно ресетить?

Работа планируется только с смс и гпрс. Пока не будет получет ответ от одной команды - вторая не отправится.


Может, кто поделится опытом?

Спасибо за внимание.
barabek
Цитата(DeVOuR @ Feb 22 2010, 08:40) *
Возникает вопрос, каково должно быть это вот n сек, не все же команды обрабатываются одинаково по времени.

Я у себя делал таким же образом с ожиданием 100 мсек, работает без проблем.
Цитата
Ну и за одно, начитался,что модемы эти, бывает, лагают, и иногда их приходится ресетить. Кроме как отсутствия ответа от модема (опять же вопрос, какое время стоит ожидать ответа?)

Смотря какой запрос. Где-то в документации видел примерные времена выполнения каждой команды (хотя может видел у telit). Это от долей секунды до минут 3-х. Если запрос чисто к модему - можно выставить несколько секунд, а если отправка по GSM, конект - тогда ограничиваться 3 минуты. В общем ищите в документации. А смысла раз в несколько часов ресетить нет. Ведь после ресета он может зависнуть и висеть до следующего ресета. Лучше периодически проверять его.
mempfis_
Цитата(DeVOuR @ Feb 22 2010, 02:40) *
Работа планируется только с смс и гпрс. Пока не будет получет ответ от одной команды - вторая не отправится.


Не знаю как для sim* а для telit-ов в списке ат-команд расписаны таймауты ответов на каждую из команд. Точнее написано так - если команда не связана с работой в сети или с sim-картой то ответ приходит мгновенно. В остальных случаях расписана табличка ат-команд и возможные таймауты ожидания ответа. Так что просмотрите документацию на модем там информация о таймаутах должна присутствовать.
DeVOuR
Спасибо за ответы.

Цитата
Где-то в документации видел примерные времена выполнения каждой команды (хотя может видел у telit).

Цитата
расписана табличка ат-команд и возможные таймауты ожидания ответа.

Я руководствуюсь пдф-иной SIM300_ATC_V2, в ней нет ниодного указания времени. (Если ошибаюсь, то извините, прошу ткнуть носом).

Вот тут почитал, что все экспериментально. Вот наверное тоже буду подбирать экспериментально под каждую команду отдельно.

Опять возник вопрос. Отправив команду и не получив ответа, можно ли как-то попытаться сбросить ее выполнение? Чтобы повторить попытку,к примеру.
barabek
Цитата(DeVOuR @ Feb 22 2010, 18:45) *
... почитал, что все экспериментально. Вот наверное тоже буду подбирать экспериментально под каждую команду отдельно.

найдите описание для telit "AT Commands Reference Guide", там расписаны времена. Конечно, модем другой, но время выполнения будет примерно тем же. Это будет отправной точкой в Ваших экспериментах.
Цитата
Опять возник вопрос. Отправив команду и не получив ответа, можно ли как-то попытаться сбросить ее выполнение? Чтобы повторить попытку,к примеру.

А вот это не советую. Сбросить нельзя, а повторение попытки или другая команда могут Вас запутать. Здесь писали, что ответы могут прийти не в том порядке, в котором отправлялись запросы. Это нужно будет разруливать. Ну и вообще, модем не "глухой", понимает с первого раза. А раз не понял - значит ждет "пинка".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.