我正在向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
答案 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命令!在这里我创造了自己的功能!可能它会帮助你!
希望它有帮助!!!