GSM调制解调器以UCS2格式发送短信错误

3

我正在使用Java通过AT命令与GSM调制解调器(Siemens)通信。
我将调制解调器的编码设置为“UCS2”。
当我发送消息时,只要我发送电话号码,就会收到来自设备的ERROR消息:

AT+CSCS=UCS2
OK

AT+CSMP=17,167,0,8
OK

AT+CMGF=1
OK

AT+CMGS="0919xxxxxxx"
ERROR

请帮帮我,拜托了!:(

注:UCS2是一种16位字符编码集,用于在全球范围内交换Unicode文本。

+CSCS: ("GSM","UCS2") 我测试了两种方式,91格式(+9xxx...)和92格式(09xx...)。 - YasharHND
1
尝试使用AT+CSCS="UCS2"而不是AT+CSCS=UCS2。我认为它接受该命令,但是没有引号时不是有效值,因此当您尝试使用CMGS发送时会出现错误。 - André
然后将此作为答案添加并标记为已回答 :) - André
但这不是解决方案!问题可能出在我的GSM调制解调器上;因为我在互联网上看到很多使用“UCS2”(或“HEX”)和文本模式的示例,并且它们没有报告任何问题。(因此,切换到PDU模式不能解决这个问题!) :) - YasharHND
很有可能你的调制解调器不支持使用UCS2的CMGS。 - André
显示剩余2条评论
2个回答

6

我认为你对AT+CMGS命令中的<da>地址参数的编码不正确。

你提到了91和92格式,但实际上,你是在指'81'/'82'格式,正如SIM卡中UCS2编码方式下的Alpha字段编码博客文章所解释的那样,就像3GPP TS 11.11规定的那样。

在运行AT+CSCS="UCS2"之后,每个字符串都必须以这种方式进行编码,因此,要从UCS2切换到UTF-8,例如,将为AT+CSCS="005500540046002D0038"

80/81/82编码的Alpha字段仅适用于某些情况,而不是一般的UCS2编码字符串。特别需要注意的是,上述AT+CSCS命令中"UTF-8"字符串的编码与此无关。这也适用于AT+CMGS命令中的<da>参数。


0

很有可能你的调制解调器不支持使用UCS2的CMGS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接