Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Требуется помощь в правильном понимании работы с модемом
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
TamTam
Имеется модем у которого есть AT команды, как правильно организовать прием и обработку данных,

Перевое представление:
загоняем все нужные нам команды в массив и по приходу начинаем смотреть естли такая команда у нас в массиве, если есть то будем что то делать .
Krys
Какой модем то?
Подцепи этот модем к ком-порту компа, запусти терминалку, да попробуй с клавы эти команды отдавать-принимать. Вот и поймёшь логику действий.
kolobok0
Цитата(TamTam @ Jun 16 2006, 16:02) *
Имеется модем у которого есть AT команды, как правильно организовать прием и обработку данных,

Перевое представление:
загоняем все нужные нам команды в массив и по приходу начинаем смотреть естли такая команда у нас в массиве, если есть то будем что то делать .



а если нет ?
Отбрасываете и всё ?
Сразу скажу, в текстовом режиме - фиг что примите... т.к. команды состоят (в текстовом режиме) из буковок...Да и между командами могут быть тайм ауты... Да и между буковками ээээээ некоторое времечко может пролететь...

удачи Вам
(круглый)
ЗЫ
Если Вы планируете работу на различном железе - то рекомендую сценарий дозвона и коннекта - вынести в отдельный настраиваемый массив данных. Например коннекшен в виде точка-точка будет отличаться от коннекшенна через Sprint или Infotel (к примеру) и т.д. и т.п....
TamTam
Цитата(Krys @ Jun 16 2006, 16:19) *
Какой модем то?
Подцепи этот модем к ком-порту компа, запусти терминалку, да попробуй с клавы эти команды отдавать-принимать. Вот и поймёшь логику действий.


Да любой хоть для диал-ап хоть GSM(GPRS), не вы меня не правильно поняли как правильно опознать что модем ответил к примеру, посылаем ATZ и принимаем ответ после чего следует его обработка.
Код
char ok[4]='ok\n\r';
for( i = msg_length; i >= 0; i--)
if(msg[i]=ok[i])
{
      успешно отправили
  }


а когда мы можем принять не только OK а к примеру ERROR и таких ответов больше чем 1 как найти что пришло ??
_artem_
Все респонзы в модеме делятся на два типа - случайные (unsolicited) и ожидаемые (solicited). СЛучайные это те которые модем может послать в любое время и их количество мало . Ожидаемые это респонзы на команду и их намного больше . При приеме респонза проверять надо на случайные
в таблице и на ожидаемые - в зависимости от команды которая выполняется в модеме. Можно конечно завести все респонзы в таблицу и сравнивать там, но таблица должна быть непростая а чтото вроде хеша или сбалансированного дерева или тому подобное для обеспечения быстрого поиска . Это для случая если скорость обработки респонзов критична для вашей задачи.
vesago
Душевно на мой субъективный взгляд у Александра Елисеева сделано.

http://aly.projektas.lt/Projects/GSMA/
at90
на atmel.com есть не плохая апликуха. про gprs модем.
там в исходниках есть фунции приёма и распознования
vvs157
Цитата(TamTam @ Jun 16 2006, 18:15) *
а когда мы можем принять не только OK а к примеру ERROR и таких ответов больше чем 1 как найти что пришло ??


Переведите модем в режим выдачи ответов не словами, а числами. (обычно ATV0). Для автоматической обработки намного удобнее.
TamTam
Цитата(at90 @ Jun 17 2006, 14:43) *
на atmel.com есть не плохая апликуха. про gprs модем.
там в исходниках есть фунции приёма и распознования


если это 323 апликуха то я её смотрю, а если другая, то подскажите номерок.
cpl
Привожу свой принцип обмена с модемом, (реализовано на асм авр, система авр+жки+GSM/GPRS(wavcom))

1. посылаю команду модему
2. делаю паузу (зависит от времени выполнения команды к перимеру 0.5сек)
3. смотрую что в буфере, есть три варианта
- ответил нето что ожидал
(например самоответ модема(выдал WIND) - очистил буфер, пошел на повтор команды)
- нечего неответил (например повис модем !!! (очень редко но бывает, делаем хар рестарт модема и повтор команд например с самого начала(необязательно)!))
- ответил то что ждал (идем дальше все ок !)-тут еще можно ветвить на тему того что ждали
бывают необходимо обрабатывать несколько возможных ответов
например входа в сеть +CGREG 0,0 0,1 0,2...

система примимает и передает sms-ки и использует встроенный TCP стек модема,
(когда только начинал хотел сделать обработку дерева, передумал да и незачем и так все прекрасно пашет)
BVU
Цитата(TamTam @ Jun 16 2006, 16:02) *
Имеется модем у которого есть AT команды, как правильно организовать прием и обработку данных,

Перевое представление:
загоняем все нужные нам команды в массив и по приходу начинаем смотреть естли такая команда у нас в массиве, если есть то будем что то делать .

Вообще-то для начала, что бы правильно понимать функциональность модема и как с ним работать необходимо сперва почитать соответствующую литературу (хотя бы из серии Фролова...). Модем может функционировать в двух режимах: голосовом (телефония) и цифровом (принятие/передача цифровых данных), режимы и функциональность которых поддерживается по средством AT-команд. Необходимо начинать с 'базового' набора команд являющиеся общими для всех категорий модема, ничего там сложного нет, а в дальнейшем по специфики использования изучить 'дополнительные/расширенные' команды модема для конкретного приложения (к примеру - GSM).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.