реклама на сайте
подробности

 
 
> Если нет ответа на команду, что делать?
Rash
сообщение Oct 5 2017, 08:29
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Добрый день.
Есть несколько вопросов относительно правильной последовательности при общении AT командами с SIM800R?

1. В SIM800R была передана AT команда, но на неё нет ответа или пришел ошибочный (битый) ответ. Что делать по истечению определённого таймаута? Какое это должно быть время (хотя бы для команд независимых от сети)?

Предполагаю, что если нет ответа, то необходимо послать эту команду ещё раз, например через 1..5 секунд. Но этот метод не эффективный, т.к. на самом деле модуль задумывается (это уже выяснили почему) и даёт ответ потом на две команды подряд. Например:

Код
AT        // Проверка связи и ждём 2 секунды ответа
AT        // ответа нет, истёк таймаут, посылаю ещё раз
OK        // ответа на 1-ую команду AT

AT+CBC    // Запрос напряжения АКБ, т.к. я получил OK на предыдущую команду

OK        // ответа на 2-ую команду AT  [b]!!! Тут происходит коллизия[/b]

+CBC: 0,92,4136    // Ответ напряжения АКБ
OK            // Ответ OK для запроса напряжения АКБ


В данном примере коллизию можно обойти т.к. я жду конкретный ответ для обработки +CBC

Но вот вариант с вклиниванием передачи данных, например по BT, смещает мой обработчик. Можно дописать ещё различных условий, но не считай, что так работать правильно.

Код
AT        // Проверка связи и ждём 2 секунды ответа
AT        // ответа нет, истёк таймаут, посылаю ещё раз
OK        // ответа на 1-ую команду AT

+BTSPPDATA: 1,16,SIMCOMSPPFORAPP    // Пришли данные по BT

AT+CBC    // Запрос напряжения АКБ, т.к. я получил OK на предыдущую команду

OK        // ответа на 2-ую команду AT  [b]!!! Тут происходит коллизия[/b]

AT+BTSPPSEND=1,11    // Запрос на передачу по BT, т.к. я получил OK на предыдущую команду

+CBC: 0,92,4136    // Ответ напряжения АКБ
OK                // Ответ OK для запроса напряжения АКБ

> SPP APP OK        // Передаю по BT, т.к. я получил OK на предыдущую команду
SEND OK            // Подтверждение передачи


2. Другой вариант - установить таймаут ожидания где-то 60 секунд, на любую команду (независимую от оператора) и если нет ответа, перегружать модуль.

Подскажите, кто как делал и какие есть рекомендации от производителя?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CADiLO
сообщение Oct 5 2017, 11:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Странно... Чтобы модуль на АТ не ответил....
Теоретически возможно только в одном случае - подана следующая команда до получения ответа от предыдущей и она отменила действие предыдущей.
Поэтому следующую команду посылаем только получив любой ответ от предыдущей. Спешить там совершенно некуда.

V.250 : Serial asynchronous automatic dialling and control

5.6 Executing commands
Upon receipt of the termination character, the DCE shall commence execution of the commands in
the command line in the order received from the DTE. Should execution of a command result in an
error, or a character be not recognized as a valid command, execution is terminated, the remainder
of the command line is ignored, and the ERROR result code is issued. Otherwise, if all commands
execute correctly, only the result code associated with the last command shall be issued; result
codes for preceding commands are suppressed. If no commands appear in the command line, the
OK result code is issued.

