Попробуем навести порядок в SIM900DS
IMHO, если у модуля есть доступ к двум карточкам одновременно и обе карточки зарегились в сети, то абсолютно непонятно, на кой черт нам переключать карточку для определения уровня сигнала по CSQ?
Предлагаю сообразить что-то типа такого
AT+CSQ?
+CSQ: 28,0
+CSQDS: 17,0
AT+CREG?
+CREG: 1,0
+CREGDS: 1,0
Какие ещё команды Вам хотелось-бы видеть в таком формате без переключения дефолтной симки?
Alechek
Nov 6 2013, 09:27
Идея хорошая, но надо четко понимать, что ответы есть асинхронные и синхронные. Иначе будет путаница. По крайней мере - несовместимость с текущим ПО под -DS модемы.
+CSQ: синхронный ответ. обрабатывается по общим правилам GSM 07.07
+CSQN: асинхронный ответ. дополнен расширением от SIMCOM.
SIMCOM все сделал правильно. кроме 3-х вещей:
а) переключатель SIM зачем-то запоминается
б) переключатель SIM действует на все каналы мультиплексора
в) синхронный ответ +CPIN тоже дополнен "DS". Но это исключительно из-за того, что этим же форматом он отвечает "+CPIN: NOT READY". Ответы типа +CREG можно отличить, синхронные они или нет, по количеству параметров в ответе.
если сделать приставки с синхроным ответам - то совместимость с текущим ПО полетит к чертям, так как будет противоречить GSM 07.07
ЛЮБЫЕ ОТСТУПЛЕНИЯ ОТ СТАНДАРТА ПРЕСТУПНЫ!
ну нет так нет - баба с воза кобыле легче
если такого мнение будут придерживаться и другие участники форума - симкомовцы ничё трогать не будут
>>>если сделать приставки с синхроным ответам - то совместимость с текущим ПО полетит к чертям, так как будет противоречить GSM 07.07
ЛЮБЫЕ ОТСТУПЛЕНИЯ ОТ СТАНДАРТА ПРЕСТУПНЫ!
А вот тут товарищи в корне не правы. Смотрим последнюю строчку в описании команды в стандарте 07.07
И если там стоит Implementation - Optional, то ее синтаксис и прочее на усмотрение производителя.
Нельзя трогать только команды со статусом Implementation - Mandatory.
И еще:
07.07
The present document specifies a profile of AT commands and recommends that this profile be used for controlling.....
Подчеркиваю - РЕКОМЕДУЕТ, но не ОБЯЗЫВАЕТ соблюдать формат АТ команд.
И есть куча изделий где не просто отступления от 07.07 имеются, а вообще свой синтаксис.
Alechek
Nov 6 2013, 10:27
Естественно, международные стандарты никогда не будут обязательными. Да и вообще никто никого не принуждает... Не хочешь - не надо, ты - за бортом.
Рынок все расставит на свои места.
ЗЫ
Перевод с английского на русский фразы "Implementation - Optional" будет "Реализация - Опциональная (необязательная; факультативная)".
Как это переводится с английского на русский через китайский, я не знаю, но результат - в команде "+CMSS" от СИМКОМА
ЗЗЫ
Или товарищи неправы, что совместимость с текущим ПО полетит к чертям?
Если бы все было совместимо то нафига каждый производитель давал бы свой даташит по АТ командам????
Давали бы список дополнительных команд - остальное смотрите в стандарте.
Только как начинаешь внимательно смотреть, то отличия есть у всех.
Смотрим стандарт - команда CLCC - должно быть ДЕСЯТЬ типов ответов
<mode> (bearer/teleservice):
0 voice
1 data
2 fax
3 voice followed by data, voice mode
4 alternating voice/data, voice mode
5 alternating voice/fax, voice mode
6 voice followed by data, data mode
7 alternating voice/data, data mode
8 alternating voice/fax, fax mode
9 unknown
Смотрим у Telit если так уж Симком не нравится
<mode> - call type
0 - voice
1 - data
2 - fax
9 - unknown
Смотрим Wavecom
<mode>
0 Voice
1 Data
2 Fax
ГДЕ ОСТАЛЬНЫЕ??? ПОЧЕМУ НЕ ПО СТАНДАРТУ???
Ну и где ваша совместимость, почему не анализируют остальные ответы????
Так что не морочьте голову, нет полной совместимости - читаем даташит на конкретную железку и делаем как написал производитель.
Alechek
Nov 6 2013, 11:23
Эдуард, при всем уважении к Вам, не будем путать варианты ответОВ и варианты ответА.
Варианты, как и сама команда - по усмотрению разработчика. Если отсутствует поддержка режима <voice followed by data, voice mode>, кто будет отвечать этой опцией?
Для того и существует мануал к модему, чтобы знать ЧТО конкретно реализовано.
Телит и Wavecom вряд ли додумаются сделать вместо
0 voice
1 data
2 fax
ответы типа
0 fax
1 voice
2 data
или
0DS voice
1DS data
2DS fax
А, применительно к SIMCOMу, мануал существует для того, чтобы смотреть не только ЧТО, но и КАК реализовано.
Есть два варианта.
1. Упереться в "стандарт", из-за этого сделать криво но совместимо с непонятно кем, ибо на момент написания требований никто и не думал что будут двухсимочные модули или понадобятся дополнительные возможности. Ну и потерять время, реализовать все равно криво и остаться позади конкурентов которые пойдут по пути 2
2. Решить вопрос с Симкомом о удобстве работы с модулем, например ответами которые и стандарт в основной части не нарушат и удобными будут. Использовать имеющиеся или настоять на нужных фишках и выйти на рынок с более полным функционалом чем у конкурентов.
Пример - несколько компаний, объеденили пожелания к SIM900R и за 4 месяца получили прошивку с функциями, которых нет в других модулях или есть вразброс - по одной у кого-то. Теперь их приборы идут даже в Словакию и Польшу, а тамошние производители сидя на штатных европрошивках ничего противопоставить по функционалу не могут. Да - ОЕМ прошивка, другим не дают, несколько не стандартная - зато удобная.
И при этом тоже пришлось искать компромисс - вот самое простое с чем столкнулись
AT+VTS="0,1,2,3,4,5,6,7,8,9"
OK // стандартный ответ, согласно стандарту выдается сразу как отдана команда, а не когда закончена генерация.
+VTS:END // дополнительное нестандартное сообщение говорящее что генерация окончена
// и не нужно гадать выдался сигнал или нет ибо "стандарт" это не регламентирует, а нужно точно знать
and
AT+CLDTMF=1,"0,1,2,3,4,5,6,7,8,9",500,1
OK
+CLDTMF:END
Тут вообще отдельная история - команда фактически переделана с нуля, зато возможностей у нее стало дофига....
А дополнительная команда AT+CDTMFURC=1,1 говорит о том включать вторую строчку URC для обоих команд или нет.
Нарушили стандарт - да. Но стало намного удобнее и понятнее.
А кто не хочет, отключает URC и извращается с таймаутами гадая отгенерилось или нет.
И такого в новой прошивке достаточно....
Не хотите развития SIM900DS - не вопрос - берите штатную евроверсию без расширений - там все по стандарту.
А за время пока вы с ней будете мучаться мы реализуем с Симкомом пожелания по модулю и очередная ОЕМ прошивка пойдет только участвовавшим.
Alechek
Nov 6 2013, 12:31
Так, повторюсь еще раз: расширения можно делать любые, но, крайне желательно, в рамках стандарта.
А стандартом делать расширения не запрещено. Хотите новые команды (AT+CLDTMF) - пожалуйста. Хотите новые URC (+VTS:END) - пожалуйста!
Поверьте, я с DS прошивкой мучаюсь не более, чем с обычными. Все лаконично получается, за исключением вышеперечисленных 3-х пунктов.
И уперся я только в ограничения +CDSDS, состояние которой СИМКОМ (выдохнул, мат пропустил) пишет в память каждый раз! Только, походу, кроме меня никого это не волнует.
Все готовы изобретать костыли в виде новых ответов, новых запросов и прочих ненужных вещей.
по мне так куда проще сделать типа
SELECT(_SIM1)
REFRESH_STATE(_SIM1)
SELECT(_SIM2)
REFRESH_STATE(_SIM2)
if (_SIM1.NetworkStatus == nwREGISTERED)
{
SELECT(_SIM1)
SEND_DATA()
}
else
if (_SIM2.NetworkStatus == nwREGISTERED)
{
SELECT(_SIM2)
SEND_DATA()
}
чем создавать дополнительные запросы и интерпретировать дополнительные ответы.
Aurochs
Nov 7 2013, 00:06
Да тут уже хрен с ними, со стандартами. Симком и стандарты давным-давно и, похоже, навсегда, разошлись как в море корабли.
Но прописывать во флеш каждое переключение SIM по умолчанию!
Как ни старался, просто не могу понять: зачем?
Делалось в пьяном бреду?
Или вредителями по заказу конкурентов?
Цитата(Aurochs @ Nov 7 2013, 04:06)

