simcom2G模块使用

一、sim800c的使用

使用到的功能包括:GSM短信收发,GPRS数据传输,TCP/IP协议数据传输,LBS信息的定位,http的java接口调用,FTP的无线升级,模块BT的串口协议传输。主要是网络传输方面的使用,其对模块的外围器件的使用倒是涉及不多。

1、短信接收发功能指令:

“AT+CMGF=1\r” //配置短信形式
“AT+CMGL=\”ALL\”\r” //读取所有短信
“AT+CSCS=\”GSM\”\r” //进行CSCS设置
“AT+CMGS=” //后面添加信息中心短信号码
“AT+CMGD=” //进行短信删除
C语言书写解释:
@1、每一个AT指令后面都要以\r或者是\r\n结束。这是AT标准AT指令集
里面规定的,没有什么疑问。
@2、AT指令后面如果是要跟字符串的东西,例如AT+CSCS=”GSM”,这句指
令,因为我们发过去给simcom模块的是字符串,最后传入的形式是:“AT+CSCS=”GSM””,因为里面有多个字符串标识(“”),导致模块识别不了,然而里面的字符串不是真的字符串结束标识符,而是我们实际要传入的值,所以我们要把这个标识符转义成字符就可以,让其不代表其他意思,加上\转义字符就可以了例如上面:”AT+CSCS=\”GSM\”\r”。
@3、AT+CMGF=mode:
mode:
0 PDU模式
1 TXT文本模式(经常用的)
@4、AT+CMGL=”ALL”
标识列出所有的信息,包括已读和未读的。或者是
AT+CMGL=“REC UNREAD”
会列举出所有未读的消息
AT+CMGL=“REC READ”
会列举出已读的消息。
后面列举的形式:包括短信状态(已读 未读),短信Num,消息发送方号码,消息发送时间,最后面就是紧跟着信息的内容了。
@5、AT+CSCS=”GSM”
设置信息服务发送模块,其实这个可以不设置也可以发送,默认的就是这个模式。
@6、AT+CMGS= 号码
这个命令执行完之后,就像其他传输一样会出现一个‘>’符号,后面就是你要写入的信息内容。注意这个结束有点奇怪。要在短信内容后面添加0x1A 0x1D才可以结束。对应的是Ctrl+Z的按键的ASCII码。如果不加的话,短信是永远不会结束的。
@7、AT+CMGD=NUM
NUM:就是短信的序列号,当短消息发过来,其短信的序列号就固定了,短信息对应的序列号不会随着你删除一条短信,其他短信息序列号随着改动。
@8、AT+CMGR=NUM
NUM:同上,就是短信息的序列号,固定读取这个序列号的短信内容。
以上的用法利用好了,足矣做一个短信收发的小功能了。前提要把GSM基本的功能配齐全,例如AT+CFUN=1,AT+CREG=1检测GSM入网成功才可以,其他标准用法就不一一说了,看看AT指令集应该都会用了。

2、GPRS数据传输

这个数据2G的数据流量功能,与GSM网络还不一样,大家千万不要认为这2个东西走的是一个网络通道奥.

“AT+CGATT=1\r”
“AT+CGATT?\r”
@1、AT+CGATT=NUM
NUM:0表示与当前GPRS网络分离,1表示要附着现有检测到的GPRS网络。
@2、AT+CGATT?
表示检测当前的GPRS网络附着状态,成功返回1 失败返回0
当然以上的成功条件是sim卡已经插入,并且射频天线正常,sim卡开通了数据流量,否则会无法附着GPRS网络奥。
当然上面的一步就是为了下面的TCP/IP服务做准备的。

3、TCP/IP数据流量传输服务

