2015-07-26 3 views
1

Я пытаюсь выполнить команду USSD с использованием GSM-модема.Выполнение команды USSD на GSM-модемом (возможно, неправильное кодирование)

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

и результат я получаю не читается

"+ CUSD: 0," Æ · ÜNÓu9XŽt¤å1: - u0Œtši7è, Óëizy®ƒ5ÓnÔL »Ai7½, ш ‡ Ee ·; Ì.ÏAòòœvÓËsÖL »», 15"

когда я пытаюсь тот же код USSD на мобильном телефоне, используя один и тот же сим я получаю правильный результат, который

"Forfait: 909DA. Recharchege: 0.0DA Min gratuites: 0Min. Min Internationales restantes: 0мин»

изменяя набор символов AT + CSCS от GSM к IRA или PCCP, PCDN, 8859-1 не изменяет ответ это тот же ответ точно

и изменения AT + CSCS в шестнадцатеричном дает мне ошибку:

AT+CSCS="HEX" 
AT+CUSD=1,"*200#",15 

OK 
+CUSD: 2,"Unexpected Data Value",15 
+CUSD: 2,"Unexpected Data Value",15 
ERROR 

и изменить его на UCS2 и вызывая USSD сделать мой модем перезагрузки

AT+CSCS="UCS2" 
AT+CUSD=1,"*200#",15 
+1

Две ошибки Неожиданные значения данных для '*' и ' # ', потому что они не являются шестнадцатеричными символами. При изменении кодировки символов с помощью AT + CSCS она применяется к ** всем ** строкам, следующим, как я упоминал в своем ответе. См. [Этот ответ] (http://stackoverflow.com/a/18672278/23118) для примера настройки UTF-8 с активной кодировкой UCS2.Такая же ошибка применяется во втором случае с UCS2, хотя поведение перезагрузки не так хорошо, как печать полезного сообщения об ошибке «Неожиданное значение данных». – hlovdal

ответ

3

Команда AT+CUSD указана в 27.007, а формат незапрашиваемого результирующего кода определяется как +CUSD: <m>[,<str>,<dcs>].

Из вашего полученного ответа вы можете увидеть, что <m> является 0 и <dcs> в дополнении к тарабарщине для <str>15 который, кстати, не просто карты непосредственно к кодированию AT+CSCS характера; есть целая секция, посвященная объяснению ее представления, что вы должны смотреть дальше.

Глядя стандарт 23.038 ссылки в 27.007 <dcs> значения 15 карт на к языку неустановленного но читать текст над ним также, как представляется, совпадаем с GSM 7 битного по умолчанию алфавита.

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

Для отладки этого я бы начал с установки AT+CSCS="HEX" и убедиться, что полученные данные имеют смысл при декодировании, а затем работают либо с его представлением в удобном для использования формате, либо, возможно, с его расшифровкой явно из шестнадцатеричного кода в программном обеспечении (но имейте в виду что изменение AT+CSCS затем применяется ко всем строкам с последующим включением, включая параметр <chset>AT+CSCS, если вы хотите изменить кодировку на что-то еще позже ...)

+0

Во-первых, спасибо за очень полезный ответ. Я начинаю думать, что может быть зашифрован, , возможно ли это? потому что я пытался подавать тарабарщину, которую я получил в ответ на декодер GSM 7 бит, но не повезло. не было найдено ничего похожего на четкое сообщение. – Ayoub