|
Атомарность выполнения AT-команды |
|
|
|
Jan 18 2016, 18:33
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Всем привет! Может ли в процессе выполнения AT-команды, т. е., между запросами AT+XXX и ответами типа OK, ERROR, ... от модуля/модема придти какой-нибудь URC? Ну, кроме +CME/CMS и ответов с данными... Задекларировано ли это где-нибудь? Код AT+XXX ...
+ZZZ или что-то еще
+XXX ... OK | ERROR ...
--------------------
Благодарю заранее!
|
|
|
|
|
 |
Ответов
|
Jan 19 2016, 11:42
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(jcxz @ Jan 19 2016, 10:20)  Вы не поверите, но URC может прийти даже во время приёма ответа, внутри него. Или между ним и "\r\n"; или между '\r' и '\n'. Т.е. например: ERR<URC...>OR Даже такое бывает. Насчет такого скажу, что это грубая ошибка ПО и при работе с SIM300/SIM900 такого никогда не видел. Цитата(jcxz @ Jan 19 2016, 12:14)  Это конечно косяк, но это печальная реальность - сталкивался с таким в Bluegiga WT-12. К сожалению - таков уровень их программистов написавших её прошивку. А вот у Bluegiga, подтверждаю, видел. Работал с WT11i и с BLE112 - и там и там случается. Вроде солидная фирма, их даже Silicon Labs купила, а такие баги. Цитата(koluna @ Jan 18 2016, 20:33)  Может ли в процессе выполнения AT-команды, т. е., между запросами AT+XXX и ответами типа OK, ERROR, ... от модуля/модема придти какой-нибудь URC? Я в своем софте применяю след. гипотезу Ответы на команду есть двух видов: от стека модема и от мобильной сети. Вот я считаю, что между командой и ответом стека ничего влезть не может (не должно  ). А вот при ожидании ответа от ГСМ сети может что-нибудь и влезть, хотя тоже очень редко, обычно это ошибки и отлупы от ГСМ сети. Типа PDP DEACT может придти когда угодно. А чтобы не разгребать все возможные ответы модема (там бесконечное число вариантов  ) просто периодически проверяется состояние конекта, и если что не так, запускаются процедуры восстановления.
|
|
|
|
|
Jan 19 2016, 14:38
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Baser @ Jan 19 2016, 17:42)  Я в своем софте применяю след. гипотезу Ответы на команду есть двух видов: от стека модема и от мобильной сети. Вот я считаю, что между командой и ответом стека ничего влезть не может (не должно  ). А вот при ожидании ответа от ГСМ сети может что-нибудь и влезть, хотя тоже очень редко, обычно это ошибки и отлупы от ГСМ сети. Типа PDP DEACT может придти когда угодно. Имхо - неправильный алгоритм. Я классифицирую по-другому. Сообщения от модуля к клиенту (не важно GSM или какой другой общающийся через UART посредством команд от клиента) можно разделить на: а) синхронные - реакция модуля на переданные ему команды клиентом (т.е. - это ответы на команды, в том числе и многострочные); б) асинхронные - уведомления о некоторых событиях внутри модуля, напрямую несвязанных с переданными ему командами, происходящими асинхронно относительно основного командного обмена. Любая передача как от клиента к модулю, так и наоборот, делится на кадры (строки). Кадр - это последовательность допустимых символов, ограниченная символами "\r\n" (или одним из них). После передачи модулю команды клиентом, клиент переходит в состояние ожидания синхронных ответов на команды (могут быть многострочные) и ждёт ответов разбирая входящий поток кадров. Ожидание заканчивается по получению ответа (или цепочки ответов если команда может генерить цепочку ответных кадров), либо по истечении таймаута ожидания. Таким образом - URC может вклиниваться в любой момент между командой и первым кадром ответа или между двумя кадрами ответа. лавное - чтобы он не нарушал целостность кадров (строк). Сам URC тоже должен иметь такой-же формат кадра (строка). Когда URC влезает внутрь другой строки, нарушая её - это конечно баг, тут уже ничего нельзя сделать.
|
|
|
|
Сообщений в этой теме
koluna Атомарность выполнения AT-команды Jan 18 2016, 18:33 CADiLO Может. Задекларировано в самой логике работы сотов... Jan 19 2016, 05:55 Alechek Цитата(koluna @ Jan 18 2016, 23:33) Может... Jan 19 2016, 06:47 butthead2 Может прийти в любом месте. Скажу даже больше, в р... Jan 19 2016, 08:55  jcxz Это конечно косяк, но это печальная реальность - с... Jan 19 2016, 10:14 jcxz Цитата(koluna @ Jan 19 2016, 00:33) Может... Jan 19 2016, 08:20 Alechek Цитата(jcxz @ Jan 19 2016, 13:20) Т.е. на... Jan 19 2016, 08:33  koluna Цитата(Alechek @ Jan 19 2016, 12:33) Ну, ... Jan 20 2016, 13:35 CADiLO Абсолютно соотносится, так как нет никакого ограни... Jan 19 2016, 08:42 Alechek Цитата(CADiLO @ Jan 19 2016, 13:42) Абсол... Jan 19 2016, 12:53  Alechek Цитата(jcxz @ Jan 19 2016, 19:38) Имхо - ... Jan 19 2016, 15:16 ArtemKAD >>А вот отличить симкомовкий Call Ready от п... Jan 19 2016, 15:34 Alechek Цитата(ArtemKAD @ Jan 19 2016, 20:34) И в... Jan 20 2016, 06:53 Baser Цитата(Alechek @ Jan 19 2016, 14:53) Так ... Jan 19 2016, 17:42 ArtemKAD >>Чем больше перечень, тем больше памяти нуж... Jan 20 2016, 10:56 Alechek Цитата(ArtemKAD @ Jan 20 2016, 15:56) ... Jan 20 2016, 12:24 CADiLO >>> При включении модуля запрашиваем тип ... Jan 20 2016, 12:33 Alechek Цитата(CADiLO @ Jan 20 2016, 17:33) >... Jan 20 2016, 12:56 CADiLO Вам виднее как решать задачу. И кстати "OK... Jan 20 2016, 13:34 Alechek Цитата(CADiLO @ Jan 20 2016, 18:34) Вам в... Jan 20 2016, 13:58 ArtemKAD >>Ну да, (10 байт стоки+ 12-16 байт что это ... Jan 20 2016, 13:36 Alechek Цитата(ArtemKAD @ Jan 20 2016, 18:36) ... Jan 20 2016, 14:27  ArtemKAD Цитата(Alechek @ Jan 20 2016, 16:27) PS Б... Jan 20 2016, 14:55 CADiLO >>>Так все-таки такое поведение (разрыв с... Jan 20 2016, 13:44 CADiLO Вы ошибаетесь - CPAS это состояние соединения, а н... Jan 20 2016, 14:09 CADiLO Можно конечно и начихать, но если бы все было так ... Jan 20 2016, 14:32 Alechek Цитата(CADiLO @ Jan 20 2016, 19:32) Можно... Jan 20 2016, 14:41 Alechek Цитата(CADiLO @ Jan 20 2016, 19:32) Можно... Jan 21 2016, 10:57  Baser Цитата(Alechek @ Jan 21 2016, 12:57) Ждат... Jan 21 2016, 11:11 CADiLO Дык какие обиды если в том же 07.07 две трети носи... Jan 20 2016, 14:49 Alechek Цитата(CADiLO @ Jan 20 2016, 19:49) .. то... Jan 20 2016, 15:12 Baser Цитата(Alechek @ Jan 20 2016, 14:56) Так ... Jan 20 2016, 15:02 jcxz Цитата(Baser @ Jan 20 2016, 21:02) И если... Feb 11 2016, 06:57 Alechek Вообще, COM порт (TA по терминологии GSM 07.07) до... Jan 21 2016, 12:06 Alechek Да, как оказалось, с +CPAS вариант не китайский,
... Jan 21 2016, 15:10 Alechek . Jan 22 2016, 05:53 Alechek Еще приколы SIMCOM
Вот пойми его, PIN готов? или ... Feb 9 2016, 16:30 Baser Цитата(Alechek @ Feb 9 2016, 18:30) Вот п... Feb 9 2016, 17:11  Alechek Цитата(Baser @ Feb 9 2016, 22:11) У меня ... Feb 10 2016, 05:40   ArtemKAD Цитата(Alechek @ Feb 10 2016, 07:40) С це... Feb 10 2016, 10:20    Alechek Цитата(ArtemKAD @ Feb 10 2016, 15:20) А е... Feb 10 2016, 11:38 smalcom ЦитатаPIN готов? или не готов? или вобще я/модуль/... Feb 9 2016, 17:59 CADiLO В 900-й серии уже ничего меняться не будет. В март... Feb 11 2016, 07:33 Alechek Цитата(CADiLO @ Feb 11 2016, 12:33) Велка... Feb 11 2016, 08:58 CADiLO А вот это мы у производителя и выясним
У меня уж... Feb 11 2016, 09:49 Alechek Нечаянно выяснилось, что на SIM900 AT+CIPSEND=NNN ... Aug 16 2016, 14:36
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|