2015-05-04 6 views
2

Я отправляю команду AT + CUSD (для набора кода ussd) на модем gsm. Он работает нормально. Ответ также правилен на трубке. Но ответ я думаю, в шестнадцатеричный формат или какой кодировке неизвестную мне:Команда AT + CUSD: Кодировка ответа

GSM модем HARDWARE:

Nokia C6-01

Подключение к ноутбуку с помощью кабеля USB. Режим USB: Nokia Suite

команды для инициализации кодирования:

AT+CSCS=? 

+CSCS: ("UCS2","GSM","PCCP437","PCDN","IRA","8859-1","HEX","UTF-8") 

AT+CSCS="IRA" 

AT+CSCS? 

+CSCS: "IRA" 

Также попробовал:

AT+CSCS="GSM" 
AT+CSCS="UTF-8" 

Actual Команда: НДДО

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

Фактический Ответ:

+CUSD: 1,"c47258e1ad7e7f477bb2c6781e0ec72785e691d36136481593cd54f6777d8c2ecb23e1313d6dfd3d36f7764fc26974720fa1b242f8fd161f9b9cc",1 

OK 

Ожидаемый ответ:

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

+CUSD: 1,"Dear Customer.... some response in english",1 
+0

Конец ответа + CUSD заканчивается на «, 1», это правильно? Или было ли окончание infact в «, 15»? – aldridmc

+0

@aldridmc В ответе заканчивается 1. Это правильно, а не опечатка. –

+0

какая разница это делает сэр? –

ответ

2

Похоже, вопрос декодирования модема. Должно быть исправлено, используя стандартную кодировку IRA большинства модемов.

Попробуйте использовать:

AT + CSCS = "IRA"

А затем попробовать команду USSD, чтобы получить ответ снова.

В качестве примечания можно выводить доступны кодирующие возможности вашего модема через:

AT + CSCS =?

USSD кодируются либо как 7-битные GSM, либо UC2. Для декодирования с использованием 7-битных см. 3GPP ETSI 03.38. Для декодирования UC2 это в основном UTF-16, поэтому 2 байта определяют символ.

Попытка с 7-Bit:

C4 1 1000100  100 0100  D 
72 01 110010  110 0101  e 
58 010 11000  110 0001  a 
E1 1110 0001  000 1010  <LF> 
AD 10101 101  101 1110  ü 
7E 011111 10  101 0101  U 
7F 0111111 1  101 1111  § 
47 0 1000111  011 1111  ? 
7B 01 111011  100 0111  G 

Dea<LF>üU§?G 

Начинается хорошо с 7-Bit, но после 3-х символов его просто мусор.

Попытка с UC2 просто производит мусор.

Заключение: Возможно, конкретная проблема с используемым модемом (все же было бы полезно узнать, какая модель производителя). Или как вы подключены к модему (учитывая, что строка USSD не является допустимой шестнадцатеричной строкой, так как она имеет неровную длину).

+0

Тот же ответ даже после настройки. –

+0

Можете ли вы выполнить AT + CSCS =? команду и показать мне, что вы вернетесь? Также изготовителю и модели вашего модема было бы полезно иметь – aldridmc

+0

Эй, сэр Я добавил необходимые команды. Пожалуйста, повторите мой вопрос. –

0

нить немного старая, но может быть, это поможет людям, которые приходят сюда!

Формат, по-видимому, в шестнадцатеричном символе UC2, 16-разрядный характер! поэтому вы должны преобразовать его обратно в читаемую строку! Если вы знаете, как программировать, это простая задача! создайте свою функцию, которая сделает это! возьмите каждый 4character! положить их на $ hex ==> конвертировать их в char! пример в php! вы делаете это с помощью двух функций chr (hexdec ($ hex)), как это! ХОРОШИЕ ПРОГРАММЫ! посмотрите на эту страницу online converter

Слишком много и слишком много не работают! в любом случае! это хорошо! и больше хорошего! что вы можете сохранить завершенную страницу на своем компьютере! и использовать его, когда вы в сети! они сделали реализацию в javascript! и он включен! Великий!

хорошо теперь для программистов! есть функция, которую я создал в php! я работал над чем-то! с командами AT! и вот я создал свою собственную функцию! может быть, это поможет вам!

here is the file ! couldn't post it as code directly here! some not simple (identation thing!) => it's a doc file on my google drive

надеюсь, что это полезно !!!

Смежные вопросы