AT+CUSD指令:响应编码
AT+CUSD command: Response encoding
我正在向 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"
也尝试过:
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
看起来像是调制解调器解码问题。应该通过使用大多数调制解调器的标准 IRA 编码来解决。
尝试使用:
AT+CSCS="IRA"
然后尝试 USSD 命令再次获得响应。
作为旁注,您可以通过以下方式输出调制解调器的可用编码功能:
AT+CSCS=?
USSD 编码为 7 位 GSM 或 UC2。要使用 7 位进行解码,请查看 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 位时还不错,但在 3 个字符后就变成垃圾了。
尝试使用 UC2 只会产生垃圾。
结论:可能是所用调制解调器的特定问题(了解它是哪个制造商型号仍然很有用)。或者你是如何连接到调制解调器的(考虑到 USSD 字符串不是有效的十六进制字符串,因为它的长度不均匀)。
帖子有点旧,但这可能会对来到这里的人有所帮助!
格式显然是十六进制UC2,16位标准字符!所以你应该把它转换回一个可读的字符串!如果您知道如何编程,那将是一项简单的任务!创建你的功能来做到这一点!取每4个字符!将它们放在 $hex ==> 将它们转换为 char! php 中的示例!你用两个函数 chr(hexdec($hex)) 那样做!
WELL FOR NO PROGRAMERS!看看这个页面 online converter
太多太多都不行!在所有情况下!这个不错!比那更好!是您可以将完整页面保存在您的电脑中!并在离线时使用它!他们已经在 javascript 中实施了!它包括在内!太棒了!
程序员现在好了!我在 php 中创建了一个函数!我正在做某事!使用 AT 命令!在这里我创建了自己的功能!也许它会对你有所帮助!
希望对您有所帮助!!!
我正在向 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"
也尝试过:
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
看起来像是调制解调器解码问题。应该通过使用大多数调制解调器的标准 IRA 编码来解决。
尝试使用:
AT+CSCS="IRA"
然后尝试 USSD 命令再次获得响应。
作为旁注,您可以通过以下方式输出调制解调器的可用编码功能:
AT+CSCS=?
USSD 编码为 7 位 GSM 或 UC2。要使用 7 位进行解码,请查看 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 位时还不错,但在 3 个字符后就变成垃圾了。
尝试使用 UC2 只会产生垃圾。
结论:可能是所用调制解调器的特定问题(了解它是哪个制造商型号仍然很有用)。或者你是如何连接到调制解调器的(考虑到 USSD 字符串不是有效的十六进制字符串,因为它的长度不均匀)。
帖子有点旧,但这可能会对来到这里的人有所帮助!
格式显然是十六进制UC2,16位标准字符!所以你应该把它转换回一个可读的字符串!如果您知道如何编程,那将是一项简单的任务!创建你的功能来做到这一点!取每4个字符!将它们放在 $hex ==> 将它们转换为 char! php 中的示例!你用两个函数 chr(hexdec($hex)) 那样做! WELL FOR NO PROGRAMERS!看看这个页面 online converter
太多太多都不行!在所有情况下!这个不错!比那更好!是您可以将完整页面保存在您的电脑中!并在离线时使用它!他们已经在 javascript 中实施了!它包括在内!太棒了!
程序员现在好了!我在 php 中创建了一个函数!我正在做某事!使用 AT 命令!在这里我创建了自己的功能!也许它会对你有所帮助!
希望对您有所帮助!!!