模块已经内置了TCP/IP协议栈,很强大
“AT+CSTT=\”” //设置APN账号,用户名,密码(后面如果说sim卡没有设置用户和密码就不需要填写)
“AT+CIICR\r” //唤醒无线连接 进行连接用GPRS或者CSD
“AT+CIFSR\r” //获取联网后 本地分配的IP地址
“AT+CIPQSEND=0\r” //设置发送数据的返回形式
“AT+CMUX=0\r” //说明是基础模式 没有进行复用
“AT+CIPHEAD=0\r” //去除IP头 内容
“AT+SAPBR=3,1,\”Contype\”,\”GPRS\”\r”//基于IP的应用程序的承载设置
“AT+SAPBR=3,1,\”APN\”,\”” //设置网络承载的APN服务
“AT+CIPSTART=\”TCP\”,\”” //进行网络传输服务的选择
“AT+CIPSEND=length” //进行数据的传输写入
“AT+CIPCLOSE=1\r ” //关闭TCP/IP连接通道
以上顺序不要有颠倒,否则其中配置会报错。
@1、AT+CSTT=
这个是来配置sim卡运营商的APN账号,用户名和密码
如果用户名和密码没有设置可以不用写,只写一个APN就可以
@2、AT+CIICR
这个是开启无线射频模块的指令。
@3、AT+CIFSR
这个是在进行入网后,根据运营商网络获取基站分配给终端的IP地址。
@4、AT+CIPQSEND=mode
mode: 0 返回形式是 send ok .
1 返回形式是 send ok accept
@5、AT+CMUX=NUM
NUM: 这个是设置串口复用还是不复用,
0:串口不复用 只是模块的基本功能
1 : 串口复用,协议遵循GSM0710协议,详见协议描述,下篇讲解。
@6、AT+CIPHEAD=0
去除IP头显示,设置为1,会显示发送方的IP地址信息。
@7、AT+SAPBR=3,1,”Contype”,”GPRS”
设置无线连接数据的承载形式,为GPRS,也可以设置成CSD,但一般设置都是GPRS.
@7、AT+SAPBR=3,1,”APN”,“运营商的APN名称”
这一步很关键,这是你的数据最终是由哪家运营商接入的公网设置。例如:移动2G:CMMTM/CMNET/CMIOT等,联通2G:UNINET UNWAP等,沃达丰网络2G例如:internet.gdsp/ppinternetd.gdsp/spe.inetd3.gdsp.当然这个沃达丰是国际运营商,世界好多国家也都有支持和合作,再进行国际业务开拓时候,这个APN是一定要修改的,要根据使用的沃达丰的sim卡类型来修改。APN有沃达丰人员提供。
@8、”AT+CIPSTART=”TCP”,”IP地址”
这个就是描述了我们终端模块使用的是什么协议,还有要连接的服务端的IP地址,也可以是域名。里面继承了DNS服务,可以转换的。
支持填写UDP/TCP.
@9、AT+CIPSEND=length
这个命令是描述你要本次发向服务器的数据量多少,以字节为单位。
等这条命令执行完成之后,会出现‘>’这个符号,等你输入的字符数据长度等于你上一步要发送的数据长度时候,他会自动进行发送,不用加任何的结束标志符,不想短信一样还要加0x1A 0x1D这样的结束符。
@10、AT+CIPCLOSE=1
数据发送成功之后,模块会返回senk ok标识。
这时候如果没有更多的数据发送这时候可以使用上面的指令进行通道断开连接。
以上步骤最好不要有顺序颠倒,按照配置一步步来最后可以实现与服务器端的收发功能。

4、LBS基站定位

@1、AT+CENG?
这个指令就是获取周边基站的信息,要想定位准确的话,最好是获取三个基站信息数据,因为三点定位就是这个原理。画圆圈就可以了,精确度在20m—-500m之间,这个要看定位时候的信号强度。
获取基站返回信息包括:
mcc:移动用户所属的国家代码,默认值460
mnc:移动网号,0:中国移动 1:中国联通
lac:位置区域码 , 取值范围: 0-65535
cellid:基站小区编号 基站小区编号 ,取值范围: 取值范围: 取值范围: 0-65535 ,0-268435455 ,其中 ,其中 0,65535,268435455 不使用, 小区编号大于 65535 时为 3G 基站。
signal(rssi):信号强度 , 取值范围: 0到-113dbm. 113dbm.
(如获得信号强度为正数,则请按照以下公式 获得信号强度为正数,则请按照以下公式 进行转换: 获得的正信号强度 * 2 * 2 – 113 )
这些信息的作用就是为了要调用某个地图来用的,为了获取出来地理位置信息。就拿高德地图来说。
调用的http接口:
http://apilocate.amap.com/position?accesstype=0&imei=866104021101384&cdma=0&bts=460,0,6324,33427,-56&nearbts=460,0,6324,33427,-56|460,0,6324,33427,-56&output=json&key=key
返回的结果就是经纬度信息。

当然这个模块也有直接获取的经纬读信息的AT指令集。例如:
AT+CIPGSMLOC=1,1
这个返回值就是经纬度信息。
AT+CIPGSMLOC=2,1
这个就是返回的是调用正常与否和时间。

