一步一步搞定手机串口短信收发

一步一步搞定手机串口短信收发~

今天终于把手机AT指令搞定了~~

拿老妈的手机大显的,一个同步线,串口的,还有同步软件。

网上不少关于串口短信收发的文章,但因为AT指令的灵活性,各个手机厂家都做了“继承”和“派生”,因此需要自己研究针对自己手机的 AT指令。

说到得到自己手机的AT指令,我花了不少心思,先是拿Win32DASM打开看同步软件里面的字符串资源,hoho,发现很全的AT指令,可是实现短信收发需要哪些呢?拿标准的AT指令表一看,还好,几乎没怎么变,不过有几个确实不一样。后来发现总是出问题,于是,我拿出了:Serial Monitor,这个真好用啊,监听别的软件的串口通信,监听一大通:

Port opened by process "PCSync_v1.1_Daxian.exe" (PID: 1864)


Request: 2005-6-16 13:01:09.422575464


41 54 2B 43 50 41 53 0D                           AT+CPAS.       


Answer: 2005-6-16 13:01:09.422575464 (+0.0000000000 seconds)


2B 43 50 41 53 3A 20 30 0D 0A 30 0D               +CPAS: 0..0.   


Request: 2005-6-16 13:01:09.922588264 (+0.5000128000 seconds)


41 54 45 30 3B 56 30 0D                           ATE0;V0.       


Answer: 2005-6-16 13:01:09.031966064 (+0.1093778000 seconds)


30 0D                                             0.             


Request: 2005-6-16 13:01:09.031966064 (+0.0000000000 seconds)


41 54 51 30 3B 53 33 31 33 3B 53 34 31 30 3B 58   ATQ0;S313;S410;X
34 3B 26 43 31 3B 26 44 30 3B 2B 43 4D 45 45 3D   4;&C1;&D0;+CMEE=
31 0D                                             1.             


Answer: 2005-6-16 13:01:09.125718464 (+0.0937524000 seconds)


30 0D                                             0.             


Request: 2005-6-16 13:01:09.876070464 (+13.7503520000 seconds)


41 54 2B 57 53 45 53 3F 0D                        AT+WSES?.      


Answer: 2005-6-16 13:01:09.969822864 (+0.0937524000 seconds)


2B 57 53 45 53 3A 20 30 0D 0A 30 0D               +WSES: 0..0.   


Request: 2005-6-16 13:01:09.969822864 (+0.0000000000 seconds)


41 54 2B 57 53 45 53 3D 31 0D                     AT+WSES=1.     


Answer: 2005-6-16 13:01:09.266705464 (+0.2968826000 seconds)


30 0D                                             0.             

上面的是初始化的AT指令,里面有指令显示形式的改变,打开手机终端界面等。

然后我拿同步软件发了个短信,监听如下:

Request: 2005-6-16 13:01:10.986805064 (+0.0000000000 seconds)

41 54 2B 57 53 45 53 3D 31 0D                     AT+WSES=1.     


Answer: 2005-6-16 13:01:10.299313064 (+0.3125080000 seconds)


30 0D                                             0.             


Request: 2005-6-16 13:01:10.299313064 (+0.0000000000 seconds)


41 54 2B 43 4D 47 46 3D 31 0D                     AT+CMGF=1.     


Answer: 2005-6-16 13:01:10.393065464 (+0.0937524000 seconds)


30 0D                                             0.             


Request: 2005-6-16 13:01:10.393065464 (+0.0000000000 seconds)


41 54 2B 43 53 4D 50 3D 31 37 2C 31 36 37 2C 30   AT+CSMP=17,167,0
2C 38 0D                                          ,8.            


Answer: 2005-6-16 13:01:10.502443264 (+0.1093778000 seconds)


30 0D                                             0.             


Request: 2005-6-16 13:01:10.502443264 (+0.0000000000 seconds)


41 54 2B 43 4D 47 53 3D 22 31 33 38 33 32 37 31   AT+CMGS="1383271
** ** ** ** ** **                                 ****". '呵呵,屏蔽~  


Answer: 2005-6-16 13:01:10.596195664 (+0.0937524000 seconds)


0D 0A 3E 20                                       ..>            


Request: 2005-6-16 13:01:10.596195664 (+0.0000000000 seconds)


35 42 39 45 39 41 38 43 36 32 34 42 36 37 33 41   5B9E9A8C624B673A
46 46 30 43 34 46 36 30 35 37 32 38 35 45 37 32   FF0C4F6057285E72
34 45 34 38 46 46 31 46 1A                        4E48FF1F.     

这一堆就是短信GSM7位编码的内容了,网上很多,不再赘述。 这个手机省了PDU,大概是在手机里生成吧?方便多了,呵呵

看,最后的1A,这个让我头痛了很长时间,开始总是发不出去,后来才发现少了1A,1A是终止符!

Answer: 2005-6-16 13:01:10.518171064 (+3.9219754000 seconds)


2B 43 4D 47 53 3A 20 31 30 0D 0A 30 0D            +CMGS: 10..0.  


Request: 2005-6-16 13:01:10.518171064 (+0.0000000000 seconds)


41 54 2B 57 53 45 53 3F 0D 41 54 2B 57 53 45 53   AT+WSES?.AT+WSES
3D 30 0D                                          =0.            


Answer: 2005-6-16 13:01:10.627548864 (+0.1093778000 seconds)


2B 57 53 45 53 3A 20 31 0D 0A 30 0D 30 0D         +WSES: 1..0.0. 

以上就是短信发送的整个过程,可同步软件还没有短信接收的功能,自己查了查AT表,找到了:

当有新的短消息到来时,产生提示,使用“AT+CNMI”。该指令的用法:

AT+CNMI=1


如果有新的短消息来到,则手机自动返回下列提示:


+CMTI: “SM”, <index>


此时读出<index>,然后用“AT+CMGR=<index>”指令即可读出短消息内容。


最后再说下vb的串口通信,开始我用的oncome事件,可发现很难用,数据总是有问题,后来改了直接读,方便多了,至于产生新消息的中断,用timer控件就可以了。还有点最重要的,所有指令都有回车符的!也就是vb的VbCr,否则会出错的~~还有,我的波特率是115200,低了也是不通的。

读出来了,剩下的就是字符串处理了,只要注意回来的字符中也有回车符,就可以了。

闲的无聊,又监听了通讯簿,图片上传的功能,都很简单。后来突发奇想,能不能收发彩信呢?难度:1电脑端彩信的制作;2手机商没这个接口指令!后来听说用windows mobile能实现,哎。。又是m$..

Doodu(杜霖)亲笔,转请通知~~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值