5

我想在 PDU 模式下发送 SMS。我检查了我的调制解调器的规格,它支持 PDU 模式。

我已经开发了一个 PDU 编码器和解码器,但现在我不知道如何将数据发送到我的调制解调器。我尝试了这些 AT 命令:

AT

AT+CMGF=0

发送这些命令后,我发送了这样的 PDU 数据:

AT+CMGW="16079189390500410011000C918939050000000000AA02E834" 

我已经使用这个在线工具检查了这个 PDU 的正确性:

http://www.twit88.com/home/utility/sms-pdu-encode-decode

但通过 AT 命令发送后,调制解调器挂起。

这是发送 SMS PDU 的正确方法吗?我在谷歌上搜索并找不到有用的信息。

4

2 回答 2

8

首先,要在modem处于pdu模式时发送短信,你必须发送这些命令:AT+CMGS=<length> <CR>,其中length是(PDU二进制字符串的长度-2)/2。当'>'符号出现,您必须发送您的 pdu 和 ctrl+z 字符 (char.ConvertFromUtf32(26))。

以下是一些可能有用的资源: http://www.developershome.com/sms/ SMS 教程 http://www.diafaan.com/sms-tutorials/gsm-modem-tutorial/online-sms-deliver-pdu -decoder/另一个在线 pdu 解码器(但我认为你的链接更好) http://www.fccps.cz/img.asp?attid=24590 AT 命令指南(用于wavecom,但没有区别)

最后的建议 - 使用任何 telnet 客户端连接和测试您的调制解调器,看看它如何响应

于 2013-09-11T08:14:51.297 回答
3

PDU 字符串长度 = (PDUlength - 2 - ServiceCentreNumber 长度) / 2

ServiceCentreNumber 长度是 PDU 字符串的第一个字节。(2 个十六进制字符 = 8 位)

在 PDU 模式下发送短信的命令:

send:AT+CMGF=0                 //recieved "\r\nOK\r\n"
send:AT+CMGS=<length>          //recieved "\r\n> "
send:<pdu string><char(26)>    //recieved "\r\n+CMGS: 59\r\n\r\nOK\r\n"

另一种变体是使用 +CMGS 命令 +CMGW 将 msg 写入内存(代码与上面相同),然后使用 +CMSS 从内存中发送消息。

于 2014-12-25T05:09:41.847 回答