|
Идентификация поднятия трубки SIM900R, AT+COLP=1 или AT+MORING=1 |
|
|
|
Jul 19 2012, 05:56
|

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

|
Да, есть такое, у Телита по этому поводу в даташите точно видел замечание когда нельзя подавать команды иначе связь прервется. Но это не только его особенность, у всех GSM модулей есть несколько моментов когда требуется дождаться ответа. Все моменты навскидку не помню, но в доках и требованиях GSM 07.07, GSM 07.05 это все есть. Поэтому я всегда и говорю что спешить не стоит, потом дороже обойдется искать причину сбоев.
Как раз в автомате выдача CLCC будет правильной, а если обработчик того что валится из порта сделан правильно, то не пропустите гарантировано и среагируете вовремя. Иначе при собственном опросе можете попасть на смену состояний или пропустить значение.
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
|
Jul 19 2012, 09:15
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643

|
Цитата(megajohn @ Jul 18 2012, 19:21)  тоже такое заметил в телитах. Пока нет ответа на текущую команду (к примеру установка GPRS соеднинения) модем ассинхронные сообщения не передает, и подавать новые команды нельзя категорически. Может в CMUX это разрулено Не читайте за обедом советских газет китайских даташитов. В ITU-T V.250 ясно совершенно, на первых страницах, описан протокол работы с модемом. И сказано, в частности, что следующую команду, разумеется, подавать нужно по финальному ответу (OK, ERROR, CONNECT, NO CARRIER, NO ANSWER и т.п.) на предыдущую. И что подача символа перевод строки, если не ошибаюсь, досрочно может прерывать выполнение текущей команды (на это китайцы клали, отправку SMS сделали через ()(), из-за этого имеем "зависания" на полторы минуты по поводу и без). Про то, какие ответы финальные, а какие промежуточные китайцы тоже не дочитали, поэтому, в частности, SIM900, SIM300 и т.п. дают NO CARRIER по-поводу и без, ERROR по два раза и т.п. И приходится после таких вот ответов ещё перепроверять за модемом по три раза. Если нет ответа долго, проверяем на AT. Если есть OK -- модем просто забыл ответ. Бывает... в связке с "Call Ready" особенно. Если сказал NO CARRIER это скорей вообще ничего не значит и нужно ждать другой ответ, если сказал ERROR то неплохо бы подождать второго ERROR и третьего OK... Некоторые команды, связанные с GPRS, и не только, нельзя комбинировать в одну строку -- ответы теряет. Очень много костылей и подпорок. Знание которых, видимо, большой коммерческий секрет.
|
|
|
|
|
Jul 19 2012, 09:46
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643

|
Цитата(CADiLO @ Jul 19 2012, 09:56)  Как раз в автомате выдача CLCC будет правильной, а если обработчик того что валится из порта сделан правильно, то не пропустите гарантировано и среагируете вовремя. Модем не выдаст "гарантированно". И будет гарантийный случай. Причин почему -- масса. От нахождения в режиме передачи данных, других режимах (когда где-то внутри модема все URC должны накапливаться, и в теории выдаваться потом, но на практике почему-то не выходит из него потом), до пресловутого "Call Ready" в момент формирования которого "OK" теряется, не то, что "+CLCC". И я тут не сказки рассказываю, а исключительно из собственного опыта. С SIM300 разных версий и SIM900 начиная с B02 по B09. Цитата Иначе при собственном опросе можете попасть на смену состояний или пропустить значение. При собственном опросе пропустить что-то как раз сложней. По крайней мере модем в командном режиме и способен выдавать URC и ему в этом не мешает исполнение других команд. Пропустить не страшно, опрос периодический. Смена состояний -- состояний чего? Соединения (звонка) -- с таким же успехом оно может смениться сразу после выдачи сообщения +CLCC. Не аргумент. Состояние модема же поменяться в момент исполнения команды не может (перейти в режим данных, например), по крайней мере до ответа и подачи следующей команды. Если, конечно, ATS0=1 не делать. Цитата(CADiLO @ Jul 19 2012, 13:23)  Логфайл в студию - желательно с временными метками. Это ж как можно до такого довести модуль.... Жутики  В следующий раз наткнусь, сделаю, сюда выложу. Описанное, на самом деле, худо-бедно обходится. Кроме отправки SMS (когда отправить не может, но до выдачи ERROR коматозит от минуты до бесконечности, конкретно на МТС в Петербурге, на других операторах -- ок). Вообще стоило бы автомат разбирающий ответы модема и принимающий решение о выполнении команды и с каким статусом сюда нарисовать в картинках. Оно отнюдь не так прозрачно, как из V.250 следует. Жутики -- это вот: http://electronix.ru/forum/index.php?showtopic=99265Это с приёмом SMS. Ещё аналогичная история была с отправкой SMS. И я уж не знаю в чём там дело, просмотр биллинга оператора потом показал, что деньги взяты за одну SMS, но приходили адресату они много и долго. Как думаете, кто во всём сразу виноват? Правильно. И после такого связываться с продукцией SIMCOM не хочется, ибо понимаешь в дерьме тебя измажут с ног до головы и виноват будешь во всём сам.
|
|
|
|
|
Jul 19 2012, 09:53
|

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

|
А выключить "Call Ready" который не несет смысловой нагрузки, что не позволило? Слишком много казусов озвучиваете - может просто алгоритм общения с модулем неудачно построили. Котов тоже нужно уметь готовить. Есть конечно нюансы, однако они не столь порочны, да и большинство из них обусловлено не модулем, а оператором. >>>Причин почему -- масса. От нахождения в режиме передачи данных. Если я знаю что я передаю данные - зачем мне нужно CLCC??? Что за глупости ? От так вот от фонаря взять и запросить в этот момент???? >>>Смена состояний -- состояний чего? >>>Соединения (звонка) -- с таким же успехом оно может смениться сразу после выдачи сообщения +CLCC Да - состояние соединения. А значит выдаст следующее СLCC с новыми цифрами.
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
|
Jul 19 2012, 11:05
|

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

|
>>>>Жутики -- это вот: http://electronix.ru/forum/index.php?showtopic=99265Читаю >>> 'SIMCOM_SIM900B' >>>'Revision:1137B08SIM900B32_ST' Изначально неверно выбран модуль - неоднократно повторялось что у нас использование 900В не желательно. Не для нас его делали. Кроме того там правильно заметили что в разное время приходили SMS - модуль физически не умет так зацикливаться. Сколько получил, столько и отобразил. Ошибки бывают не спорю - в той же 9 версии для SIM900B по SMS с полдесятка исправлено, однако ни одной по Вашей проблеме. Если бы такое было, то SIMCOM и нас уже засыпали бы письмами. Еще из листинга: у Вас в одну строку - 'AT+CREG?;+COPS?;+CSQ' Допустимо но - НЕЖЕЛАТЕЛЬНО из-за возможных потерь ответов. Тем более что сами же себе противоречите. >>>В ITU-T V.250 ясно совершенно, на первых страницах, описан протокол работы с модемом. И сказано, в частности, что следующую команду, разумеется, подавать нужно по финальному ответу (OK, ERROR, CONNECT, NO CARRIER, NO ANSWER и т.п.) на предыдущую. Ну и где выполнение требований? В вашем листинге этого нет. Три команды подряд не дожидаясь ответов. Более того, каким боком ITU для проводной сети относится к GSM модемам ??? - разве только похожи. А для GSM есть свои требования. Вобщем неубедительно - собственные огрехи гордость признать не позволяет, вот и виноват модуль. Только с другим производителем у Вас при таком подходе будет то же самое. И опять будет виноват модуль.
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|