MKdemiurg
Jul 28 2011, 06:28
Цитата
\r\n это такой концевик пакета полностью текстовый пакет получается.

Извините что влез, но хотяб форум чтоли почитали.
замените \r\n на посылку 2х байтов подряд 0x0D 0x0A - и загуглите что это за коды.
MKdemiurg
Форум читал. В курсе 0x0D 0x0A, пробовал уже

пишу
at+qisend
> #L#325567893;123 0x0D 0x0A
жму ctrl+z
send ok
в итоге сервак так и получает #L#325567893;123 0x0D 0x0A те без перехода на сл.строку...
Цитата(rv9c @ Jul 28 2011, 10:19)

MKdemiurg
Форум читал. В курсе 0x0D 0x0A, пробовал уже

пишу
at+qisend
> #L#325567893;123 0x0D 0x0A
жму ctrl+z
send ok
в итоге сервак так и получает #L#325567893;123 0x0D 0x0A те без перехода на сл.строку...
Ваша проблема в том, что вы что в случае \r\n, что 0x0D 0x0A отправляете эти данные в текстовом режиме. Вам необходимо после ващей строки #L#325567893;123 отправить на модуль два байта, значение которых в шеснадцетиричной системе соответствует 0x0D и 0x0A соответственно, ну и потом ctrl+z.
Как это сделать уже зависит от того, через что вы общаетесь с M10 .
CADiLO
Jul 28 2011, 07:41
Совершенно верно - у вас все идет в текстовом виде.
Для того, чтобы добавить <CR>, нужно, удерживая <ALT>, набрать на дополнительной клавиатуре «013»
Для того, чтобы добавить <LF>, нужно, удерживая <ALT>, набрать на дополнительной клавиатуре «010»
Чтобы отправить сообщение, надо нажать CTRL+Z
Для команды AT+CIPSEND ( модуль SIM900 ) этот способ работает при передаче вручную с терминала.
Посмотрите как при этом выглядит посылка и сделайте так же в программе.
kovz
CADiLO
Большое спасибо за подсказки! вечером опробую. В данный момент общаюсь через Putty, разбираюсь с основными командами m10.
Еще вопрос назрел

не пользовались ли вы прозрачным режимом AT+QIMODE=1 , те после установления соединения с сервером все данные отправляемые в UART прямиком отправлялись бы к серверу и наоборот.
Читаю параллельно темы по sim900 и m10 очень похожи команды.
Все заработало

Сделал все как посоветовал CADiLO программа Putty
Получилось следующее
AT
ok
at+qicsgp=1,"internet.usi.ru"
ok
at+qiregapp
ok
at+qiact
ok
AT+QILOCIP
ip адрес
at+qiopen="TCP","77.74.50.78",20332
ok
CONNECT OK
at+qisend
> #L#348528755;123
Chr(013), Chr(010) см.пост выше от CADiLO
SEND OK
#AL#1
.
.
.
ну и так далее
Quectel M12- внешний звонок принимает, но по команде ATD +7xxxxxxxxxx;
отдает +CME ERROR: 27 Подскажите, что за ошибка? Пока и не надобно с него звонить, но грезится, что при возникновении какого либо события модуль казал бы человечьим голосом некие фразы. (Внешний МК+ какая нить память для семплов)
Просто сильно грешу на свой комп- Putty, Terminal, Hyper Terminal, tcomu12 или молчат или выдают какие то обрывки , только SiMoCo корректно работает. Возможно единственный COM порт под завязку.
Ну и еще раз поднимем вопрос от rv9c " не пользовались ли вы прозрачным режимом AT+QIMODE=1 , те после установления соединения с сервером все данные отправляемые в UART прямиком отправлялись бы к серверу и наоборот" Если я правильно понимаю, соединяемся с gps-trace.com, льем в UART М12 данные NMEA с GPS модуля и вуаля- получаем готовый трекер. Или все не так просто?
Aleksandr_q
Aug 9 2011, 12:50
Цитата(V125 @ Aug 9 2011, 13:23)

