2013-08-28 60 views
3

我想以PDU模式发送短信。我已经检查了我的调制解调器的规格,并且它支持PDU模式。如何在PDU模式下通过GSM调制解调器发送短信?

我开发了一个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上搜索并找不到有用的信息。

回答

5

首先,发送SMS时调制解调器处于PDU模式中,则必须发送这些命令: AT + CMGS = <长度> <CR>,其中长度为(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

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

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

命令用于PDU模式发送SMS:

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

相关问题