摘 要: 通过GPRS网络,基于家电远程监控系统可以将室内摄像机采集的图片信息发送到用户的手机终端。用户只需连接GPRS网络,便可轻松获取家电的图像信息。
随着科技水平的不断提高和社会的不断进步,人们对于家居安全性的要求也与日俱增。因此,智能化的家电监控系统就有了广阔的发展空间。本文研究了在家电远程监控系统中应用MMS发送方式实现监控目的的方法。由于家电远程监控系统基于嵌入式平台,硬件资源相对较少,因此在MMS封装方式和发送协议的选择上需要充分考虑和权衡。
1 MMS相关技术与协议
MMS终端通过MMS用户代理提供多媒体消息服务。MMS用户代理是多媒体消息终端上的一个应用,提供用户浏览、编辑、处理多媒体消息等功能以及发送、接收、删除等操作。MMS用户代理支持MIME,通过MIME中不同子类型的定义,多媒体消息可包含文本、图像、声音等数据。
MMSC是整个多媒体消息系统的,对多媒体消息进行存储和处理,包括消息的输入输出、地址解析、通知、等。同时,负责多媒体消息在不同MMSC之间的传递等操作。MMSC还产生CDR话单用于计费。另外,MMSC需要很多到其他网络的连接:并开展各种增值服务。MMS中继正是系统的IP接口。系统通过它与各种网络相连,支持多种协议。
(1)SMIL语言
同步多媒体集成语言SMIL(Synchronized Multimedia Integration Language)[1]专为流式多媒体设计,用来规定多媒体片断在什么时候、在什么地方、以什么样的方式播放,可通过时序排列对声音、影像、文字及图形文件进行顺序安排。
(2)MIME封装
使用SMIL语言描述的MMS,在通过无线网络发送的时候,必须通过某种方式把SMIL和附属的内容包装在一起,作为一个unit发送出去,同时还要保证SMIL文件各个部分内容的reference变得有效。MIME负责把所有的独立的图像、声音、文本、视频内容以及SMIL文件本身捆绑在一起,这个规范称为MIME Encapsulation Aggregate Documents,用于告诉接收的手持终端。
MIME能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。这个标准被定义在; RFC 2045,; RFC 2046,; RFC 2047,; RFC 2048,; RFC 2049等RFC中。 由RFC 822转变而来的RFC 2822,规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息都不能在电子邮件中传输。MIME规定了用于表示各种各样的数据类型的符号化方法。
(3)WAP协议与HTTP协议的比较
家电远程监控系统是在嵌入式平台上构建的,硬件资源相对较少,所以在网络协议的选择上需要充分考虑硬件资源是否能够满足需要。WAP(Wireless Application Protocol)是一种向移动终端提供互联网内容和先进增值服务的统一的开放式协议标准, 是简化了的无线Internet 协议。在WAP协议中,会话功能解决了不连续覆盖的问题,并且在IP不可用时自动改用其他优化协议传输信息。
综上所述,在分析了WAP协议和HTTP协议之后,本文采用WAP协议,以便在嵌入式系统硬件资源较少的情况下实现MMS的发送。
2 MMS发送的研究与实现
2.1 手机模块拨号上GPRS网
连接无线网络的基本步骤是:手机模块通过串口向无线模块发送AT命令,无线模块进行拨号连接到中国移动GPRS的WAP网关,获得临时分配的IP地址、DNS地址和临时端口号。然后,无线模块传输TCP/IP数据包,访问GPRS网内的主机,发送封装好的MMS信息。
(1)AT+CGDCONT=l,“IP”,“CMWAP”
此命令用于设置GPRS接入网关。其中第二部分表示PDP(Packet Data Protocol)类型为IP;第三部分表示接入网关为移动梦网,APN是CMWAP,表示中国移动网应用接口。APN也可以设置为CMNET,CMNET主要应用于PC、笔记本电脑、PDA等[4]。
(2)ATD *99***1#
ATD用于设置拨号方式,同时完成拨号,使手机模块进入在线状态。ATD指令采用如下两种格式:
格式一:ATD*99[*[<called address>][*[<L2P>][*[<cid>]]]]#
其中99是服务码,也可用98,国内一般用99。<called address>是w.x.y.z格式的IPv4地址;<L2P>是用于TE和ME连接的Layer2协议或用于PPP协议的Layer2协议;<cid>是表明PDP上下文的一个数字编号,用AT+CGDCONT命令创建,一般为1或20。
格式二:ATD*98[*<cid>]#
具体含义与格式一相同。
国内常用的是:ATD *99***1#,本设计中就是采用了此种格式。用ATD指令,若成功连线则返回“CONNECT”,否则返回“NO CARRIER”。当手机模块返回“CONNECT”,说明手机模块已经连上了移动GPRS的WAP网关,之后即为通过三阶段协商建立PPP链路的过程[5]。
2.2 用QT实现UDP Soket数据收发
在WAP协议发送MMS的过程中,使用UDP协议发送数据与WAP网关进行交互。在QT 4中,QUdpSoket类可以用来发送和接收UDP数据报。具体的实现方法如下:
(1)创建QUdpSocket对象
QUdpSocket *udpSocket;
udpSocket=new QUdpSocket;
(2)绑定WAP网关地址参数
udpSocket->bind(WAPHostIP,9201);
WAPHostIP是一个QT自定义的QhostAddress类,表示IP地址。WAP网关的IP为10.0.0.172,端口是9201。
(3)发送、接收数据
udpSocket->writeDatagram(qPrintable(str),4096,
WAPHostIP,9201);//发送数据
char buffer[4096];
udpSocker->readDatagram(buffer,4096,0,0);//接收数据在此之前要进行信号和槽的连接:
connect(sendButton,SIGNAL(clicked()),this,SLOT
(send_slot()));
connect(udpSocket,SIGNAL(readyRead()),this,SLOT
(recv_slot()));
2.3 实现过程
当GPRS模块成功连接服务器并且进入在线模式,就可以控制手机模块发送彩信。数据的收发程序用UDP Socket实现,在此过程中, WAP网关的IP为10.0.0.172,端口是9201。
(1)手机模块向WAP网关发起Connect请求
数据包由两部分组成:WTP PDU和WSP PDU
例如:
0001 0A OO OO 12 01 10 OO 00
其中,发送数据序列中前4字节“0A 00 00 12”是WTP Invoke PDU;第5字节“01”是WSP会话Connect代码,第6~8字节是WSP Connect PDU。
(2)服务器确认连接
服务器返回数据如下(30字节):
0001 12 80 00 02 B5 C5 15 00 15 45 6E 63 6F 64 69 6E…Encodin
00 17 67 2D 76 65 72 73 69 6F 6E 00 31 2F 32 00…g-version.1.2.
返回数据中第1~3字节是WTP Result PDU,其余为WSP协议数据单元;第4字节“02”是WSP会话连接确认(ConnectReply)的代码;第5~30字节是WSP ConnectReply PDU。
(3)控制设备发送WTP确认完成会话连接
控制设备发送WTP确认(WTP Acknowledgement,3字节)为:18 00 00。
(4)控制设备发送WTP、WSP和MMS包
控制设备首先发送WTP和WSP(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 SC.monternet.com
0033 2F BE 80 BE C7 80 A1 09 80 77 61 70 00 77 61 70/…wap.wap
0049 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…
发送数据序列中,前4个字节“0E 00 01 12”是WTP Invoke PDU,后45个字节是WSP协议数据单元。
(5)网关返回事务操作结果,控制设备发送WTP确认完成会话
当网关返回事务操作结果后,然后控制手机模块发送WTP确认:
家电远程监控系统的硬件资源十分有限,经过对各种封装方式和传输协议的研究分析,在此系统中采用MIME封装和WAP协议完成彩信的封装和发送。经过实验,本文所阐述的方法成功地在家电远程监控系统中实现了MMS的发送。
[1]. GPRS datasheet https://www.dzsc.com/datasheet/GPRS_1594650.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。