当利用短消息方式进行远程监控时,可节省大量人力物力……,而且有时候还比使用网络方便可靠! 因此仍然被许多应用场合使用. 这里一个很小但又很关键的问题:就是目前推广介绍的做法,都是在代码里设置好了短信中心号码, 如果需要更换不同属地的手机卡,因为短信中心号码不同,就不能发出短信了! 更換全国任意各个不同属地的号卡时,如果可以随时自动获得当地的短信中心号码,就会非常方便! 这里就介绍一下, 如何自动获得当地的短信中心号码?—— 介绍一下单片机是如何去做到这点的!
首先说明:尽管有消息说,联通,移动,电信都会去掉一些2G或3G的服务,但是,经过实践,尽管发现原来的一些3G手机或平板不能上网了! 但是,短信收发是照样正常的!
控制操作手机卡,会使用到 AT 指令,有一条专门查询当前手机卡的短信中心号码的指令: AT+CSCA ! 我们就利用它去获得短信中心号码.
首先发送这条指令: AT+CSCA?
很快就会收到返回的有关消息,如下:
41 54 2B 43 53 43 41 3F 0D 0D 0A 2B 43 53 (14)
43 41 3A 20 22 2B 38 36 31 33 30 31 30 32 (14)
30 30 35 30 30 22 2C 31 34 35 0D 0A 0D 0A (14)
4F 4B 0D 0A (4)
这里全部是 ASCII 码,整理后就是:
+CSCA: "+8613010200500",145 ;注: 属地广州
OK
得到的中心号码: 13010200500 ;11位
按照要求,最后要加一个 F ,凑够 12 位! 得到: 13010200500F ;12位
在前面加上 86 变成: 8613010200500F
每2位反转位置,变成: 683110200005F0
按照要求,再在前面添加 0891
变成: 0891683110200005F0 ;这就是发送短信时需要使用到的短信中心号码! --- 注意: 这个 0891683110200005F0 全部都要转为 ASCII 码,才可以使用!
为了直观,放上参考图片:
|