我正在发送AT+CUSD命令(拨ussd代码)到一个gsm调制解调器。它很好用。手机上的响应也是正确的。但我认为答案是十六进制格式,或者是我不知道的某种编码:
GSM调制解调器硬件:
诺基亚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发布于 2015-05-04 11:09:05
好像是调制解调器解码问题。应该通过使用大多数调制解调器的标准IRA编码来修复。
试着使用:
AT+CSCS=“爱尔兰共和军”
然后尝试USSD命令以再次获得响应。
另外,您可以通过以下方式输出调制解调器的可用编码功能:
AT+CSCS=?
USSD被编码为7位GSM或UC2.要使用7位解码,请看一下3 3GPP 03.38。要解码UC2,这基本上是UTF-16,所以两个字节定义了一个字符。
尝试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位开始很好,但在3个字符后,它只是垃圾。
尝试使用UC2只会产生垃圾。
结论:也许是使用调制解调器的一个具体问题(仍然有助于知道是哪个制造商的型号)。或者如何连接到调制解调器(考虑到USSD字符串不是有效的十六进制字符串,因为它的长度不均匀)。
发布于 2017-03-06 19:19:50
这条线有点旧,但也许这会帮助到这里的人!
该格式显然是在十六进制UC2,16位标准字符!所以你应该把它转换成一个可读的字符串!如果你知道如何编程,那是一个简单的任务!创建您的功能,这样做!把每四个字都拿走!把它们放到$hex ==>上,把它们转换成一个字符!php中的示例!您可以用两个函数chr(十六进制($hex))这样做!好吧,没有编程人员!看看这个页面在线转换器
有太多太多,太多不起作用!在任何情况下!这个很好!比这更好!是你可以保存在你的电脑的补充页面!当你离线时使用它!他们已经用javascript实现了!包括在内!太棒了!
好吧,现在是程序员!我在php中创建了一个函数!我在做些什么!用AT命令!在这里我创造了我自己的功能!也许它会对你有帮助!
希望能帮上忙!
https://stackoverflow.com/questions/30026592
复制相似问题