BENQ23G的彩信发送及编码格分析

BENQ23G的彩信发送及编码格分析

发布者:李宽          发布时间:2010-4-13 10:51

关键字: 彩信, 编码

引言

目前,基于GSMGPRS模块的无线远程监控系统大多数采用嵌入式处理器,选用Linux操作系统。本文介绍一种采用Winbond公司的77FA8单片机控制明基的GSMGPRS模块BENQ23G发送MMS彩信的方法。该方法成本低、可靠性高,器件选用工业级产品,能够在较宽温度范围内工作,即使在室外较恶劣的环境下也可以使用。

本系统组成如图1所示。其中,单片机77E582个串口,串口O用于与BENQ23G模块进行通信,控制BENQ23G发送彩信;串口1用于与串口摄像头(C328-JPEG模块)进行通信,控制摄像头捕获图像。外部传感器报警接口用于连接外部报警传感器,77E58最小系统收到外部传感器报警触发信号后,捕获照片、封装MMS彩信,控制BENQ23G模块向指定的手机或远程接收设备发送彩信;同时还可以拨打指定电话号码,将现场声音传送过去。MIC 及信号放大电路用于采集外部现场声音并进行放大。

从前面的分析可以看出,本系统充分利用了各个部件的硬件资源,最大限度地降低了硬件成本。本文主要介绍图1所示的无线远程监控系统通过中国移动梦网发送彩信时,所使用的传输协议命令格式和传输数据格式。

1 BENQ23G模块简介

BENQ23G是台湾BenQ公司生产的嵌入TCPIP协议的GSMGPRS模块,在BENQ23A模块的基础上增加了M2M(Machine-to Maehine)功能,可以通过GPRS承载在BENQ23G模块和因特网TCPUDP服务器上实现连接。控制设备和BENQ23G模块之间通过 UART串口连接,传输命令和数据。

控制设备首先通过UART串口设置网络连接参数,然后拨号连接GPRSBENQ23G模块建立GPRS连接并和指定的因特网TCPUDP服务器建立 Socket连接。如果Socket连接成功,则模块在控制设备和因特网TCPUDP服务器之间通过UART串口建立点对点数据连接模式,控制设备可以通过UART串口将数据原封不动地上传至因特网TCPUDP服务器,同时可以通过UART串口原封不动地下载因特网TCPUDP服务器上的数据,而上传和下载数据的TCPUDP打包和解包工作由BENQ23G模块实现。

控制设备在数据模式下通过UART串口发送数据时,如果BENQ23G模块在规定时间间隔内没有继续收到UART串口的数据,就将前面接收的数据进行 TCPUDP打包并发送到服务器。

BENQ23G模块通过UART串口连续收到控制模块发送的3个“+”符号后,将退出点对点数据模式而进入命令模式,可以通过UART串口接收控制设备发送的AT指令。但这时BENQ23G模块和服务器之间的TCPUDP协议Socket连接并没有中断,控制设备如果想再次进入数据模式上传数据给服务器,可以键入ATO命令实现。

控制设备可以在命令模式下通过键入ATH命令来中断BENQ23G模块和服务器之间的Socket连接。下面给出一个控制设备和彩信网关服务器连接的例子:

下载 (14.6 KB)

2010-4-13 10:39



该例子说明如何通过BENQ23G模块实现和远程服务器的连接,以及上传和下载数据。BENQ23G模块AT指令的详细说明见参考文献。

测试MMS组成及编码格式分析略,详细的编码含义见参考文献。

2 基于BENQ23G发送MMS编码格式分析

当控制设备需要发送彩信时,首先通过UART串口传送AT指令完成相应的参数设置(如前面例子所示),再传送“ATD*97#”指令进行 GPRS拨号,并等待BENQ23G模块完成与服务器之间的Socket连接。当收到BENQ23G模块发送的响应“Wait Socket Open”时,表明BENQ23G模块完成了与服务器的连接,并进入数据模式,控制设备可以进行发送彩信操作。

