SIM900发送中文短信的处理过程
1、短信中心号码处理:
短信中心号码可以使用AT+CSCA?获取。
在获取之前,最好将设置使用GSM字符:
AT+CSCS="GSM"
OK
AT+CSCA?
+CSCA: "+8613800755500",145
OK
这样一来,我就得到短信中心号码“+8613800755500”。去掉“+”后为“8613800755500”,再看看“8613800755500”数据长度是不是奇数,若是奇数,则在末尾添加“F”。由于“8613800755500”的数据长度是13,所以就变为“8613800755500F”。接着,将奇数位置和偶数位置交换,变为“683108705505F0”。在“683108705505F0”前面添加“91”,表示“国际”,现在我们得到“91683108705505F0”,计算“91683108705505F0”的数据长度为16,除以2得到“08”的16进制字符串,现在我们得到“0891683108705505F0”。
2、手机号码处理:
假定接收短信的手机号码为“+861366265ABCD”。 去掉“+”后为“861366265ABCD”,记住手机长度为13,不算“+”号,转为16进制字符串为“0D”,若“861366265ABCD”的数据长度为奇数,则在末尾添加“F”。由于“861366265ABCD”的数据长度是13,所以就变为“861366265ABCDF”。接着,将奇数位置和偶数位置交换,变为“68316662A5CBFD”。在“68316662A5CBFD”前面添加“91”,表示“手机”,现在我们得到“9168316662A5CBFD”。在“9168316662A5CBFD”的前面添加16进制字符串为“0D”,这是电话号码去掉“+”后的长度。这样我们得到“0D9168316662A5CBFD”,接着在“0D9168316662A5CBFD”的前面添加“1100”字符串。这样我们得到“11000D9168316662A5CBFD”。在“11000D9168316662A5CBFD”末尾添加“000800”字符串,这样我们得到“11000D9168316662A5CBFD000800”。
3、短信内容处理:
假定短信内容是个“你”字,对应内码为“4F60”,计算短信内容的长度为4,将短信内容的长度除以2,得到16进制的字符串为“02”,将它添加到“11000D9168316662A5CBFD000800”末尾,就变为“11000D9168316662A5CBFD00080002”,在“11000D9168316662A5CBFD00080002”添加短信的内容,就变为“11000D9168316662A5CBFD000800024F60”。
4、发送的数据长度处理:
计算“11000D9168316662A5CBFD000800024F60”的数据长度为34,将该数据长度除以2,就是17,转换为10进制的自符串就是“017”。
发送的数据:
0891683108705505F011000D9168316662A5CBFD000800024F60
AT+CMGF=0\r 设置为中文发送。
OK
AT+CMGS=017\r
>
0891683108705505F011000D9168316662A5CBFD000800024F60
+CMGS: 8
OK
手机为1366265ABCD的号码会收到一个中文“你”字。
AT+CMGF=1\r 设置为英文发送
OK
AT+CMGS=\"+861366265ABCD\"\r
>
4F60
+CMGS: 11
OK
手机为1366265ABCD的号码会收到一个英文“4F60”字符串。
以上的方法,都经过实验,是可行的.