AT+CUSD指令:响应编码

Sye*_*hiq 4 ussd at-command

我正在向 gsm 调制解调器发送 AT+CUSD 命令(拨打 ussd 代码)。它运行良好。手机上的响应也是正确的。但我认为响应是十六进制格式或我未知的某种编码:

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"
Run Code Online (Sandbox Code Playgroud)

还尝试过:

AT+CSCS="GSM"
AT+CSCS="UTF-8"
Run Code Online (Sandbox Code Playgroud)

实际的 USSD 命令:

AT+CUSD=1,"*123#",15
Run Code Online (Sandbox Code Playgroud)

实际反应:

+CUSD: 1,"c47258e1ad7e7f477bb2c6781e0ec72785e691d36136481593cd54f6777d8c2ecb23e1313d6dfd3d36f7764fc26974720fa1b242f8fd161f9b9cc",1

OK
Run Code Online (Sandbox Code Playgroud)

预期回应:

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

+CUSD: 1,"Dear Customer.... some response in english",1
Run Code Online (Sandbox Code Playgroud)

Mat*_*dge 5

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

\n\n

尝试使用:

\n\n
\n

AT+CSCS=“IRA”

\n
\n\n

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

\n\n

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

\n\n
\n

AT+CSCS=?

\n
\n\n

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

\n\n

尝试使用 7 位:

\n\n
C4    1 1000100     100 0100     D\n72    01 110010     110 0101     e\n58    010 11000     110 0001     a\nE1    1110 0001     000 1010     <LF>\nAD    10101 101     101 1110     \xc3\xbc\n7E    011111 10     101 0101     U\n7F    0111111 1     101 1111     \xc2\xa7\n47    0 1000111     011 1111     ?\n7B    01 111011     100 0111     G\n\nDea<LF>\xc3\xbcU\xc2\xa7?G\n
Run Code Online (Sandbox Code Playgroud)\n\n

7 位开始还不错,但 3 个字符之后就变成垃圾了。

\n\n

尝试使用 UC2 只会产生垃圾。

\n\n

结论:可能是所使用的调制解调器存在特定问题(了解它是哪个制造商型号仍然有用)。或者如何连接到调制解调器(考虑到 USSD 字符串不是有效的十六进制字符串,因为它的长度不均匀)。

\n