21 首先建立会话连接

控制设备发送会话建立连接请求(8字节)

    0001 0A OO OO 12 01 10 OO 00

发送数据序列中前4字节“0A 00 00 12”是WTP Invoke PDUWTP Invoke PDU采用了固定长度格式,其结构如表1所列。

下载 (5.03 KB)

2010-4-13 10:48



其中,CON=0PDU Type=0001GTR=0TTR=1RID=0,故第1字节为0ATID High Byte=00000000,故第2字节为00TID Low Byte=00000000,故第3字节为00Version=00TIDnew=0Up=1RES=00TCL=10,故第4字节为12

发送数据序列中的第58字节“01 10 O000”是WSP协议数据单元。其中第5字节“01”是WSP会话连接Connect的代码,第68字节是WSP Connect PDUWSP Connect PDU结构如表2所列。

下载 (6.54 KB)

2010-4-13 10:48



其中,第6字节“10”是WSP协议版本号,高4位是版本号的整数部分,低4位是版本号的小数部分,这里为V10;第7字节是能力字段长度,没有使用能力请求,故长度为00;第8字节是报头字段长度,没有报头,故长度为00

服务器返回数据如下(30字节)

    0001 12 80 00 02 B5 C5 1 5 00 15 45 6E 63 6F 64 69 6E........Encodin
    0017 67 2D 76 65 72 73 69 6F 6E 00 31 2F 32 00 00 00 gversion12...

返回数据中第13字节是WTP Result PDU,其余为WSP协议数据单元。WTP Result PDU采用固定长度格式,其结构如表3所列。

下载 (4.87 KB)

2010-4-13 10:39



其中,CON=0PDU Type=0010GTR=0TTR=1RID=O,故第1字节为12TID High Byte=10000000,故第2字节为80TID Low Byte=00000000,故第3字节为OO

返回数据中的第4字节“02”是WSP会话连接确认ConnectReply的代码;第530字节是WSP ConnectReplyPDU

WSP ConneetReply PDU结构如表4所列。

下载 (6.43 KB)

2010-4-13 10:48



58字节“B5 C5 15”是会话标识;第10字节“15”是HeadersLen(21字节)Headers是以00结束的字符串,即Encodingversion 12

22 控制设备发送WTP确认完成会话连接

控制设备发送WTP确认(WTP Acknowledgement3字节)18 00 00WTP Acknowledgement PDU采用固定长度格式,如表5所列。

下载 (5.83 KB)

2010-4-13 10:39



其中,CON=0PDU Type=0011TveTok=0RES=0RID=0,故第1字节为18TID High Byte=00000000,故第2字节为00TID Low Byte=00000000,故第3字节为OO

23 控制设备发送WTPWSPMMS

控制设备首先发送WTPWSP(49字节)

0001 0E 00 01 1 2 60 1A 10 68 74 74 70 3A 2F 2F 6D 6D.......http://mm
0017 73 63 2E 6D 6F 6E 74 6 5 72 6E 65 74 2E 63 6F 6D SCmonternetcom
0033 2F BE 80 BE C7 80 A1 09 80 77 61 70 00 77 61 70/........wapwap
0049 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................

发送数据序列中,前4个字节“0E 00 01 12”是WTPInvoke PDU,后45个字节是WSP协议数据单元。

WTP Invoke PDU同样采用了固定结构格式(如表1所列)。其中,CON=0PDU Type=0001GTR=1TTR=1RID=0,故第1字节为0ETID High Byte=00000000,故第2字节为00TID Low Byte=00000001,故第3字节为01Version=00TIDnew=0UP=1RES=00TCL=10,故第4字节为12

发送数据序列中第5字节“60”是WSP方法Post的代码,第649字节是WSP Post PDUWSP Post PDU结构如表6所列。

下载 (6.49 KB)

2010-4-13 10:39



