我想以PDU模式发送短信.我检查了我的调制解调器的规格,它支持PDU模式.
我开发了PDU编码器和解码器,但现在我不知道如何将数据发送到我的调制解调器.我试过这些AT命令:
AT
AT+CMGF=0
Run Code Online (Sandbox Code Playgroud)
发送这些命令后,我发送了这样的PDU数据:
AT+CMGW="16079189390500410011000C918939050000000000AA02E834"
Run Code Online (Sandbox Code Playgroud)
我已使用此在线工具检查了此PDU的正确性:
http://www.twit88.com/home/utility/sms-pdu-encode-decode
但通过AT命令发送后,调制解调器挂起.
这是发送SMS PDU的正确方法吗?我在Google上搜索过,无法找到有用的信息.
小智 6
首先,要在调制解调器处于pdu模式时发送短信,必须发送以下命令:AT + CMGS = <length> <CR>,其中长度为(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客户端连接和测试你的调制解调器,看看它是如何响应的
小智 5
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"
Run Code Online (Sandbox Code Playgroud)
另一种变体是使用 +CMGS 命令 +CMGW 将消息写入内存(代码与上面相同),然后使用 +CMSS 从内存发送消息。