[返回首页]
 ◎ 您当前的位置:首页 >> 软件学堂 >> 分类教程 >> 其他软件 >> 正文
一步一步搞定手机串口短信收发

选择自 DooDu 的 Blog 今天终于把手机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
30 30 33 38 22 0D                                 ****". '呵呵,屏蔽~  


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(杜霖)亲笔,转请通知~~

[返回上一页] [打 印]
上一篇文章:模拟器大观 | 下一篇文章:在windows 2003下安装 webeasymail
最新文章 热点文章 相关信息
·将PDF文件转换为TXT文件
·手机秘籍连载
·各领域下最好的一些免费软件(翻译)
·虚拟个200X的光驱让游戏玩的更畅快
·用Maxthon Access远程登录电脑
·专题:光盘刻录全接触
·减少eMule(电骡)所占用的系统资源
·金山词霸2003新增功能及使用技巧
·网管必备软件:提高网络传输质量的Sn
·QQ趣味集合
·健康优先 给键盘做个专业的体检
·模拟器大观