5、http协议调用

AT+HTTPINIT ————————–>初始化HTTP 服务
AT+HTTPTERM ————————->结束HTTP 服务
AT+HTTPPARA ————————->设置HTTP 参数值
AT+HTTPDATA ————————->HTTP 写数据
AT+HTTPACTION ———————->HTTP 方式激活
AT+HTTPREAD ————————->查询HTTP 服务响应
AT+HTTPSCONT ———————–>保存HTTP 应用上下文
AT+HTTPSTATUS ———————->读取HTTP 状态
@1:AT+HTTPINIT
初始化HTTP服务,后面不用加参数 正常返回OK
@2:AT+HTTPTERM
结束http服务,后面不用加参数,正常返回OK
@3:AT+HTTPPARA
设置HTTP回话参数,这个要进行设置2次,第一次是CID的设置,后面是目的地的URL
例如:
AT+HTTPPARA = “CID”,1
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
@4:AT+HTTPACTION=MODE
MODE=0时候
后面就是get的用法
AT+HTTPACTION=0 ———-> GET 会话开始
OK
+HTTPACTION: 0,200,1000 ————–>GET 成功
这个是获取到的数据还没有进行串口输出,要主动使用命令才可以输出。
AT+HTTPREAD ———–>读取服务器的数据向串口输出。
+HTTPREAD: 1000
…. ———->向串口输出数据
OK
在这一步进行解析就可以了,注意的是如果MCU的处理数据的速度不够快的话,可能数存在数据丢失的危险,,因为最好是使用数据中断的形式,否则数据接收会影响总的数据服务进行。
AT+HTTPTERM ————–>结束HTTP 服务
OK
@5:AT+HTTPACTION=1
post的用法
AT+HTTPINIT ————————————–>初始化HTTP 服务
OK
AT+HTTPPARA = “CID”,1———————>设置HTTP 会话参数
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
AT+HTTPDATA=100,10000 ——————–>这个是进行数据缓存到模块中
DOWNLOAD
……
OK
上传 100 字节数据,输入数据的等待时间为10000 毫秒。等待时间必须设置得足够
长,以使所有数据都能下载到模块中。准备从UART 接收数据,DCD 引脚拉低。
所有数据接收完毕,DCD 引脚拉高。
AT+HTTPACTION=1 —————>执行完这一步才开始进行传输
OK ———————–>POST 会话开始
+HTTPACTION: 1,200,0 —————————–>POST 成功
AT+HTTPTERM ———————–>关闭服务
OK
结束HTTP 服务
@6:AT+HTTPACTION=2
从http服务器获取http头信息
AT+HTTPINIT ————————–>初始化HTTP 服务
OK
AT+HTTPPARA = “CID”,1 ——————>设置HTTP 会话参数
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
AT+HTTPACTION=2——————————>HEAD 会话开始
OK
+HTTPACTION: 2,200,0 ——————–>HEAD 成功
AT+HTTPTERM———————————>结束http服务
OK
@7:进行http服务器代理
AT+HTTPINIT
OK
初始化HTTP 服务
AT+HTTPPARA = “CID”,1
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
设置HTTP 会话参数
AT+HTTPPARA=“PROIP”,”10.0.0.172”
OK
设置代理服务器IP 地址
AT+HTTPPARA = “PROPORT”,80
OK
设置代理服务器端口号
AT+HTTPACTION=0
OK
GET 会话开始
+HTTPACTION: 0,200,1000 GET 成功
AT+HTTPREAD
+HTTPREAD: 1000
….
OK
读取 HTTP 服务器的数据
向 UART 口输出数据
AT+HTTPTERM
OK
结束HTTP 服务
@8:进行http断点续传
AT+HTTPINIT
OK
初始化HTTP 服务
AT+HTTPPARA = “CID”,1
OK
设置HTTP 会话参数
AT+HTTPPARA =“URL”,”http://www.sim.com/img/sim_logo_jr_1003_38.gif
OK
设置 URL, gif 图片的大小是16384 bytes
AT+HTTPPARA = “BREAK”,2000
OK
设置断点
AT+HTTPACTION=0
OK
GET 会话开始, 获取从 2000 到16384 的
数据
+HTTPACTION: 0, 200,14384 GET 成功
AT+HTTPREAD
+HTTPREAD: 14384
….
OK
读取HTTP 服务器的数据
向 UART 口输出数据
AT+HTTPTERM
OK
@9:获取HTTP状态
AT+HTTPINIT
OK
初始化HTTP 服务
AT+HTTPPARA =“CID”,1
OK
设置HTTP 会话参数
AT+HTTPPARA =“URL”,“www.baidu.com”
OK
AT+HTTPACTION = 0
OK
GET 会话开始
AT+HTTPSTATUS?
+HTTPSTATUS: GET,1,1440,7915
OK
“获取”会话的状态为进行中
+HTTPACTION: 0, 200,9335 GET 成功
AT+HTTPSTATUS?
+HTTPSTATUS: GET,0,0,0
OK
“获取”会话的状态为已完成
AT+HTTPACTION = 1
OK
POST 会话开始
AT+HTTPSTATUS?
+HTTPSTATUS: POST,2,1440,608
OK
“上传”会话的状态为进行中
+HTTPACTION: 1,200,0 POST 成功
AT+HTTPSTATUS?
+HTTPSTATUS: POST,0,0,0
OK
“上传”会话的状态为已完成
AT+HTTPTERM
OK
以上是HTTP的用法

