我正在尝试使用GSM调制解调器执行USSD命令。
AT+CUSD=1,"*200#",15
我得到的结果不可读
“+ CUSD: 0,“AE·ÜNÓu9XŽt¤å1:?, - u0Œtši7è,Óëizy®ƒ5ÓnÔL»Ai7½,瓦特‡EE·;Ì.ÏAòòœvÓËsÖL»”,15"
当我使用相同的SIM卡在手机上尝试相同的ussd代码时,我得到了正确的结果
“Forfait:909DA。Recharchege:0.0DA Min gratuites:0Min.Min internationales restantes:0Min“
将字符集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
答案 0 :(得分:3)
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
然后会应用于此后的所有字符串,包括<chset>
AT+CSCS
参数//First function
function x=myfct(a, b)
x=a+b
endfunction
//Second function
function y=myfct2(a, b)
y=a/b
endfunction
//Third function
function y=myfct3(a, b, c)
y = myfct(a,b)
y = myfct2(y,c)
disp(y)
endfunction
当您想要稍后将编码更改为其他内容时...)
答案 1 :(得分:0)
AT + CMGF = 0
AT + CSCS = HEX
AT + CUSD = 1,“ * 123#”,15
获取结果并将usd pdu转换为文本
python lib: https://pypi.org/project/PDUUSSDConverter/
直接回答。祝你好运