|
Telit datacall, Не могу понять как правильно |
|
|
|
May 22 2012, 13:23
|
Группа: Новичок
Сообщений: 8
Регистрация: 22-05-12
Пользователь №: 71 957

|
Пришлось недавно заняться GSM-модулями Telit. В целом довольно понятно, пока не приступил к datacall. В общем, логика такова. На прием звонка стоит автоподъем. По третьему звонку поднимает, коннектится. Пишет CONNECT 9600. Все хорошо. Далее приходит команда, парсер ее отрабатывает, принимается решение что делать. Вот дальше не совсем понял - модуль находится в режиме передачи данных и мне необходимо перевести его в командный режим. Перевожу при помощи +++ Все хорошо, переходит. Потом перед отправкой данных снова перевожу его в режим передачи данных при помощи AT0 Все опять же работает Ну и так далее, перевожу в командный +++ и по кругу
Все замечательно отрабатывает, пока не надо прервать соединение. Вообще у меня есть бесконечный основной цикл, где программа постоянно крутится (ну так было указано в примерах, насколько я их понял) res=MDM.receive(10) ab = res.find('NO CARRIER') if(ab!=-1): StopDataMode()
Если вижу NO CARRIER, то останавливаю выполнение программы, перехожу в командный режим. Только вот этот самый NO CARRIER может прийти и во время выполнения каких-то команд. В результате я его не всегда отлавливаю и все плохо.
Вопросы. Правильно ли вообще постоянно переключаться с одного режима во второй? Что делать для с проблемой отлова NO CARRIER (вообще говоря, любая команда тоже может не отпарситься по той же причине)
Извиняюсь, если вопросы дурацкие, не нашел толкового примера... При соединении по GPRS меня ждет видимо то же самое Спасибо.
|
|
|
|
|
 |
Ответов
|
Jun 4 2012, 15:38
|
Группа: Новичок
Сообщений: 8
Регистрация: 22-05-12
Пользователь №: 71 957

|
Да, я так и понял, что ловить RING и CMTI не выход. mempfis_ и если можно, еще один вопрос назрел (хоть уже далековато от datacall)
Работаю по GPRS (по MDM2).
comm='AT#SKTSET=0,'+port+','+IP+'\r' res = MDM2.send(comm,0) res = MDM2.send('AT#SKTSAV\r',0) res = MDM2.send('AT#SKTOP\r',0)
Чтение ответов пропустил port и IP получаю заранее
Соединение устанавливается, хотя иногда модем уходит в перезагрузку (что-то было про AT&K0 в качестве панацеи, но пока не пробовал) После установки соединения проверяю статус (уже по MDM): MDM.send('AT#SS\r\n',0)
Возвращает ошибку. CME ERROR 4. Ну много чего думал, оказалось, что AT#SS вообще выполняться не хочет никогда. Все время одна и та же ошибка 4. Даже не запускал скрипт, ручками вводил ПИН, включал GPRS, выполнял эти же команды - все то же самое. Как будто команда вообще не поддерживается модемом. Из-за этого не получается ловить статус сокета и соответственно разрыв соединения отследить не могу... Спасибо заранее
|
|
|
|
Сообщений в этой теме
White_rat Telit datacall May 22 2012, 13:23 mempfis_ Если Вам мешают левые сообщения при попробуйте пер... May 23 2012, 07:58 White_rat Так вот и непонятно как это сделать.
Вот фрагмент ... May 24 2012, 08:53 mempfis_ Если Вы хотите принимать datacall в MDM2 то и упра... May 24 2012, 09:19 White_rat Ну вообще говоря, у меня должно и по datacall и по... May 24 2012, 09:56 mempfis_ Для определения наличия входящего вызова можно лов... May 24 2012, 15:54 White_rat mempfis_, спасибо. Теперь все понятно. Проблему я ... May 28 2012, 08:34 mempfis_ Да там вроде буффериируется ответ. Не считали сейч... May 28 2012, 13:15 White_rat mempfis_, спасибо, все получилось. Автоподьем убра... May 30 2012, 13:50 mempfis_ CMUX вообще нужен для организации обмена данными п... May 31 2012, 06:06 White_rat mempfis_, спасибо в очередной раз. Не работают у м... Jun 1 2012, 08:47 mempfis_ Цитата(White_rat @ Jun 1 2012, 11:47) +CM... Jun 1 2012, 09:41 mempfis_ Цитата(White_rat @ Jun 4 2012, 18:38) Раб... Jun 5 2012, 06:46 White_rat mempfis_,большое спасибо за помощь. Все получилось... Jun 8 2012, 07:55 mempfis_ Цитата(White_rat @ Jun 8 2012, 10:55) mem... Jun 8 2012, 12:07  mempfis_ Цитата(mempfis_ @ Jun 8 2012, 15:07) По п... Jun 11 2012, 09:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|