Quectel M12- внешний звонок принимает, но по команде ATD +7xxxxxxxxxx;
отдает +CME ERROR: 27 Подскажите, что за ошибка?
Так вы пробел уберите то. Правильно так ATD+7xxxxxxxxxx;
Если ATD+7xxxxxxxxxx; без пробела- совсем тишина ни ERROR ни OK
AT+CUSD=1,"#ххх#" выполняет запросы о балансе, тарифе и т.д. звонить упорно не хочет. Может есть какая команда запрета звонков и я её случайно активировал?
Aleksandr_q
Aug 9 2011, 13:22
Цитата(V125 @ Aug 9 2011, 16:15)

Если ATD+7xxxxxxxxxx; без пробела- совсем тишина ни ERROR ни OK
AT+CUSD=1,"#ххх#" выполняет запросы о балансе, тарифе и т.д. звонить упорно не хочет. Может есть какая команда запрета звонков и я её случайно активировал?
На счету деньги для звонка есть?А уровень сигнала хороший?Проверьте коммандой AT+CSQ.
Сброс к заводским настройкам AT&F.
Ну да, тама кончились деньги. спасибо. Хотя на остатке 5 рублей ??? странно, другая симка с деньгами звонит отлично.
Aleksandr_q
Aug 9 2011, 13:48
Цитата(V125 @ Aug 9 2011, 16:39)

Ну да, тама кончились деньги. спасибо. Хотя на остатке 5 рублей ??? странно, другая симка с деньгами звонит отлично.
Ну это уже вопросы к оператору, а модуль в данной ситуации ведет себя адекватно
Инициализовал, установил сессию
AT+QICSGP=1,"internet.tele2.ru"
OK
..............................
AT+QIOPEN="TCP","xxxxxxxxxxxxx
OK
CONNECT OK
При попытке передать данные
AT+QISEND здесь модуль М12 напроч виснет, на последующее AT+QICLOSE и другие команды не реагирует, пока не выключу кнопкой POWER. В чем может быть дело? Я использую только Rx Tx , AT+IFC=0,0
Aleksandr_q
Aug 11 2011, 11:52
Цитата(V125 @ Aug 10 2011, 19:58)

