TC35发送中文短信调试笔记

来源:互联网 发布:java static 多线程 编辑:程序博客网 时间:2024/06/10 00:02

发送中文短信息确切的只需要四条指令:(指令均不包括   引号 )

设置短信格式——“AT+CMGF=0”;

发送短信长度——“AT+CMGS=XX”;

发送短信内容——16进制代码。

确定发送短信——“0x1A“ 

TC35在接收命令时,会以“回车换行”符作为发送完毕的标志,即每次命令发送完毕要在最后加”\r\n"以结束此次发送。因此在设置短信的格式时完整的命令应该是“AT+CMGF=0\r\n"。

发送短信长度即在开头的”XX“,这个长度不是16进制的代码的完整长度,而是在短信中心号码后面的内容的代码长度。发送的完整命令应该是”AT+CMGS=XX\r\n"。

发送短信内容为16进制的代码,代码具体举例说明,含义如下:

完整PDU格式代码为

 

0891683108402705F011000D91685141399593F10008A708670951654FB5FF01

分段解释如下:

08:短信中心号码的长度共8个八位字节(包括91);

91:表示发送的是国际代码,中国是86;

683108402705F0: 表示短信服务中心号码,+8613800472500;转换格式为去掉“+”,然后奇偶位完全调换,最后奇数位后补F,然后调换,后面的手机号码做同样处理;

11:表示为PDU格式;

00 :MR 消息参考;

0D:LEN 接收方号码长度;

91:TYPE,91 表示号码是国际代码,81 是国内代码;

685141399593F1:接收方手机号码,处理方法同前面处理短信中心号码相同;

00:协议标识(TP-PID) 是普通GSM类型,点到点方式

08:短信内容编码格式(00:7bit 数据编码默认字符集;F6:8bit数据编码Class1; 08:USC2(16bit)双字节字符集);

A7:短信有效期(TP-VP)5分钟(数值越大有效期越长);

08:短信内容长度;

670951654FB5FF01:短信的内容代码,转换为汉字意思为“有入侵!”。

 

发送完上面的完整代码后,需要发送“Ctrl+Z”,其ASCII码值为26,转换为16进制代码为:1A。

 

需要注意的是:

全部命令中有两个长度,第一个长度是“AT+CMGS=XX”中的“XX”,“XX”的长度为短信中心号码后面所有字节的长度除以2,即XX=(sizeof("11000D91685141399593F10008A708670951654FB5FF01")-1)/2,因为sizeof会计算结束符'\0',所以要 sizeof()-1。第二个长度即是短信内容的代码长度,即(sizeof("670951654FB5FF01")-1)/2,将此长度转换为16进制代码即为08。

如果XX的长度和后面实际代码的长度不符合的话,TC35是拒绝发送短消息的。

需要发送的完整命令如下:

"AT+CMGF=0\r\n"

"AT+CMGS=23\r\n"

"0891683108402705F011000D91685141399593F10008A708670951654FB5FF01"

"1A"    此行以16进制发送

以上命令时写在函数中发送的完整字节,不包含引号。在串口调试助手或者超级终端上来发送的话,"\r\n"可以直接回车,可以调成16进制看一下,"\r\n"为"0D 0A"。

切记后两行不可以加回车符,在串口调试助手中写完,第三行直接点“发送”,第四行把“十六进制”勾上,然后发送。稍等3-4s即可返回发送成功的信息。

 

 

原创粉丝点击