我试图使用GSM调制解调器执行USSD命令。
AT+CUSD=1,"*200#",15我得到的结果是不可读的
"+CUSD: 0,“埃埃姆·N·N u 9XŽt�\1:,-u0Œt�ši7è,ƒ5 L?Ai7.5,Wé‡é·;Aœ诉‡és�L”,15“
当我使用相同的sim在手机上尝试相同的ussd代码时,我得到了一个正确的结果,即
“福费特:909 Min .里查奇:0.0DA,最低工资:0分钟.国际储备:0分钟.”
将字符集AT+CSCS从GSM更改为IRA或PCCP,PCDN,8859-1并不会改变响应--它完全是相同的响应。
将AT+CSCS更改为十六进制会给我带来一个错误:
AT+CSCS="HEX"
AT+CUSD=1,"*200#",15
OK
+CUSD: 2,"Unexpected Data Value",15
+CUSD: 2,"Unexpected Data Value",15
ERROR并将其更改为UCS2并调用USSD使我的调制解调器重新启动
AT+CSCS="UCS2"
AT+CUSD=1,"*200#",15 发布于 2015-07-27 13:10:43
AT+CUSD命令是以27.007指定的,未经请求的结果代码的格式被定义为+CUSD: <m>[,<str>,<dcs>]。
从您收到的回复中可以看到,<m>是0,<dcs>是15,此外还有<str>的胡言乱语,这并不是简单地直接映射到AT+CSCS字符编码;还有一个完整的部分专门解释它的表示形式,您必须进一步研究。
查找27.007中引用的23.038标准,<dcs>值15映射到未指定的语言,但阅读上面的文本似乎也与GSM 7位默认字母表相同。
因此,是的,您对编码问题的怀疑是正确的,不幸的是,这些标准并不是非常直观的,因此您必须深入研究。
为了调试这一点,我将首先设置AT+CSCS="HEX"并验证接收到的数据在解码时是否有意义,然后要么以可用的格式显示它,要么自己从软件中显式地解码它(但请注意,从那时起,更改AT+CSCS将应用于所有字符串,包括希望稍后将编码更改为其他.)的AT+CSCS的<chset>参数。
发布于 2018-10-09 19:52:50
AT+CMGF=0
AT+CSCS=HEX
AT+CUSD=1,"*123#",15
获取结果并将ussd pdu转换为文本
python:https://pypi.org/project/PDUUSSDConverter/
直接回答。祝好运
https://stackoverflow.com/questions/31638873
复制相似问题