Ошибка при проверке баланса через USSD

Я пытался проверить свой баланс с помощью 3g-модема через AT-команды и, похоже, застрял.

Информация об устройстве выглядит следующим образом:

Производитель: QUALCOMM INCORPORATED
Модель: M6281
Версия: SSD_M6281A-0.0.1 1 [02 октября 2008 г., 07:00:00]

Модем имеет возможность USSD (объявлено, а также присутствует в заводской приборной панели).

Я подключаюсь через замазку к последовательному порту COM4, ​​который является моим портом приложения для модемов. Все AT-команды работают нормально, но я получаю сообщение об ошибке при выполнении следующего через шпатлевку:

AT+CUSD=1,"*111#",15

Это возвращает простую «ОШИБКУ». *111# — код проверки баланса моего оператора связи. Я подозреваю, что где-то есть ошибка форматирования, но я не могу понять, где.

Примечание. Если я ввожу пустую команду ussd:

AT+CUSD=1,"",15 

затем я получаю OK (хотя позже я получаю ответ + CME ERROR: повторная операция) ... Однако, если я пишу что-либо в кавычках, он возвращает «ERROR».


person Andy Mouset    schedule 19.04.2015    source источник
comment
Вы убедились, что ваш модем зарегистрирован в мобильной сети? Через AT+CREG?   -  person Matt Aldridge    schedule 19.04.2015
comment
@aldrimic AT+CREG? +КРЕГ: 0,1   -  person Andy Mouset    schedule 19.04.2015


Ответы (2)


Хорошо, я наконец нашел способ исправить это. Видимо проблема в кодировке. Вот что я сделал:

AT+CSCS="GSM" // change character set to GSM
AT+CUSD=1,"*111#",15 // Issued balance check ussd code

Теперь он работает нормально.

Кодировка по умолчанию была UCS2, я был бы признателен, если бы кто-нибудь поделился тем, как преобразовать коды ussd в кодировку UCS2 в шпатлевке.

person Andy Mouset    schedule 19.04.2015
comment
Не уверен, как ваш модем справляется с UCS2. Но у меня есть несколько других модемов Sierra Wireless, где вы просто конвертируете символы в шестнадцатеричный формат, и это работает. - person Matt Aldridge; 19.04.2015
comment
Очень ценная информация, спасибо за предоставление этого в качестве ответа. - person hlovdal; 09.05.2015

Вы пытались отправить запрос с помощью AT+CUSD=1,"*111#"? (без последнего параметра) Команды AT иногда отличаются из-за реализации производителем.

person dfgg    schedule 19.04.2015
comment
Да разницы никакой. Пустая команда также принимается без последнего параметра... поэтому я думаю, что это не имеет значения в моей настройке. - person Andy Mouset; 19.04.2015
comment
@dfgg Пожалуйста, используйте комментарии, чтобы попросить пользователя разъяснить этот вопрос. - person β.εηοιτ.βε; 19.04.2015