6字节“1A”是UriLen(26字节);第7字节“10”是HeadersLen(16字节);第833字节是Uri字段,URI=http:/mmscmonternetcom(中国移动梦网);第34字节“BE”是ContentType的内容类型(著名域值 applicationvndwapmmsmessage的代码),即Content Type=applicationvndwapmmsmessage;第35~49字节是由3Header组成的Headers字段,第35 36字节是第1Header,第3738字节是第2Header,第39~49字节是第3Header

    Headerl80 BE(Acceptapplicationvndwapmmsmessage)
    Header2C7 80(Cashe ControlNone)
    Header3A1是域Proxy authorization的代码,第40字节“09”是域长度(9字节),第41字节“80”是Basic的代码,第4244字节是User id=wap,第4648字节是Password=wap

数据字段就是紧接着发送的MMS包。

服务器返回数据序列如下:

下载 (15.84 KB)

2010-4-13 10:39



返回数据中,第13字节是WTP Result PDU,其余为WSP协议数据单元。WTP Result PDU格式与前面相同,只是TID=8001,与WTP Invoke PDU中的TID=0001相对应。

返回数据中第4字节“04”是WSP会话响应Reply的代码,第5173字节是WSP Reply PDUWSP ReplyPDU结构如表7所列。

下载 (4.89 KB)

2010-4-13 10:39



5字节“20”是Status编码,表示成功;第67字节“81 26”是Headers的长度(解码后为A6,即166个字节,从第8字节“61”到173字节“B1);第838字节是ContentType的域值,ContentType=applicationvndwap
mmsmessage;第40173字节是由6Header组成的Headers字段,第4052字节是第1Header,第5378字节是第2Header,第79111字节是第3Header,第 112143字节是第4Header,第144167字节是第5Header,第168173字节是第6Header

下载 (4.08 KB)

2010-4-13 10:39



Header6Date=48 29 41 EB,以秒计算的日期,起始日期为197001-01

返回数据中,第174209字节是Data字段,其内容与MMS头内容相对应,解码后含义:

下载 (3.05 KB)

2010-4-13 10:39



24 控制设备发送WTP确认完成会话

控制设备发送WTP确认(WTP AcknowledgementPDU3字节)1C 00 01

WTP Acknowledgement PDU格式同表5。其中,CON=0PDU Type=0011TveTok=1RES=0RID=0,故第l字节为1CTID High Byte=00000000,故第2字节为00TID Low Byte=00000001,故第3字节为01

25 断开服务器连接

如果要退出数据模式,控制设备可通过UART串口传送符号+++BENQ23G返回命令模式,但与服务器的Socket连接并没有断开。如果要断开 BENQ23G与服务器的Socket连接,则控制设备需通过UART串口发送ATH命令给BENQ23G模块。

3 结论

本文介绍了一种通过彩信传送图像的低成本远程监控系统。该系统采用Winbond公司的77E58单片机作为控制器,由外部报警传感器触发,控制串口摄像头捕获现场图像,封装MMS彩信,并通过控制BenQ公司的GSMGPRS模块BENQ23G发送,同时还可以通过拨打预设号码将现场声音传送出去。

参考文献

   1. BenQ Inc M23 AT Command User Guide.Version:1.75 2005
   2. 中国移动通信集团公司 GPRS 移动终端规范--彩信分册 2004
   3. 张会勇 MMS的消息格式和压缩编码分析 [期刊论文] -中国数据通信2004(6)
   4. 邓戈.曹怡鹏.沈金龙 MMS 终端互通技术研究 [期刊论文] -南京邮电学院学报(自然科学版)2004(1)
   5. 陈华鹏 嵌入式MMS 客户机模型研究 [期刊论文] -计算机工程2007(16)
   6. 沈音乐 嵌入式 MMS客户机设计 [期刊论文] -计算机系统应用2007(11)

作者:北京航空航天大学 于捷  王祖林  刘有才
来源:单片机与嵌入式系统应用 2009 (2)

你可能感兴趣的:(socket,tcp,header,服务器,application,byte)