6、FTP协议传输

AT+FTPPORT ————————-设置FTP 控制端口
AT+FTPMODE ————————设置FTP 主动或被动模式
AT+FTPTYPE ————————–设置数据传输类型
AT+FTPPUTOPT ———————-设置FTP 输入类型
AT+FTPCID —————————设置FTP 承载文件标识
AT+FTPREST ————————- 设置下载续传
AT+FTPSERV ————————–设置FTP 服务地址
AT+FTPUN —————————设置FTP 用户名
AT+FTPPW —————————-设置FTP 口令
AT+FTPGETNAME ——————-设置下载文件名称
AT+FTPGETPATH ——————–设置下载文件路径
AT+FTPPUTNAME ——————–设置上传文件名称
AT+FTPPUTPATH ——————–设置上传文件路径
AT+FTPGET —————————-设置下载文件
AT+FTPPUT —————————设置上传文件
AT+FTPSCONT ———————-保存FTP 应用上下文
AT+FTPDELE ————————–删除FTP 服务器上的指定文件
AT+FTPSIZE —————————获取FTP 服务器上的指定文件的文件大小
AT+FTPSTATE ————————-获得FTP 状态
AT+FTPEXTPUT ———————–扩展方式上传文件
AT+FTPMKD ————————–在远程计算机上创建目录
AT+FTPRMD ————————–在远程计算机上删除目录
AT+FTPLIST —————————列出远程计算机的目录详情
FTP协议用法在我们终端使用的是为了远程无线升级用的,因为断点续传效率要比http快好多,所以用的是FTP进行的固件下载。并且还有另一个原因,因为FTP有个功能可以读取你设置的大小的字节。这样的话会让mcu有足够的时间进行下载下来的数据进行解密和校验保证数据稳定性。因为http他不可以使用主动读取的数据大小。因为串口使用的中断形式,当模块的USART使用较高的数据波特率时候,MCU会一直进中断,导致正常的业务数据解密和校验执行打断,并且处理很慢,毕竟一直有数据过来。例如我们测试用115200、57600的波特率进行数据的传输,MCU会明显处理不过来。导致许多数据会丢失。只有我们使用得9600的慢速波特率之后,数据的解析和接收才算正常运行。所以我们这个主动获取多少字节数据的功能就完美解决了这个问题。
@1:FTP的Get用法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPGET=1
OK
+FTPGET: 1,1 数据可读
AT+FTPGET=2,1024
+FTPGET: 2,50
01234567890123456789012345678901234
567890123456789
OK
请求读取1024字节,但当前仅50字节可读
AT+FTPGET=2,1024
+FTPGET: 2,0
OK
再次请求读取1024字节。
当前没有数据可读,但会话尚未结束
+FTPGET: 1,1 如果模块收到了数据,但用户没有输入
“AT+FTPGET:2, ” 来读取数
据, “+FTPGE T:1,1”会在一定时间后再
次显示
AT+FTPGET=2,1024
+FTPGET: 2,1024
01234567890123456789012345678901234
5678901234567890…..1234
OK
请求读取1024字节数据
当前有 1024 字节数据可读
+FTPGET:1,0 数据传输结束,FTP 服务器连接关闭
@2:FTP的Put用法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**
OK
AT+FTPPUTNAME=”1K.txt”
OK
AT+FTPPUTPATH=”/”
OK
设置FTP 会话参数
AT+FTPPUT =1
OK
打开FTP Put 会话
+FTPPUT: 1,1,1360 FTP 会话可以开始上传数据。一次最多
可以上传1360 字节数据。上传数据的多
少取决于当前网络状态
AT+FTPPUT=2,100
+FTPPUT: 2,100
客户端请求发送100字节数据。
响应提示用户现在必须输入100字节数据
进行传输
…… 准备从UART接收数据,DCD引脚拉低
OK 所有数据接收完毕,DCD引脚拉高
+FTPPUT: 1,1,1360 URC提示FTP会话可以传输更多数据
AT+FTPPUT=2,0
OK
所有数据传输完毕,FTP 会话将会关闭
+FTPPUT: 1,0