Но прописывать во флеш каждое переключение SIM по умолчанию!
Это фигня. В 5216 они во флеш прописывают все гейны по аудио входам-выходам, эхоканцлеру и вроде вообще всё!!! И моя затея сделать программно АРУ с плавным регулированием громкостью сошла на нет, пришлось аппаратно. Иначе флешь проелась бы за неделю! Причем говорят - кол-во перезаписей неограничено. Создается впечатление , что там вообще СРАМа нет, все переменные - во флэшэ.
Цитата(Alechek @ Nov 6 2013, 15:31)

Так, повторюсь еще раз: расширения можно делать любые, но, крайне желательно, в рамках стандарта.
А стандартом делать расширения не запрещено. Хотите новые команды (AT+CLDTMF) - пожалуйста. Хотите новые URC (+VTS:END) - пожалуйста!
Поверьте, я с DS прошивкой мучаюсь не более, чем с обычными. Все лаконично получается, за исключением вышеперечисленных 3-х пунктов.
И уперся я только в ограничения +CDSDS, состояние которой СИМКОМ (выдохнул, мат пропустил) пишет в память каждый раз! Только, походу, кроме меня никого это не волнует.
Все готовы изобретать костыли в виде новых ответов, новых запросов и прочих ненужных вещей.
по мне так куда проще сделать типа
SELECT(_SIM1)
REFRESH_STATE(_SIM1)
SELECT(_SIM2)
REFRESH_STATE(_SIM2)
if (_SIM1.NetworkStatus == nwREGISTERED)
{
SELECT(_SIM1)
SEND_DATA()
}
else
if (_SIM2.NetworkStatus == nwREGISTERED)
{
SELECT(_SIM2)
SEND_DATA()
}
чем создавать дополнительные запросы и интерпретировать дополнительные ответы.
кстати да, вполне разумно
попробую пихнуть симком в этом направлении
Цитата(yooj @ Nov 8 2013, 15:03)

