1、以pdu方式发送中文短信
AT+CMGF=0 //以pdu模式发短信
AT+CMGS=19 //短信长度15+4,15是号码长度,4是短信字节数。如果要发给手机的话,那么这个短信长度就是15,是固定的,后面只要加上短信字节数就可以了。AT+CMGS这个值可以是19,也可以是20。都能发的出短信,比计算出来的数字大1是可以的,但小1或大2是不可以的。
0891683108501705F011000D91683107157624F0000000044E2D6587 //向我的手机发送“中文”俩字
下面剖析这个数字串:
0891 683108501705F0 1100 0D 91 683110937414F2 0 00000 044E2D6587
数字串被分为九个部分:
0891是第一个部分 (1)08—短信息中心地址长度。指(91)+(683108701305F0)的长度除以2。
(2)91—短信息中心号码类型。91是TON/NPI遵守International/E.164标准,指在号码前需加‘+’号;此外
还有其它数值,但91最常用。一般都用91。
683108501705F0 是第二个部分:你用哪个号码发短信,它就是哪个号码的短信息中心号码:例如我用的手机号码是
13967120374,它是浙江的号码,短信息中心号为:+8613800571500。去掉+号,所剩的部分位数为奇
数,所以在末尾补F,变为8613800571500F,然后将每两位互换得到:683108501705F0。第二步完成了。
1100是第三部分:11文件头字节。一般为固定数值,就是11。00—信息类型(TP-Message-Reference),这个一般也是固定值。
0D是第三部分: 它是被叫号码的长度。手机号码前面加上86一般都是13位。例如:8613705167420。如果不加86就是0B。如
果要写成0D的话,那么后面的接收号码要写成这个样子的:683107157624F0。如果要写成0B的话,就将前面
的68去掉,写成:3107157624F0。
91是第四部分: 一般为固定数值,只号码类型,手机都是91,小灵通为81。
683107157624F0第五部分:这就是手机号码后面补个F,然后每两位互换的结果。原号码为:8613705167420。
0 00000 : Bit No.5:0—不使用远程网络,只是短消息设备之间的协议;1—使用远程网络。
Bit No.0—Bits No.4:00000—隐含;00001—电传;00010—group 3 telefax;00100—语音;00101—欧 洲无 线 信息系统(ERMES);00110—国内系统;10001—任何基于X.400的公用信息处理系统;10010—Email。
这里面貌似没有0 0801这种组合哦,但是我查了一下,网上也有用的,我也用了,也是可以发出去信息的,而且
挺好用,信息发送失败的次数反而少了。
044E2D6587:这个是数据串的部分,04是指数据串的字节数。4E2D6587是指“中文”俩字的usc2编码,这个编码我不懂,是从
网上找的。
总结下就三步:AT+CMGF=0 //以pdu模式发短信
OK
AT+CMGS=19
OK
>0891683108501705F011000D91683107157624F0000000044E2D6587
>CTRL Z
待会返回+CMGS: 224 (224是短信索引号,大于0的值)
OK
此时短信发送成功
中心号码换成自己的,目的号码换成你要发送的那个人的手机号码,以上试验是可用的
2.以 text方式发送中文短信
AT+CSMP=17,167,0,8 //这个是您的GSM MODEM必须作的设置:
OK
AT+CMGF=1 // 设置以text模式
OK
AT+CMGS="13013947412"; //写接收号码
> 4E2D6587 // 这个“中文”的usc2码
> //此处写ctrl z
+CMGS: 234 //这个是返回的值,没返回error,就说明发送成功了
OK
我的卡发送PDU方式发送短信的时候老发不出去,text模式发送中文特别的稳定