FTP 会话过程中可能由于糟糕的网络坏境或其他原因发生各种错误。包括超时错误、密码错误等各种常见的报错。

@3:FTP超时
AT+FTPGET =1
OK
打开FTP Get 会话.
+FTPGET: 1,64 如果网络情况不好,可能会发生超时。
FTP 服务器的连接关闭
AT+FTPGET =1
OK
打开FTP GET 会话.
+FTPGET: 1,1 数据可读
+FTPGET: 1,1
……..
+FTPGET: 1,1
如果用户没有输入“AT+FTPGET:2,
” 来读取数据, “+FTPGE
T:1,1”会在一定时间后再次显示
+FTPGET: 1,64 如果用户长时间不读取数据, 会话将会
发生超时。FTP 服务器的连接关闭
@4:FTP出错
AT+FTPPW=”3214567”
OK
设置错误的密码
AT+FTPGET =1
OK
打开FTP GET 会话
+FTPGET: 1,72 FTP 会话密码错误。FTP 服务器连接关闭
@5:FTP设置断点参数
AT+FTPGET =1
OK
打开FTP GET 会话
+FTPGET: 1,1 数据可读
AT+FTPGET = 2,1024
+FTPGET: 2,29
wodeceshijieguo,zhgeshigeshia
OK
从FTP 服务器下载数据
+FTPGET: 1,0 数据传输结束,FTP 服务器连接关闭
AT+FTPREST=20
OK
设置断点
AT+FTPGET =1
OK
打开FTP Get 会话.
+FTPGET: 1,1 数据可读
AT+FTPGET = 2,1024
+FTPGET: 2,9
shigeshia
OK
从断点处开始获取数据
+FTPGET: 1,0 数据传输结束,FTP 服务器连接关闭
@6:设置FTP的删除的方法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPDELE
OK
打开FTP DELE 会话
+FTPDELE: 1,0 文件删除完成,FTP 服务器连接关闭。
@7:FTP的SIZE用法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPSIZE
OK
打开FTP SIZE 会话
+FTPSIZE: 1,0,1024 获取文件大小完成,FTP 服务器连接关
闭。
@7:FTP MKD和RMD方法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**
OK
AT+FTPGETPATH=”/test”
OK
设置FTP 会话参数
AT+FTPMKD
OK
打开FTP 会话
+FTPMKD: 1,0 在远程计算机上创建了目录 “test”
AT+FTPRMD
OK
打开 FTP 会话
+FTPRMD: 1,0 远程计算机上的目录 “test” 被删除
@8:FTP LIST会话
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPLIST=1
OK
打开FTP 会话
+FTPLIST: 1,1 数据可读
AT+FTPLIST=2,1024
+FTPLIST: 2,126
total 0
drw-rw-rw- 1 user group 0 Oct 12
14:58.
drw-rw-rw- 1 user group 0 Oct 12
14:58…
OK
请求读取 1024 字节数据,但当前仅有126
字节可读
+FTPLIST: 1,0 数据传输结束,FTP 服务器连接关闭

7、模块BT的用法

