总结一下:这是第二次拿到串口工具调试。第一次的时候测试怎么使用工具,代码什么早就写好了,一直卡在Ctrl+z如何结束。昨晚测试时从拨号成功,到txt模式成功。最后也是最重要的pdu成功了。pdu模式中编写代码时需要用到将汉字转换成unicode码,下面提供的链接中说用软件,但是使用程序就不可能说使用软件了(当然我这里说的不是直接用串口输入AT指令的)。由于是帮别人做的,不方便公布代码。

以下均采用十六进制输入,但并非所有指令都要求这样。这里只是为了易于编写程序。统一规范一些。

主要分为两种模式:TXT和PDU。

这里我主要讲解一下学习过程中所遇到的问题:CTRL+Z?怎么处理?这个问题主要出在pdu模式中,输入指令如果结束。网上很多论坛都说过0x1A,0x0D;答案是对的,但是都没有讲清楚。

例如就像下面这种情况(?雪梨蓝串口调试助手v1.2.0 Beta),在这个软件下,我们发现非十六进制的情况下显示了?向右的小箭头,没错,这个就是(ctrl+z)。但是我们测试的时候使用例如友善串口助手会发现十六进制虽然有值,但是ascii码情况下显示为空(虽然它占用了一个空格)。

TXT主要适用于无汉字(其中AT+CSCS =”xx”,xx根据串口卡填写(这里我的是移动卡),AT+CMGS填写的是用户号码)

//txt(这里采用的是16进制读入,CR为0D 0A,ctrl +z )
//AT+CMGF=1(CR)
41 54 2B 43 4D 47 46 3D 31 0D 0A 
//AT+CSCS="GSM"(CR)
41 54 2B 43 53 43 53 3D 22 47 53 4D 22 0D 0A 
//AT+CMGS="15801408665"(CR)
41 54 2B 43 4D 47 53 3D 22 31 35 38 30 31 34 30 38 36 36 35 22 1A  
//HELLO(Ctrl+Z)
68 65 6C 6C 6F 1A

PDU则适用于存在汉字

PDU编码过程网上讲解比较详细。推荐下面这篇

实际使用的讲解

PDU发送短信及接受功能等各部分功能及其选项详细讲解

同上讲解,使用十六进制读入:
Input://AT+CMGF=0 <CR>
41 54 2B 43 4D 47 46 3D 30 0D 0A 
Output:OK
Inputs://AT+CMGS=25<CR>
41 54 2B 43 4D 47 53 3D 32 35 0D 0A 
> //addr+phone <Ctrl+Z>
3039393136383638333130383230303030354630313130303044393136383638333130363432333334364639303030383030304135444535344635433631303935464542464630311A

(注:这里为了讲解,编码内容都是上文作者的信息中心及用户号码。请在编码过程中改成自己的测试)

拨号(其他指令参考手册)

//ATD10086;(CR)
41 54 44 31 30 30 38 36 3B 0D 0A