5.6.1 Aborting commands
Some action commands that require time to execute may be aborted while in progress; these are
explicitly noted in the description of the command. Aborting of commands is accomplished by the
transmission from the DTE to the DCE of any character. A single character shall be sufficient to
abort the command in progress; however, characters transmitted during the first 125 milliseconds
after transmission of the termination character shall be ignored (to allow for the DTE to append
additional control characters such as line feed after the command line termination character). To
insure that the aborting character is recognized by the DCE, it should be sent at the same rate as the
preceding command line; the DCE may ignore characters sent at other rates. When such an aborting
event is recognized by the DCE, it shall terminate the command in progress and return an
appropriate result code to the DTE, as specified for the particular command.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rash   Если нет ответа на команду, что делать?   Oct 5 2017, 08:29
- - CADiLO   А ведь это описано в документации Установить фик...   Oct 5 2017, 09:08
- - Rash   Скорость фиксированная 9600 кбит/сек (было и 11520...   Oct 5 2017, 11:02
- - Rash   Модуль на AT команду отвечает. И отвечает 2 раза. ...   Oct 5 2017, 12:22
- - CADiLO   Вы так и не поняли. >>> Жду ответ, если ...   Oct 5 2017, 12:29
- - Rash   Ув. CADiLO, скажите, что из приведенных Вами цитат...   Oct 5 2017, 13:00
- - CADiLO   Почему у меня больше чем за десяток лет работы с м...   Oct 5 2017, 13:10
- - Rash   Я просто предусматриваю такую возможность, что мож...   Oct 5 2017, 13:28
- - CADiLO   Все предусмотреть невозможно Одесситы лет 8 назад...   Oct 5 2017, 13:40
- - Rash   Я ж думаю одесситы в следующей версии добавили воз...   Oct 5 2017, 14:02
|- - Short Circuit   хм.. Я тоже периодически проверяю кроме регистраци...   Oct 6 2017, 04:39
- - Mysteo   Что-то у вас правда в схеме наворочено, работал с ...   Oct 6 2017, 05:22
- - Rash   Я уже ранее писал, такое бывает не всегда и может ...   Oct 6 2017, 06:03
- - gerber   Судя по всему, у вас включен какой-то Hardware Flo...   Oct 6 2017, 06:21
- - Rash   Кроме скорости ничего в параметрах порта не менял,...   Oct 6 2017, 06:27
- - CADiLO   Может где лишнюю подтяжку на UART поставили? Пока...   Oct 6 2017, 06:31
- - Rash   Схему загрузил Цепи идущие на мк STM32 GSM_PWRKEY ...   Oct 6 2017, 07:04
- - Mysteo   Уберите резистор R64 и вроде будет счастье на лин...   Oct 6 2017, 07:05
- - CADiLO   Ну как бы да, в даташите нет этих резисторов. Возм...   Oct 6 2017, 08:40
- - Rash   понял, спасибо, ближе к вечеру уберу резисторы R64...   Oct 6 2017, 09:03
- - CADiLO   >>>>Забыл указать, на схеме он не нари...   Oct 6 2017, 09:32
- - Rash   Удалил резистор R64 на линии TXD отчасти помогло. ...   Oct 7 2017, 16:23
|- - abi   Проверьте как настроен режим управления потоком в ...   Oct 9 2017, 13:41
- - Alex311   Здравствуйте, извините может не в ту тему пишу... ...   Oct 9 2017, 13:07
- - Rash   Команда передаётся по линии TX. Первый ответ по RX...   Oct 9 2017, 13:55
- - Rash   Запрос -ответ КодAT+IFC? +IFC: 0,0 что означае...   Oct 9 2017, 15:03
|- - jcxz   Цитата(Rash @ Oct 9 2017, 18:03) Запрос -...   Oct 10 2017, 08:39
- - Mysteo   Попробуйте использовать переходник USB - UART и че...   Oct 10 2017, 08:22
- - Rash   Mysteo, в чём может быть логическая ошибка ПО, есл...   Oct 10 2017, 12:11
- - Rash   Добавлю ещё одно интересное наблюдение. В ожидании...   Oct 10 2017, 14:13
- - Rash   И ещё неприятный подарок от модуля, на скорости 11...   Oct 11 2017, 08:35
- - CADiLO   Хоть и считается что RTOS в модуле многозадачная, ...   Oct 11 2017, 09:38
- - Rash   Я с Вами согласен, что приоритет для GSM стетка. Н...   Oct 11 2017, 11:06
- - CADiLO   RE: Если нет ответа на команду, что делать?   Oct 11 2017, 11:21
- - Rash   Проверил в терминалке, результат точно такой же. Д...   Oct 11 2017, 14:57
- - CADiLO   Попробую на выходные покрутить в цикле вашу инициа...   Oct 11 2017, 17:29
- - Rash   Вечером вообще всё лишнее отключил. Запитал от лаб...   Oct 11 2017, 19:43
- - ArtemKAD   А че выдает по AT+GMR и AT&V ?   Oct 12 2017, 05:25
- - Rash   После включения КодAT+GMR Revision:1418B07SIM...   Oct 12 2017, 06:18
- - CADiLO   СТОП!!! +IPR: 0 Скорость стоит в авт...   Oct 12 2017, 06:51
- - Rash   Я на это тоже обратил внимание. Но когда читаю ско...   Oct 12 2017, 07:07
- - CADiLO   Странно..... >>> Подключил FT232RL (I/O ...   Oct 12 2017, 07:42
- - Rash   FT232RL подключал сейчас, потом делители стоят, ка...   Oct 12 2017, 08:03
- - ArtemKAD   Странно. Помимо раздела DEFAULT PROFILE должны быт...   Oct 12 2017, 11:32
- - Rash   ArtemKAD, Отредактировал предыдущий пост с командо...   Oct 12 2017, 11:53
- - CADiLO   Я сначала тоже думал на автозасыпание, но не склад...   Oct 12 2017, 12:28
- - abi   Попробуйте погонять в цикле другую команду, к прим...   Oct 12 2017, 14:42
- - Rash   Скорость зафиксирована. На команду GMM поведение т...   Oct 12 2017, 15:51


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 18:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.02021 секунд с 7
ELECTRONIX ©2004-2016