AT+BTHOST 查询和设置当前模块蓝牙设备名
AT+BTSTATUS 查询当前蓝牙状态
AT+BTPOWER 设备功能开关
AT+BTPAIR 蓝牙配对
AT+BTUNPAIR 删除配对蓝牙设备
AT+BTSCAN 蓝牙设备搜索
AT+BTCONNECT 主动连接蓝牙设备的服务
AT+BTDISCONN 断开已连接的蓝牙设备服务
AT+BTGETPROF 获取配对的蓝牙设备提供的Profile
AT+BTACPT 接受配对的蓝牙设备的连接请求
AT+BTOPPACPT 接受配对的蓝牙设备的OPP 推送对象
AT+BTOPPPUSH 推送OPP 对象给配对的蓝牙设备
AT+BTSPPGET 蓝牙串口接收数据
AT+BTSPPSEND 蓝牙串口发送数据
AT+BTATA 接通来电
AT+BTATDL 重拨上次去电
AT+BTATH 挂断电话
AT+BTVGS 设置通话音量
AT+BTVGM 设置MIC 音量
AT+BTATD 拨打电话
AT+BTRSSI 获取已连接的蓝牙设备的信号强度
AT+BTVTS 发送DTMF
AT+BTCIND 获取智能手机状态
AT+BTCLCC 获取智能手机通话状态
AT+BTPBSYNC 获取远端设备的电话本
AT+BTPBF 根据姓名或电话号码,在远端设备进行电话本查找
AT+BTAVRCOP AVRCP 操作
AT+BTVIS 设置蓝牙可见性
AT+BTSPPCFG SPP 配置
AT+BTPAIRCFG 设置蓝牙配对模式
@1:BT作为服务端进行的连接SPP数据传输服务
串口蓝牙数据传输服务
“AT+BTPOWER=1\r” //蓝牙开机
“AT+BTHOST=buff[n]” //设置蓝牙名称
“AT+BTSPPCFG=\”MC\”,0\r” //关闭多路连接
“AT+BTPAIRCFG=2\r” //设置为自动模式
“AT+BTPAIR=2\r” //配置密钥
“AT+BTPAIR=1,1\r” //蓝牙确认配对
“AT+BTCONNECT=1,4\r” //服务器被动连接
“AT+BTACPT=1\r” //作为服务器端建立SPP连接
“AT+BTPOWER=0\r” //蓝牙关机
“AT+BTSTATUS?\r” //蓝牙查询
“AT+BTUNPAIR=0\r” //删除全部蓝牙配对信息
“AT+BTSPPSEND=” //蓝牙发送长度指示
“AT+BTSCAN=1,10\r” //进行蓝牙扫描 1开启 20是扫描时间可以调节
“AT+BTPAIRCFG=1\r” //这个是设置 蓝牙配对秘钥
“AT+BTPAIR=2,0000\r” //这个是蓝牙接收配对的响应
“AT+BTGETPROF=” //这个是进行蓝牙主动连接获取的传输协议
“AT+BTCONNECT=” //进行蓝牙设备连接
“AT+BTPAIR=0,” //这个是主动连接设备的请求
以上的操作命令用法就不多说了,毕竟前面AT的用法都是这样的。现在要说的就是这个模块的功能怎么可以进行复用。比如说GPRS、BT、GSM都有数据传输过来,你怎么来确保数据不会被混淆,导致解析出错。这里就用到的串口复用0710协议。
AT+CMUX=1这个指令进行执行之后,所有的数据解析都会按照0710这个协议进行编解码。意思也就是说,当你的指令发送的时候,你这时候要进行编码一下,按照0710的协议进行编码,他就会直到你的这个命令是发送个谁的是BT功能的还是GPRS功能的。这样编码过后,模块可以正常识别不会报错。当你接收到数据之后,你要按照0710的协议进行解码,解码后的数据包分别放进不同功能的缓存buffer里面,这样你解析的时候也不会出现过多的错误。0710串口复用协议工作原理如下:
这里写图片描述

为什么这么设计呢?处理效率会高很多,比如说,SIM808这个大模块,他有GPS、GSM、GPRS、BT功能,各种功能最终都会进行数据流的交互,这就会导致当一个功能占用的时候其他的功能数据流就不可以使用,所有可能会出现接收不到的情况,当基于这个复用协议的时候就没有什么问题了。各种数据都是经过这个多路复用器进行的,就不会有占用不释放的这一说。对于不使用多路复用的设备来说,在某个时间段内只能处理一种数据流或者是一路数据,设备效率不高,采用GSM0710的规范协议之后,将传输划分为多个逻辑链路通道,同时传输这些数据流,每个逻辑通道都是具备独立的缓冲区和流量控制的。   协议内容如下:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

@2:使用列举
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


版权声明:本文为wang2425559原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。