2015-04-11 4 views
0

Недавно я разрабатываю простое приложение для работы с моим GSM-модемом, и у меня есть проблема с отправкой команды USD. После некоторого исследования я нашел модемные журналы и нашел, что мой модем отправляет эту команду, чтобы получить баланс.Как закодировать нормальную строку с режимом кодирования «IRA»?

AT+CUSD=1,"AA182DA68A8D1A",15 

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

AT+CSCS? 

он вернется в этом режиме «IRA», но я не знаете, как преобразовать текст команды баланса * 141 * 1 # в этот тип строки.

Из модемных журналов я обнаружил, что эта строка «AA182DA68A8D1A» преобразуется в форму «* 141 * 1 #».

ответ

0

Прежде всего, то, что вы видите в своих журналах, представляет собой шестую строку, изображающую 7-битную кодированную USSD-команду (см. GSM 03.38 из 3GPP для получения дополнительной информации о 7-битных).

Binary   7-Bit   Decoded 7-Bit 
#########  ########  ############# 

1 0101010  010 1010  * 
00 011000  011 0001  1 
001 01101  011 0100  4 
1010 0110  011 0001  1 
10001 010  010 1010  * 
100011 01  011 0001  1 
0001101 0  010 0011  # 
       000 1101  <CR> 

Есть миллионы инструментов для декодирования 7-Bit, но сделали это быстро вручную здесь :)

команды USSD текстов могут быть либо закодированными с помощью 7-Bit или UC-2 и большинства модемов они делают это сами. Таким образом, хост-приложение может просто отправить команду USSD как ascii, и модем будет разбираться. Поэтому вам просто нужно отправить команду:

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

Попробуйте вручную с помощью telnet или экрана. Тогда вы можете лучше понять, что происходит, не сражаясь с хост-приложением.

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