PC机与TC35i通信使用说明<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
本实验中使用串口调试助手V2.2作为串口通信工具,上电前请先插好SIM卡,使用的SIM卡最好不需要输入PIN码就能直接使用,然后接好串口数据线。
TC35 具有自动识别串行接口速率的能力,但要求速率范围在1200Bps至115200Bps 之间,并且设置为8Bit 数据,无校验,1 位停止位,在调试助手中设置将参数设置好,建议将“自动清空”前的对勾去掉,其他设置一般默认的就可以。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
接上电源,调试助手设置好之后就可以来测试一下我们的TC35i是否能正常使用了,在发送区输入AT,并回车,然后发送,接收区如果返回OK,如上图中所示,则模块工作正常,如果没有反应,首先应检查串口选择是否正确,“十六进制发送”选项前不能打勾,如果要以十六进制发送,则应将AT转换为ASCII码,再转换为十六进制,同时加上回车换行的ASCII码,即“41 54 0D 0A”,当以十六进制发送时,每两个字符之间应以空格隔开,其他命令发送格式类似。上图中接收区的AT是当前命令的回显,当命令执行出现错误时我们可以返回检查命令输入是否有无,可用ATE命令将其关闭。
接下来先来使用一下有关语音电话的命令。在使用与GSM网络有关的命令之前应确保模块所处位置有网络信号,然后要等开机几秒钟之后再执行有关命令。
首先输入AT+CLIP=1并发送,如果您的模块中的SIM有来电显示功能,那么当有电话拨入时会显示来电号码。接着我们可以用手机拨打模块中的手机号码,此时观察模块上的LED灯会不停的闪,说明已经接收到信号,同时串口助手接收区显示如下
RING
+CLIP: "15948020629",129,,,,0
如果要拒绝此电话可以使用ATH挂断。
然后在测试一下拨打电话,例如要拨打15948020629 这个号码,则输入命令应为
ATD15948020629;
注意末尾一定要加分号,不加分号则成了数据拨号,此时等待几秒如果一切正常的话被呼叫手机应该能接收到信号。如果要取消呼叫可以把刚才的命令再发送一次,或者使用ATH,这时接收区会显示NO CARRIER(没有载波)如果要如果没有收到信号应检查天线连接是否无误,拨打号码是否正确,还可以用AT+CSQ命令检测网络信号强度。
接下来介绍如何发送短信,这也是我们使用无线模块最多的功能。
TC35 提供Text 和PDU(Protocol Data Unit)两种模式来处理短信,Text模式下只能发送ASCII码表中的前128个字符,也就是英文字母,英文标点符号,阿拉伯数字等,而PDU模式中英文都能发送,中文标点符号也必须使用PDU模式处理。由于Text模式比较简单,我们先来介绍如何发送和接收Text模式短信。
先对模块SMS进行一些初始设置,AT+CMGF=1设置为Text模式,AT+CSMP=17,167,0,0设置Text模式参数,AT+CSCS=GSM设置GSM字符集,接下来发送一条短信,例如要往15948020629这个号码发送一条短信,输入命令AT+CMGS=15948020629 并回车,返回
>
接着输入短信内容,输入完毕后以->结尾,这个字符是ASCII码中的026,一个控制字符,在这里作为结束标志,测试时可以在正常短信内容输入完毕后先点发送,再以十六进制方式输入1A,1A也就是16进制的026,再点发送,这时接收区就会显示这个符号,以后再需要这个符号时可以直接粘贴使用。如果返回OK就说明短信发送成功。需要注意的是,虽然有短信息服务中心号码设置的命令,不过一般不需要我们设置的,可以使用AT+CSCA?来查询服务中心号码。
下面来往模块中发送一条短信,注意犹豫此时是Text模式,所以发送内容应为英文内容,包括数字,英文标点。发送短信前执行
AT+CNMI=2,1
此命令的作用是当有新的短信时给予提醒并显示存储位置,同时还会将信息存储到默认的内存位置。例如发送信息的手机为15948020629,信息到达后接收区显示
+CMTI: "ME",22
我们可以使用AT+CMGR=22来将其读出,接收区显示
+CMGR: "REC UNREAD","15948020629",,"<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />08/03/25,09:51:01+32"
ADG123456
OK
其中ADG123456为短信内容,REC UNREAD 表示这条短信未读,以后再读取这条短信时将变为REC READ,接收时间时间,短信号码等信息皆显示在第一行里。
下面我们再来介绍如何发送和接收中文短信,由于中文短信采用的是unicode编码,所以只能以PDU模式发送和读取中文,故先将模式设置为PDU模式,所用指令为AT+CMGF=0
再发送AT+CSMP=17,167,0,8,这条命令的最后一位8的作用是将数据编码类型设置为unicode编码,例如我们要发送的内容为“测试第一条中文短信”先使用unicode转换工具将其转换为
“测试第一条中文短信”
在输入短信内容时应把“&#x ; ”去掉,下面我们就来发送这条短信,发送PDU模式的短信首先跟Text模式不同的地方是,Text模式时在AT+CMGS后输入接收短信的号码,而PDU模式时AT+CMGS后输入的是短信的长度。
下面发送AT+CMGS=33,接着出现 > 符号后输入短信内容
0891683110901105F011000D91685149080226F9000800126D4B8BD57B2C4E0067614E2D658777ED4FE1
并以->结束,然后再发送。这里需要注意几个地方:1.AT+CMGS后的短信内容长度是从上面的1100D算起的,也就是说开始的蓝色部分不能计入;2.蓝色部分08代表短信服务中心的地址长度,91是短信息中心号码类型,683110901105F0是短信服务中心号码,这个号码是发送方的服务号码,可以使用AT+CSCA查询,这里填写的号码其每两位是位置颠倒的,由于电话号码位奇数(11), 因此加入F 来保证8位,所以实际号码为8613010911500F;3.接下来的11是文件头字节,具体含义可以查找相关资料,一般设置为11即可,00为信息类型,0D为被叫号码长度,91685149080226F9为被叫号码,同样经过移位处理,紧接着的00是协议标识,08是数据编码方案,中文选择08,英文为00,再接着的00是有效期,跟普通手机上的选择有效期作用一样,然后的12是数据长度,这个12是十六进制的,它表示实际短信内容长度,后面的蓝色部分即实际短信内容,当编写好以后就可以加上发送了;4.还有一个问题,当我们输入AT+CMGS=33后如果短时间内没有输入短信内容,模块会返回一个ERROR,这时需要重新输入此命令。
接下来再用刚才接收短信的手机向模块中发送一条中文短信,内容仍为“测试第一条中文短信”,当有提示后读取短信
0891683110901105F0240BA15149080226F9000880305281022423126D4B8BD57B2C4E0067614E2D658777ED4FE1
可将这条短信和上一条接收到的短信比较一下,前面的蓝色部分上一条短信一样,不过这次这个号码是作为接收短信的服务中心号码,红色部分为时间邮戳,其余的部分跟上一条短信的结构一样。
下面再介绍几个常用的命令:
AT&W 保存已改设置,某些系统默认设置可能每次开机都需要更改,因此最好直接将其设置为默认参数
AT^SMSO 关闭模块
AT+CPIN 输入PIN码,可能会需要
AT&F 恢复出厂设置
ATZ 软复位
另附有关AT命令的说明
1. 在TC35 所支持命令集中根据命令名称可简单分为:
“ATxx”及少量”AT+xxx”为V.25 标准命令集;
“AT+Cxxx”为GSM 标准所扩展的AT 命令;
“AT^Sxxx”为SIEMENS 定义扩展的AT 命令。
2. 命令形式:
“AT+Cxxx=?”为测试命令(Test Command),执行此种命令将返回此命令所支持的参数及参数范围;
“AT+Cxxx?”为读命令(Read Command),执行此种命令将返回此命令当前的参数值;
“AT+Cxxx=<…>”为写命令(Write Command),执行此种命令将设置此命令的参数值;
“AT+Cxxx”为无参数的执行命令(Execution Command)。
3. 命令的返回形式:
<CR><LF>Response<CR><LF>
在本文数据实录中未将<CR><LF>显式地打印出来,但切记TC35 回送时含有这些
字符,这对于编写程序来比对TC35 回送值以确定TC35 工作是否正常非常重要。
在常见的资料中:
<CR> 代表ASCII 中回车字符,值为0x0D;
<LF> 代表ASCII 中换行字符,值为0x0A;
<SP> 代表ASCII 中空格字符,值为0x20;
<CTRL+Z> 代表ASCII 中文件结束字符,值为0x1A;
最后简要说明一下短消息类(class)的概念:根据指定储存的位置,短消息分为class 0 – 3四个类。也可以不指定类(no class),由ME 按默认设置进行处理,存储到内存或者SIM卡中。在TPDU的TP-DCS字节中,当bit7-bit4为00x1, 01x1, 1111时,bit1 -bit0指出消息所属类:
00 – class 0:只显示,不储存
01 – class 1:储存在ME内存中
02 – class 2:储存在SIM卡中
03 – class 3:直接传输到TE
GSM Modem一般都支持一条“AT+CNMI”指令,可用于设定当有某类短消息到达时,如何处置它:只储存在指定的内存(易失的/非易失的)中,先储存后通知TE,还是直接转发到TE,等等。“AT+CNMI”指令语法为
AT+CNMI=[[,[,[,[,]]]]]
mode - 通知方式:
0 – 不通知TE。
1 – 只在数据线空闲的情况下,通知TE;否则不通知TE。
2 – 通知TE。在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。
3 – 通知TE。在数据线被占用的情况下,通知混合在数据中一起传输。
mt - 消息储存或直接转发到TE:
0 – 储存到默认的内存位置(包括class 3)
1 – 储存到默认的内存位置,并且向TE发出通知(包括class 3)
2 – 对于class 2,储存到SIM卡,并且向TE发出通知;对于其它class,直接将消息转发到 TE
3 – 对于class 3,直接将消息转发到 TE;对于其它class,同mt=1
bm, ds, bfr的含义,请参考相关标准文档。一般不需要去关心它们。
在程序中具体实现时,使用mode=2, mt="1",比较简单。
文章评论(0条评论)
登录后参与讨论