Jump to content

    
artemkad

Комбинации команд в одной строке для Sim800

Recommended Posts

Я правильно понимаю, что цепочки команд одной строкой типа описанных в разделе "Combining AT commands on the same Command line" в Sim800(C) работают как Бог на душу положет и лучше не выпендриваться и отправлять по одной команде? Или таки где-то есть документ описывающий чего вместе можно комбинировать, а чего нет?

Share this post


Link to post
Share on other sites

странно читать такое от Вас!
У разных команд разное время выполнения. Приёмный буфер модема тут не очень поможет.
Я каждую команду даю отдельно и жду подтверждения "OK" или аналогичного ответа.

Share this post


Link to post
Share on other sites

Ну и причем тут время? Что, к примеру, мешает в цепочке выполнить команду

+CREG=1; 

причем с честным лицом сообщив на всю цепочку Ok .

 

Причем самая большая проблема как раз в том, что модуль молча игнорирует команды без каких-то о том сообщений.

Share this post


Link to post
Share on other sites
3 часа назад, artemkad сказал:

Я правильно понимаю, что цепочки команд одной строкой типа описанных в разделе "Combining AT commands on the same Command line" в Sim800(C) работают как Бог на душу положет и лучше не выпендриваться и отправлять по одной команде? Или таки где-то есть документ описывающий чего вместе можно комбинировать, а чего нет?

Ну, документа такого я не видел, и вряд ли он есть. А вот рекомендацию не посылать команды одной строкой где-то видел. Да и какой в этом смысл? Времени нет? Как вы проверять выполнение каждой команды будете?

Share this post


Link to post
Share on other sites
1 hour ago, Baser said:

 Да и какой в этом смысл? Времени нет? Как вы проверять выполнение каждой команды будете?

Речь, естественно, о командах настроек. Смысл - в иннициализацию не влазят URC от модема и, соответственно, их обработка. По сути, для обеспечения атомарности операции настройки. Проверка -  по "ОК|ERROR" на всю строку.

Share this post


Link to post
Share on other sites
5 часов назад, artemkad сказал:

Речь, естественно, о командах настроек. Смысл - в иннициализацию не влазят URC от модема и, соответственно, их обработка. По сути, для обеспечения атомарности операции настройки. Проверка -  по "ОК|ERROR" на всю строку.

Почему думаете что "не влазят"? Имхо - URC может прийти в любой момент. И между отправкой команды к SIM800 и ответом SIM800 - тоже вполне может. Может и несколько прийти. А если на какую-то команду SIM800 даёт несколько последовательных ответов, то URC может прийти между этими ответами. И ПО должно быть рассчитано на все такие случаи. А тогда нет никакой выгоды от склейки нескольких команд в одну строку. Наоборот - по одной команде проще обрабатывать (ожидать ответ на команду параллельно обрабатывая входящие URC).

Share this post


Link to post
Share on other sites
4 hours ago, jcxz said:

Почему думаете что "не влазят"? Имхо - URC может прийти в любой момент. И между отправкой команды к SIM800 и ответом SIM800 - тоже вполне может. 

Вполне может - между отправкой настроек и формальным ОК(если там не ОК, то проблема в консерватории и силами программы вряд-ли решаема), а не между разными командами настройки. Т.е. настройки гарантировано модему передадутся все и не возникает ситуация когда приходится обрабатывать URC c наполовину настроенным модемом.

Share this post


Link to post
Share on other sites
21 минуту назад, artemkad сказал:

 Т.е. настройки гарантировано модему передадутся все и не возникает ситуация когда приходится обрабатывать URC c наполовину настроенным модемом.

Передаётся строка во внутренний приёмный буфер. А затем команды из этого буфера начинают выполняться. По очереди. По одной. И URC может прийти в любой момент хоть между этими командами. "С наполовину настроенным".

Share this post


Link to post
Share on other sites
9 hours ago, jcxz said:

Передаётся строка во внутренний приёмный буфер. А затем команды из этого буфера начинают выполняться. По очереди. По одной. И URC может прийти в любой момент хоть между этими командами. "С наполовину настроенным".

Да, да, сохранение десятка переменных  в оперативке это столь длительный процесс, что процессор  модуля успеет тысячи раз переключиться на другие задачи и отправить из них сотни URC.:moil:

 

Впрочем, для внешнего процессора это не будет иметь особого значения - он все настройки передал и свободен принимать и обрабатывать любые сообщения от модуля... 

Share this post


Link to post
Share on other sites

По факту - цепочки команд в SIM800 работают безобразно (в том числе и в последней версии). То, что не вызывало никаких проблем в SIM900, здесь дает совершенно непредсказуемый результат, причем он может зависеть от положения звезд на небе. И это касается не только команд на этапе инициализации. Использовать можно, но с осторожностью, проверять.

Share this post


Link to post
Share on other sites
4 часа назад, artemkad сказал:

Да, да, сохранение десятка переменных  в оперативке это столь длительный процесс, что процессор  модуля успеет тысячи раз переключиться на другие задачи и отправить из них сотни URC.:moil:

 

 

Не говорите ерунды - выполнение AT-команд это не "сохранение десятка переменных  в оперативке". Странные у вас представления о работе GSM-модуля...  :unknw:

И насчёт некой "атомарности" выполнения цепочек команд - это ничем не обоснованные фантазии. Или приведите документ где об этом сказано.

Share this post


Link to post
Share on other sites
5 hours ago, jcxz said:

 

Не говорите ерунды - выполнение AT-команд это не "сохранение десятка переменных  в оперативке". Странные у вас представления о работе GSM-модуля...  :unknw:

Ну, расскажите нам, что тогда еще GSM-модуль делает по командам?

ATE0 AT+CREG=1 AT+CLIP=1 AT+COLP=1 AT+CRC=1 AT+CSCS="GSM" AT+CMGF=1 AT+CNMI=2,2 AT+CSCLK=1 AT+CMEE=1

Думаю всем будет интересно послушать.:beach:

Причем замечу, ни одна из них даже не автосохраняемая...

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.