Wavecom的复用协议允许一条串行链路上同时进行两个会话(即虚连接):一个AT命令的会话和一个数据通信的会话。AT+WMUX=1将激活模块的复用模式。在这种模式下,AT命令和数据都被封装成数据包。通过包头,可以区分是数据包还是AT命令包。
AT命令包帧格式如图2所示。第一个字节0xAA 用于标识这是一个命令包,第二个字节是AT命令长度的低八位。第三个字节由两部分组成:低3位是AT命令长度的高3位;高五位是0x1D(1 1101)。AT命令的最大长度可以为2047字节。校验和(checksum)是包中所有字节(包括头和AT命令)之和对256取模
数据包各个字段(除packet type外)意义与AT命令包相同,其帧格式如图3所示。数据包有以下几种类型:
Type=0--DATA 包:这个包是发送到无线链路上或者从无线链路上接收到的数据
·Type=1--STATUS包:这个包给出了SA、SB、X和中断条件编码的信息。
状态包的长度总为1字节(这个长度的意思是:在已经packet type 是状态的情况下,data byte 的内容中有一个字节,专门表示状态中的具体情况)。任何一个状态(除了break)改变时,所有的状态位都要发送出去。缺省情况下,所有的状态位都是关闭的(因此DTR、RTS都是关闭的),所以在打开复用开关准备传送数据之前,一定要发送一个状态包。
·Type=2--READY包:这个包表示发送READY包的一方可以接收数据了。包中没有数据,所以长度字段为0。
·Type=3--BUSY 包:这个包表示发送READY包的一方忙,无法接收数据。包中没有数据,长度也为0
当时自己做的时候,不管怎么弄,就是发不过数据。但是,连接是正常的~~
想了一下流程:无非是:
机器---->串口------->GPRS ,所以问题无非就是出在了这两个方面……
所以,我进行了串口监视,发现串口发送的data数据,末尾计算的时候,多了一个‘/0’,原来是因为模块化的时候,耦合性产生的问题。
最终,找到了问题,自然就一蹴而就,排除了问题·~