Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по sim900r64
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
vassabi
Столкнулся с такой ситуацией, "хвосты" эха некоторых команд "приезжают" вместе с ответом, например:
AT+CIICR, у меня парсится эхо, алгоритм ждет его 200нс, если эхо валидное - начинаем ждать ответа, который, в данном случае, может приехать и через минуту. Если эха нет по таймауту - считаем модуль зависшим и уходим не алгоритмы перегруза.
ISR ловит конец строки '\n', после этого строка считается принятой и доступной для парсера.
Так вот, по идее эхо и ответ должны выглядеть вот так (хвосты синие):
____________эхо_____________------------------------____ОК___
41 54 2B 43 49 49 43 52 0D 0D 0A ожидание ответа 4F 4B 0D 0A
А в реальности приезжает вот так (кусок хвоста эха красный):
____________эхо________ ---------------------- ______ОК______
41 54 2B 43 49 49 43 52 0D ожидание ответа 0D 0A 4F 4B 0D 0A
Т.е. получается если отлавливать конец строки по '\n', то строка не будет считаться принятой до получения ответа, который прийдет очень не скоро.
Понятно, что можно ловить конец строки и по '\r' (собственно сейчас так и выкрутился), но кроме того, что придется "вЫчитать" остаток хвоста, это еще и через ж..., имхо!

Это же "явление" замечено и на AT+CPOWD, скорее всего есть еще где-то...
И кстати на sim900d было тоже самое!

Хотелось бы понять, знает ли об этом SIMOM и какие у него планы на этот счет? Или это только мне так повезло и у остальных все нормально? sm.gif

з.ы. Пока диагностировал перелопатил весь алгоритм работы... два раза, жаль времени sad.gif
jack_avenger
Как по мне, так 200нс как-то мало даже для 115200. Время передачи одного бита на такой скорости 8680 нс. Но думаю это просто опечатка.
А теперь по сути: если мне не изменяет память, то в конце команды по стандарту должно быть просто <CR>, а не <CR><LF>
vassabi
Цитата(jack_avenger)
Но думаю это просто опечатка.
Ага, очепятка, спасибо. Имелось в виду 200мс
Цитата(jack_avenger)
...по стандарту должно быть просто <CR>, а не <CR><LF>
А по какому стандарту? Я в доках simcom`а не нашел...
Ну и даже если по стандарту, то все равно, почему "хвосты" разных команд отличаются?
jack_avenger
Цитата(vassabi @ May 31 2013, 19:59) *
А по какому стандарту? Я в доках simcom`а не нашел...

По 3GPP TS 27.007, раздел 4.1.
Обратите внимание на "command line termination character"
Цитата(vassabi @ May 31 2013, 19:59) *
Ну и даже если по стандарту, то все равно, почему "хвосты" разных команд отличаются?

Потому что Вы отступаете от стандарта. После передачи команды (которая должна заканчиваться символом <CR>) надо ждать рекции, а не продолжать передачу.
vassabi
Цитата('jack_avenger')
По 3GPP TS 27.007, раздел 4.1.
Ага, теперь понятно, малоопытность сказывается sm.gif. Документик прояснил ситуацию, спасибо! Вопрос снимаю.
Цитата(jack_avenger)
... После передачи команды (которая должна заканчиваться символом <CR>) надо ждать рекции, а не продолжать передачу.
Ну я в общем так и делаю, просто конец строки ловлю не так как нужно sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.