Инициализовал, установил сессию
AT+QICSGP=1,"internet.tele2.ru"
OK
..............................
AT+QIOPEN="TCP","xxxxxxxxxxxxx
OK
CONNECT OK
При попытке передать данные
AT+QISEND здесь модуль М12 напроч виснет, на последующее AT+QICLOSE и другие команды не реагирует, пока не выключу кнопкой POWER. В чем может быть дело? Я использую только Rx Tx , AT+IFC=0,0
Ранее в этой теме было написано что "Без сигналов RTS/CTS работать GPRS не сможет". Проверьте этот момент.
Я это подозревал, потому уточнил, что имеется только Rx Tx. Про сигналы RTS/CTS я в курсе. И как же передать данные с GPS модуля, ежели там только Rx Tx.
Eddy71
Aug 11 2011, 14:32
???
Каким боком тут RTS к GPS??
Данные с GPS модуля с ножки ТХ после парсинга шлются через GSM модуль.
Harbinger
Aug 11 2011, 14:45
Можно и сырые данные гнать, без парсинга (по трафику может быть невыгодно, но дело вкуса) - в любом случае ловить одним UART МК (без контроля потока) и отправлять в другой (с контролем).
Буфер, естественно, понадобится.
Если у МК UART один - дело хуже, но выкрутиться можно с помощью коммутатора или программного UART со стороны GPS (как правило, там скорости низкие, сильно напрягать не будет).
Может я коряво мыслю и выражаюсь, просто хотел сначала "смоделировать" и отработать последовательность команд через СОМ, апосля использовать OPEN CPU. Сразу вслепую ковырять исходники, дебажить модуль - очковато испортить родную прошивку. Или все же поставить копеечный внешний МК и не заморачиваться. Дело как бы не в экономии 1$, заманчиво реализовать возможности модуля.
С внешнего МК надо отправить через USART сообщение < AT+QICSGP=1,"internet.tele2.ru"\r\n >
Если использовать команду printf("AT+QICSGP=1,"internet.tele2.ru"\r\n "); то получается косячок с синтаксисом, кавычки внутри кавычек "internet.tele2.ru" Я с USART особо не работал. Как мне отправить сообщение с кавычками? Или сделать
putchar('A');
putchar('T');
putchar('+'); и т.д.
Цитата(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 слеш то что надо.
Для отладки GPRS написал на 64 Меге (чтобы апосля проблем с объемом флеша небыло) программку. Нарисована и работает из PROTEUSa через виртуальный Протеусовский COM порт.
...........................
AT+QIOPEN="TCP","193.193.165.165",20332\r\n
OK
CONNECT OK
AT+QISEND
>#L#ххххххххххххххх;123\r\n
0x1A\r\n
SEND OK
#AL#1
Все прекрасно работает без сигналов RTS/CTS! Я так нигде и не нашел, что их надо ОБЯЗАТЕЛЬНО использовать, RTS пока болтается в воздухе.
В местной лавке отсутствует MEGA64L (ну не хочется использовать без L из-за необходимости согласования уровней). Поэтому пока в Протеусе. Правда флеши занято 10К, а ОЗУ почти 4К. Мечтаю перебраться на STM32. Работает нормально, гонит данные на orange gps trace. Иногда что-то виснет и данные перестают передаваться. Грешу на глюки Протеуса. Но это лирика. Вопрос посуществу. Как можно гарантированно контролировать, что сам GSM-модуль не завис. По мигалке Нетлайта кажется ненадежным. И существует ли АТ команда полного ресета модуля?
novus2004
Oct 3 2011, 00:37
Цитата(V125 @ Oct 2 2011, 13:19)

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

Вопрос посуществу. Как можно гарантированно контролировать, что сам GSM-модуль не завис. По мигалке Нетлайта кажется ненадежным. И существует ли АТ команда полного ресета модуля?
Работу модуля можно видеть во всех деталях используя ПО Catcher подключенное к модулю через отладочный порт.
Transistor
Oct 3 2011, 12:37
[deleted]
Цитата(novus2004 @ Oct 3 2011, 04:37)

Что имеено Вы подразумеваете по "модуль завис" : не отвечает на команды, выпал из сети или что-то другое.
Под "модуль завис" я имел ввиду всевозможные глюки или любое неадекватное поведение во время штатной работы. Просто чтобы застраховаться на будущее. Внеший контроллер бы это усек и перезагрузил бы модуль. Помнится кто-то где-то контролировал меандр. А что за меандр такой и откуда берется уже не помню. Вот проверять регистрацию в сети- это отличная идея (недоумился до элементарного). Я просто контролирую соединение с сервером. Если во время сна - время от времени пингую сервер и проверяю #AP#, иначе проверяю #ASD#1.
Если нужна высокая гарантия поддержания работоспособности, то сделайте так:
после каждой отправки данных на ваш сервер отправляйте ДНС-запрос в UDP-порт 53 на IP 8.8.8.8 с доменом, google.com, например. Посмотреть дейтаграмму можно снифером с компа. Гугл-днс ответит, и если все ОК, вы получите ответ с порта 53. Это будет вам аналогом пинга (последний, к сожалению, не реализован ни в оцпу, ни тем более в АТ).
Введите счетчик, при отсылке запроса инкрементируйте, при получении - декрементируйте. Если значение превысит заданное, можете перезапустить модуль (причем не АТ-командами и т.п., и даже не POWERKEY, а жестко по питанию - сделайте отвод от МК к управляемому стабилизатору, а МК питайте отдельно). И не забудьте watchdog в МК активировать, обнуляя в main.
ПС: меандр - у меня в трекере (см. пост в этой ветке). Но он предупреждает зависание оцпу. Кроме этого, я контролирую обмен, как описал выше (допустимое к-во потерь задается пользователем). И еще запускаю таймер при поднятии жпрс и ресетю модуль при таймауте (задается пользователем). Все это дает гарантию работы трекера в различных ситуациях.
Цитата(GeGeL @ Oct 3 2011, 23:26)

И еще запускаю таймер при поднятии жпрс и ресетю модуль при таймауте (задается пользователем). Все это дает гарантию работы трекера в различных ситуациях.
Если постоянно ресетить модуль, не очень -то экономично выходит. За GPRS соединение в ТЕЛЕ2 снимают около 40копеек. Не думаю, что другие операторы стесняются это делать. Если тока безлимит... Насчет пинга Гугла - или не врубился или Вы пропустили один мой пост. Для чего мне его пинговать, мне ведь отвечает orange gps trace. Вот если он перестал отвечать, тогда для проверки пингануть Гугл, (а заодно Рамблер с Яндексом

) и сделать вывод о необходимости ресета.
Немного не так вы поняли: в начале процедуры конекта к жпрс запускаю таймер скажем на 3 минуты. Далее выполняю конект: проверка регистрации (если нет, то ждем), собственно конект (ждем), получение айпи сервера по домену (если необходимо, ждем) создание сокета, пинг днс того же гугла(ждем ответа). Если удачно пинг (получен ответ), то таймер останавливаем. Т.о. если что-то не так при конекте и не самоустранилось в рабочем цикле за 3 минуты, то идем на перезагруз. Это внештатная ситуация, и, по идее. возникать вобще не должна. Но предвидеть надо.
А что касается второй части, то именно так я и имел ввиду:
посылаем пакет на оранж, увеличиваем счетчик.
получаем ответ, сбрасываем счетчик.
Если счетчик больше, скажем, 3, то пингуем гугл.
При получении ответа на пинг тоже сбрасываем счетчик.
Если счетчик достиг, скажем, 6, то деактивируем жпрс и запускаем ее снова, как описано выше (с таймером).
Далее, если в течение 3 мин жпрс не удается поднять, тогда уже ресетим модуль (по таймеру).
Спасибо, теперь понял. У меня при поднятии GPRS, каждый последующий шаг только после получения одобрения от модуля типа так: получили строку с ОК-далее, получили строку с CONNECT- далее, неполучили ERROR-далее и т.п. А счетчик тоже прицеплю для надежности.
Прежде, чем гнать данные на Оранж я включаю прозрачный режим AT+QIMODE=1, ........ AT+QIOPEN="TCP","193.193.165.165",20332. После этого модуль не принимает АТ команды. Как теперь можно вернуть ражим АТ?
CupuyC
Oct 10 2011, 09:06
Цитата(V125 @ Oct 10 2011, 11:31)

Как теперь можно вернуть ражим АТ?
+++
+++Это я знал,
+++
AT+QIMODE=0
AT+QICLOSE
AT+QIDEACТ
CLOSED
AT+QIDEACT
DEACT OK
Гдето или порядок команд не тот или тайминги малы, а вот с терминала получилось. Долго однако разъединяется...
Выходит при установленном TCP соединении я не смогу прочитать пришедшие СМС?
CupuyC
Oct 10 2011, 14:11
Цитата(V125 @ Oct 10 2011, 12:49)

Гдето или порядок команд не тот или тайминги малы, а вот с терминала получилось. Долго однако разъединяется...
Выходит при установленном TCP соединении я не смогу прочитать пришедшие СМС?
Да, разъединяет оно не за милисекунды.
Совершенно верно, при установленом TCP соединении SMS не почитаешь...
У меня разъединяет 30 -100 сек. Может я что не так делаю. А какой выход? Прерывать сессию, читать и снова соединяться? Может есть какой хитрый способ обойти это? Уж слишком долго рвется сессия.
CupuyC
Oct 11 2011, 12:06
Цитата(V125 @ Oct 10 2011, 17:19)

У меня разъединяет 30 -100 сек.
Не надо разъединать. Надо перейти с прозрачного режима в командный. Почитать СМС и снова перейти в прозрачный режим. ТСП сессия при этом не рвется.
Для жесткого рестарта модуля приноровились ставить внешний ключ. Но ведь еще существует вывод EMERG_OFF. В ДШ предлагают его использовать, когда нормальное отключение модуля невозможно. Может там внутри на железном уровне стоит тот же самый ключ? Что на это скажут представители поддержки Квестеля? Может существует ли какая "секретная" блок- схема?
CupuyC
Oct 13 2011, 09:02
Цитата(V125 @ Oct 12 2011, 20:32)

Для жесткого рестарта модуля приноровились ставить внешний ключ. Но ведь еще существует вывод EMERG_OFF. В ДШ предлагают его использовать, когда нормальное отключение модуля невозможно. Может там внутри на железном уровне стоит тот же самый ключ? Что на это скажут представители поддержки Квестеля? Может существует ли какая "секретная" блок- схема?
Зачем модулю жесткий рестарт? Модуль всегда реагирует на PWRKEY! За всю историю продаж не было случаев, чтобы PWRKEY не помогал. Если уж модуль вдруг завис, то помжет перезапустить модуль команда AT+QPOWD=0(программный аналог EMERG_OFF).
EMERG_OFF - поддерживается самим чипом. Это безусловное выключение без всяких процедур выхода из сети.
непонятное поведение M10

пробовал разные прошивки: M10BR05A09S32, M10R06A07S32
Модем при установлении TCP соединения выдает SEND OK при отправке данных, хотя данные до сервера не дошли, они приходят позже или вообще не приходят. Для проверки использовал разные проги которые ведут лог сокета. Причем такая ситуация при смене оператора либо ухудшается либо улучшается, например на "МТС" боле менее приходят с задержкой до 5...10сек, а "Мегафон" совсем до 30% данных не доходят хотя модем исправно выдает SEND OK. При включении модема SIM300 или SIM900 в тех же условиях на тех же симка все работает нормально.
Никто с таким не сталкивался? в чем может быть проблема?
Цитата(xmega @ Nov 7 2011, 10:06)

непонятное поведение M10

пробовал разные прошивки: M10BR05A09S32, M10R06A07S32
Прошивки M10BR... и M10R... для разного железа. Первая прошивка для более новых модулей, где используется усилитель мощности совмещенный с коммутатором антенны. Поэтому посмотрите на наклейку на модуле, что за прошивки Вам надо шить. Самые последние прошивки: M10BR06A06S32 M10R07A01S32. Убедитесь, что в модуль прошили соответствующую прошивку.
Подайте команду AT+CSQ и посмотрите что получите в ответ. Если слабый сигнал - проверьте все ли нормально с анетнной.
jokolemene
Dec 27 2011, 11:16
del
Цитата(CupuyC @ Nov 7 2011, 12:47)

M10BR06A06S32 M10R07A01S32. Убедитесь, что в модуль прошили соответствующую прошивку.
а не подскажете ли, для модулей M10R OCPU прошивки свежие существуют? А то вроде есть такой модуль, но толку никакого от него - лежит мертвым грузом.
Aleksandr_q
Dec 27 2011, 13:46
Цитата(pau62 @ Dec 27 2011, 17:14)

а не подскажете ли, для модулей M10R OCPU прошивки свежие существуют? А то вроде есть такой модуль, но толку никакого от него - лежит мертвым грузом.
Должны быть, но напишите полное название прошивки, а то тип памяти играет роль.
CupuyC
Dec 27 2011, 14:06
Цитата(pau62 @ Dec 27 2011, 15:14)

а не подскажете ли, для модулей M10R OCPU прошивки свежие существуют? А то вроде есть такой модуль, но толку никакого от него - лежит мертвым грузом.
Последняя официальная версия прошивки для этих подулей вроде как M10R03A04V01S32_OCPU. Эти модули достаточно давно уже не производятся, поэтому новые прошивки под них не делаются.
Цитата(Aleksandr_q @ Dec 27 2011, 17:46)

Должны быть, но напишите полное название прошивки, а то тип памяти играет роль.
M10R03A02M32_SST
Aleksandr_q
Dec 28 2011, 11:02
Ну тогда см предыдущее сообщение #195. Это последняя версия.
Пардон, это сообщение я прозевал.
AT+QTTS Text To Speech. Если я правильно понял, эта команда читает текст. Тоесть говорилка. А на каком языке, сколько слов может произнести, может ли прочитать из файла (для ОЦПУ).
Сам не пробовал, но на сколько я в курсе, то английский. Есть также китайский вариант, пригодится для особо продвинутых клиентов

Читает из с-string, так что сколько строка, столько и произнесет. Файл надо подгружать в массив char по кускам.
Я так понял, читает в бекграунде, так что для последовательного воспроизведения необходим поллинг окончания чтения: Ql_TTS_Query() (возвращает IDLE, INITIALIZED, PAUSE, SYNTHESIZING, SYNTHESIZED, PALYEND или PLAYING)