кстати да, вполне разумно
попробую пихнуть симком в этом направлении
можно попробовать аналогично и по 5216 пнуть , в свое время у МТ-Систем не получилось, может надо сообщя
я предлагал АТххх&W - пишем во флеш, иначе не пишем.
Как вариант сделать
AT+CDSDS - переключение с запоминанием
AT*CDSDS или AT#CDSDS - переключение для следующей команды или сессии без запоминания
Поясните у кого какие времена задержек получаются с переключением на другого оператора для GPRS, SMS, Голоса?
Цитата(Aner @ Nov 8 2013, 16:29)

Поясните у кого какие времена задержек получаются с переключением на другого оператора для GPRS, SMS, Голоса?
тут речь идет о DS, т.е. две карты в сети одновременно, Вы именно этот модуль имели в виду?
QUOTE (yooj @ Nov 8 2013, 17:55)

тут речь идет о DS, т.е. две карты в сети одновременно, Вы именно этот модуль имели в виду?
Именно о DS, два приемных стека, один на передачу.
Цитата(CADiLO @ Nov 8 2013, 17:07)

Как вариант сделать
AT+CDSDS - переключение с запоминанием
AT*CDSDS или AT#CDSDS - переключение для следующей команды или сессии без запоминания
Эдуард, перестаньте пытаться лезть в окно, для этого есть стандартное средство - двери, в смысле - &W
CADiLO
Nov 10 2013, 11:12
Никто совместимость в этом случае ломать не станет, проще ввести команду которая будет переключать без записи чем менять то что уже сложилось.
ssokol
Nov 10 2013, 16:59
Цитата(CADiLO @ Nov 10 2013, 15:12)

Никто совместимость в этом случае ломать не станет, проще ввести команду которая будет переключать без записи чем менять то что уже сложилось.
а , представьте, чтоб не ломать совместимость , например, автопроизводители при необходимости добавить в коробку еще одну передачу , добавляли бы еще одну "кочергу" для этой передачи... И как только не додумались - для каждой передачи своя "кочерга"
QUOTE (ssokol @ Nov 10 2013, 19:59)

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

Для этого ... на автомате ездить нужно, а не на ручной коробке с кочергой.
Alechek
Nov 11 2013, 06:14
Цитата(CADiLO @ Nov 10 2013, 17:12)

Никто совместимость в этом случае ломать не станет, проще ввести команду которая будет переключать без записи чем менять то что уже сложилось.
Применительно к этой команде - мне очень интересно, у кого же сложилось это самое
то. Ну хоть один реальный пример, где используется автосохранение?
Или это "удобства" сделаны исключительно из-за того, что модем сам может перезагрузиться, а у пользователя не всегда получится это отследить?
ssokol
Nov 11 2013, 17:23
Цитата(Aner @ Nov 10 2013, 23:53)

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

Цитата(Alechek @ Nov 11 2013, 10:14)

Или это "удобства" сделаны исключительно из-за того, что модем сам может перезагрузиться, а у пользователя не всегда получится это отследить?

Кстати , хорошее замечание, явно не замечал такое за симкомом, но надо еще понаблюдать.
Velund
Nov 13 2013, 15:42
QUOTE (ssokol @ Nov 11 2013, 21:23)

Кстати , хорошее замечание, явно не замечал такое за симкомом, но надо еще понаблюдать.
На SIM300 замечал время от времени. Нечасто, и не со всеми разновидностями симок.
Alechek
Nov 14 2013, 05:42
Да будут перезагрузки на всех, если питание плохое.
Лучшие способы защиты от этого - установленный PIN на симке и использование мультиплексора.
Alex_TAV
Nov 18 2013, 04:14
Я только начинаю присматриватся к SIM900-DS и такой вопрос. Если у меня был ранее проект где две SIM карты переключались 4066D, а сейчас перехожу на SIM900-DS , то мне проще в программе просто менять активную SIM карту командой AT+CDSDS и тогда все остальные команды останутся как раньше? Ну и плюсом что не нужно будет как раньше выключать модуль для смены SIM карты.
Alechek
Nov 18 2013, 06:52
Alex_TAV, практически, да. Поменять только алгоритм переключения карт и учесть, что по второй симке на +СPIN? ответ будет +CPINDS:
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.