AT + CUSD命令:响应编码

时间:2015-05-04 09:20:46

标签: at-command ussd

我正在向gsm调制解调器发送AT + CUSD命令(拨打ussd代码)。它工作正常。手机上的响应也是正确的。但是响应是我认为十六进制格式或某些我不知道的编码:

GSM MODEM硬件:

诺基亚C6-01

使用USB线连接到笔记本电脑。 Usb模式:诺基亚套件

用于初始化编码的命令:

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"

实际Ussd命令:

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

实际响应:

+CUSD: 1,"c47258e1ad7e7f477bb2c6781e0ec72785e691d36136481593cd54f6777d8c2ecb23e1313d6dfd3d36f7764fc26974720fa1b242f8fd161f9b9cc",1

OK

预期回复:

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

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

2 个答案:

答案 0 :(得分:2)

看起来像是解码器解码问题。应该通过使用大多数调制解调器的标准IRA编码来修复。

尝试使用:

  

AT + CSCS = “IRA”

然后尝试使用USSD命令再次获得响应。

作为旁注,您可以通过以下方式输出调制解调器的可用编码功能:

  

AT + CSCS =?

USSD被编码为7位GSM或UC2。要使用7-Bit进行解码,请参阅3GPP ETSI 03.38。要解码UC2,这基本上是UTF-16,因此2个字节定义了一个字符。

尝试使用7位:

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字符串不是有效的十六进制字符串,因为它的长度不均匀)。

答案 1 :(得分:0)

线程有点旧,但可能会帮助那些来这里的人!

格式显然是十六进制UC2,16位标准字符!所以你应该把它转换回一个可读的字符串!如果你知道如何编程这是一个简单的任务!创建你的功能!每4个字符!把它们放在$ hex ==&gt;将它们转换为char!在PHP中的例子!你用这两个函数chr(​​hexdec($ hex))就是这样做的! 没有程序员!看一下这页online converter

有太多太多不工作!在所有情况下!这个很好!而且比那更好!是你可以将complet页面保存在你的电脑中!并在离线时使用它!他们已经在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

希望它有帮助!!!