如何在PDU模式下通过GSM调制解调器发送短信?

时间:2013-08-28 13:44:09

标签: gsm modem

我想以PDU模式发送短信。我检查了我的调制解调器的规格,它支持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的正确方法吗? 我在Google上搜索过,无法找到有用的信息。

2 个答案:

答案 0 :(得分:6)

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

以下是一些可能有用的资源: http://www.developershome.com/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客户端连接和测试调制解调器,看看它是如何响应的

答案 1 :(得分:2)

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

ServiceCentreNumber长度是PDU字符串的第一个字节。 (2 Hex char = 8 bit)

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从内存中发送消息。