|
|
  |
Разбираюсь с Quectel M10 - уже есть траблы ;(, часто теряет сеть |
|
|
|
Sep 9 2011, 11:20
|

Частый гость
 
Группа: Свой
Сообщений: 188
Регистрация: 21-04-06
Из: Украина, Киев
Пользователь №: 16 335

|
Цитата(V125 @ Sep 9 2011, 13:20)  С внешнего МК надо отправить через USART сообщение < AT+QICSGP=1,"internet.tele2.ru"\r\n > Если использовать команду printf("AT+QICSGP=1,"internet.tele2.ru"\r\n "); то получается косячок с синтаксисом, кавычки внутри кавычек "internet.tele2.ru" Я с USART особо не работал. Как мне отправить сообщение с кавычками? Или просто писать ф-цию отправки сообщения Код char ch = 34; // код кавычек printf("AT+QICSGP=1,%c internet.tele2.ru%c\r\n ",ch,ch); Или может слеш экранирует кавычки: printf("AT+QICSGP=1,\"internet.tele2.ru\"\r\n ");
Сообщение отредактировал CupuyC - Sep 9 2011, 11:22
|
|
|
|
|
Oct 3 2011, 00:37
|
Участник

Группа: Участник
Сообщений: 60
Регистрация: 30-04-09
Пользователь №: 48 496

|
Цитата(V125 @ Oct 2 2011, 13:19)  В местной лавке отсутствует MEGA64L (ну не хочется использовать без L из-за необходимости согласования уровней). Поэтому пока в Протеусе. Правда флеши занято 10К, а ОЗУ почти 4К. Мечтаю перебраться на STM32. Работает нормально, гонит данные на orange gps trace. Иногда что-то виснет и данные перестают передаваться. Грешу на глюки Протеуса. Но это лирика. Вопрос посуществу. Как можно гарантированно контролировать, что сам GSM-модуль не завис. По мигалке Нетлайта кажется ненадежным. И существует ли АТ команда полного ресета модуля? Что имеено Вы подразумеваете по "модуль завис" : не отвечает на команды, выпал из сети или что-то другое. Я бы порекомендовал бы Вам - первично смотреть регистрацию в сети (AT+CREG) в цикле программы через строго определённый промежуток. а перезагружать командой AT+CFUN. Пожалуйста, уточните синтаксис команд в даташите по модулю.
|
|
|
|
|
Oct 3 2011, 06:42
|

Частый гость
 
Группа: Свой
Сообщений: 188
Регистрация: 21-04-06
Из: Украина, Киев
Пользователь №: 16 335

|
Цитата(V125 @ Oct 2 2011, 13:19)  Вопрос посуществу. Как можно гарантированно контролировать, что сам GSM-модуль не завис. По мигалке Нетлайта кажется ненадежным. И существует ли АТ команда полного ресета модуля? Работу модуля можно видеть во всех деталях используя ПО Catcher подключенное к модулю через отладочный порт.
|
|
|
|
|
Oct 3 2011, 14:57
|
Частый гость
 
Группа: Участник
Сообщений: 151
Регистрация: 24-06-11
Пользователь №: 65 866

|
Цитата(novus2004 @ Oct 3 2011, 04:37)  Что имеено Вы подразумеваете по "модуль завис" : не отвечает на команды, выпал из сети или что-то другое. Под "модуль завис" я имел ввиду всевозможные глюки или любое неадекватное поведение во время штатной работы. Просто чтобы застраховаться на будущее. Внеший контроллер бы это усек и перезагрузил бы модуль. Помнится кто-то где-то контролировал меандр. А что за меандр такой и откуда берется уже не помню. Вот проверять регистрацию в сети- это отличная идея (недоумился до элементарного). Я просто контролирую соединение с сервером. Если во время сна - время от времени пингую сервер и проверяю #AP#, иначе проверяю #ASD#1.
|
|
|
|
|
Oct 3 2011, 19:26
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Если нужна высокая гарантия поддержания работоспособности, то сделайте так: после каждой отправки данных на ваш сервер отправляйте ДНС-запрос в UDP-порт 53 на IP 8.8.8.8 с доменом, google.com, например. Посмотреть дейтаграмму можно снифером с компа. Гугл-днс ответит, и если все ОК, вы получите ответ с порта 53. Это будет вам аналогом пинга (последний, к сожалению, не реализован ни в оцпу, ни тем более в АТ). Введите счетчик, при отсылке запроса инкрементируйте, при получении - декрементируйте. Если значение превысит заданное, можете перезапустить модуль (причем не АТ-командами и т.п., и даже не POWERKEY, а жестко по питанию - сделайте отвод от МК к управляемому стабилизатору, а МК питайте отдельно). И не забудьте watchdog в МК активировать, обнуляя в main.
ПС: меандр - у меня в трекере (см. пост в этой ветке). Но он предупреждает зависание оцпу. Кроме этого, я контролирую обмен, как описал выше (допустимое к-во потерь задается пользователем). И еще запускаю таймер при поднятии жпрс и ресетю модуль при таймауте (задается пользователем). Все это дает гарантию работы трекера в различных ситуациях.
|
|
|
|
|
Oct 4 2011, 14:31
|
Частый гость
 
Группа: Участник
Сообщений: 151
Регистрация: 24-06-11
Пользователь №: 65 866

|
Цитата(GeGeL @ Oct 3 2011, 23:26)  И еще запускаю таймер при поднятии жпрс и ресетю модуль при таймауте (задается пользователем). Все это дает гарантию работы трекера в различных ситуациях. Если постоянно ресетить модуль, не очень -то экономично выходит. За GPRS соединение в ТЕЛЕ2 снимают около 40копеек. Не думаю, что другие операторы стесняются это делать. Если тока безлимит... Насчет пинга Гугла - или не врубился или Вы пропустили один мой пост. Для чего мне его пинговать, мне ведь отвечает orange gps trace. Вот если он перестал отвечать, тогда для проверки пингануть Гугл, (а заодно Рамблер с Яндексом  ) и сделать вывод о необходимости ресета.
Сообщение отредактировал V125 - Oct 4 2011, 14:38
|
|
|
|
|
Oct 5 2011, 07:46
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Немного не так вы поняли: в начале процедуры конекта к жпрс запускаю таймер скажем на 3 минуты. Далее выполняю конект: проверка регистрации (если нет, то ждем), собственно конект (ждем), получение айпи сервера по домену (если необходимо, ждем) создание сокета, пинг днс того же гугла(ждем ответа). Если удачно пинг (получен ответ), то таймер останавливаем. Т.о. если что-то не так при конекте и не самоустранилось в рабочем цикле за 3 минуты, то идем на перезагруз. Это внештатная ситуация, и, по идее. возникать вобще не должна. Но предвидеть надо.
А что касается второй части, то именно так я и имел ввиду: посылаем пакет на оранж, увеличиваем счетчик. получаем ответ, сбрасываем счетчик.
Если счетчик больше, скажем, 3, то пингуем гугл. При получении ответа на пинг тоже сбрасываем счетчик.
Если счетчик достиг, скажем, 6, то деактивируем жпрс и запускаем ее снова, как описано выше (с таймером). Далее, если в течение 3 мин жпрс не удается поднять, тогда уже ресетим модуль (по таймеру).
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|