在AT+CMGS命令中,我在CMGF=1(text模式)时信息能发送成功了,
现在的问题是在CMGF=0(PDU模式)时,信息发不出来,或者说是不明白怎么发送.请高手指点.谢谢!我这里把相关资料贴上来,大家看看.另外谁手头上有中文的详细资料?能发给我一份吗?如果觉得分不够我可以再加.
2) If PDU mode(+CMGF=0):
+CMGS=<length><CR>
PDU is given <ctrl-Z/ESC>
ESC aborts message
其中:<length> 是指->
integer type value indicating in PDU mode (+CMGF=0), the
length of the actual TP data unit in octets (i.e. the RP layer
SMSC address octets are not counted in the length).
问题补充:
我手头上有一个GSM MODEM,它相当于一个手机,它上面有一个串口,通过电脑上的串口,比如我的是COM5.通过超级终端或串口调试工具向串口上发送AT指令就可以了.现在是人工发送,所以不要代码什么的来写程序.我是这样操作的,上电后输入AT<CR>看是否已连接上GSM了没有,再输入AT&F0恢复出厂值,AT&D0忽略DTR状态,ATS0=1振铃1声后自动应答,AT+IPR=9600设置波特率,AT&W0将当前设置存为用户配置文件,ATZ0以用户配置文件从新启动.
AT+CMGF=1(设为Text模式)
AT+CMGS=13655814828<CR>
>输入发送的内容,这是ASCII码
Ctrl+Z(或16进制的1A)
GSM会返回
+CMGS:100
OK
这表示当前信息发送第100条成功.这是在Text模式下
在AT+CMGF=0(PDU模式下)时
发送
AT+CMGS=<CR>[CR表示回车]
>0031000D91683156854128F80000A704D4F29C0E
Ctrl+Z(或16进制的1A)
这时返回的OK,而不是CMGS:101 OK
实际中短信也是未发送成功的.
说明一下上面一串8进制数的意思,
00终端设备将读取SIM中设置的SCA填充到SMS-PUD中
当然也试过用0891683108501705F0
31是PDU Type(意思见下面发的网址)
00表示MR,设成00
0D91683156854128F8是向这个人手机上发信息
00是PID(意思见下面发的网址)
00是DCS(意思见下面发的网址)
A7是VP(意思见下面发的网址)
04是UDL即消息的长度
D4F29C0E是消息的内容(即Test)
为什么会发送不成功呢?
我觉得是还有别的什么内容没设置好,所以消息发送不成功.
最佳答案
数据组织比较麻烦,如果中间有什么错误,就发送不成功。当初是拿我的西门子CX65手机做实验,得到数据格式的。有一个软件,可以在电脑上编辑短信,通过红外或串口(原理是一样的)传到手机,然后手机将短信发送出去,通过监控串口,得到到指令的格式,然后再根据手册,对应的修改数据。
有几点要注意的是:号码2位一组,组内顺序要倒换。length不包含短线中心号码(就是上面那段说明),时间长了,很多都记得不是很清楚了。
提问者对于答案的评价:
最好是还能回答一下我的补充问题.谢谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc356290.html