基于OSGi的GSM远程监控系统实现

  • 格式:pdf
  • 大小:259.43 KB
  • 文档页数:4

No.6 Dec.,2007 微处理机 MICR0PR0CESS0RS 第6期 2007年12月 

基于OSGi的GSM远程监控系统实现 

李兰兰,苗克坚,陈江山 

(西北工业大学计算机学院,西安710072) 

摘要:智能家庭网关是智能家庭网络的核心,目前影响力较大的服务网关是基于OSGi的服 

务网关。基于该网关,提出一种智能家电实时监控解决方案——将GSM模块连入网关,采用GSM 

模块收发短信息的方式监控OSGi服务网关内部各个智能家电的工作情况。 

关键词:开放服务网关组织;家庭网关;服务包;GSM模块;短信息服务 

中图分类号:TP393 文献标识码:A 文章编号:1002—2279(2007)06—0038—03 

Realization of GSM Remote Monitor System Based on OSGi 

U LaJ1一lan,MIAO Ke—jian,CHEN Jiang—shan 

(Cotteg ̄Q厂Computer,Northwestern Polytechnical University,Xi’an 710072,China) 

Abstract:Residential Gateway is the core of home network.At present,the service gateway based 

on OSGi is the most popular gateway.In this gateway,proposing a real—time monitor solution of intelli- 

gent devices,Connecting the GSM Module into gateway,and adopting GSM module SMS mode to 

monitorthe states of all intelligent devices in the OSGi Service Gateway. 

Key words:OSGi;Residential Gateway;Bundle;GSM Module;SMS 

1引 言 

开放服务网关组织OSGi(open service gateway 

initiative)致力于从广域网到局域网设备之间传送多 

种服务的开放标准。它为服务供应商、网络管理员、 

设备开发商和软件开发商提供了一个开放、通用的 

架构,使他们能互动地开发、部署和管理服务。 

符合OSGi规范的网关称为“OSGi服务网关”, 

它运行在Java虚拟机上,网关上运行的服务程序被 

称为“服务包”(bundle),它们用Java语言编写,具 

有跨平台性,从而使OSGi能满足不同的应用要求。 

OSGi网关具有多任务、零管理、高安全性、支持多种 

服务和兼容多种局域网技术(BlueTooth、HAVi、 

IEEE1394、USB)等特点。OSGi目前已经提供了标 

准的服务接口,例如,Jini服务和Http服务。 Service Provider(服务提供商)向用户提供一系 

列的服务,这种服务的传送是通过将应用程序下载 

到OSGi服务网关实现的; 

Gateway Operator(网络管理员)主要维护OSGi 

服务网关及运行在网关上的各种服务,包括安装、开 

始、停止、更新和卸载服务等。 

S盯Y.ci2 (_、ider 图l OSGi服务网关模型 

2 OSGi服务网关模型 3 OSGi服务包(Bundle) 

图1为OSGi服务网关模型。其中:OSGi 

Service Gateway(OSGi服务网关)是整个模型的中 

心,是局域网内设备与广域网之间通讯和服务的枢 

纽,它提供了局域网内设备的远程监控和维护、设备 

软件的远程下载、安全访问等服务; 用户可以自行研发设备的服务包,也可以借助 

OSGi服务网关通过广域网从服务提供商那里下载 

服务包。一个服务包可以提供一个或多个服务,在 

OSGi网关中,不同服务包之间允许共享各自提供的 

服务。 

作者简介:李兰兰(1982一),女,河南濮阳人,硕士研究生,主研方向:OSGi服务网关,嵌入式系统开发。 收稿13期:

2005—08一o2 维普资讯 http://www.cqvip.com 6期 李兰兰等:基于OSGi的GSM远程监控系统实现 ・39・ 

服务包以Java格式(JAR文件)存储,由一些可 

执行的类文件和资源组成。它提供功能给终端用 

户,提供服务给其它的服务包。JAR文件包括: 

(1)零个或多个服务的资源,这些资源可以是 

Java Class可执行文件,也可以是其它文件,3 ̄I:IHTML 

文件和Image文件等; (2)包激活器类,用来激活包,它实现了Bundl- 

eActivator接口类的start和stop方法,启动和停止服 

务包; 

(3)manifest(清单)文件,该文件描述了JAR文 

件以及bundle相关的配置信息。 

4 GSM远程监控系统 

设计方案是在OSGi家庭网关上,将GSM模块 

连入网关,开发符合OSGi规范的服务包,实现基于 

GSM模块短信息的远程监控功能。 

4.1 GSM模块MC35i简介 MC35i是德国西门子公司生产的GSM模块,支 

持数字、语音、短消息和传真,支持RS一232串行接 

口。模块具有完备的AT指令集,支持文本和PDU 

模式的短消息发送和接收格式。用户只需要通过串 

口写入AT命令,就可以控制GSM模块。 

4.2 GSM模块编码模式 

设计采用PDU模式收发短信息。收发短信息 

之前,要对短信息进行PDU模式的编码和解码。在 

PDU模式中,采用三种编解码方式,分别是7一bit、8 

一bit、UCS32。7一bit编码用于发送普通的ASCII字 

符,它将7一bit(最高位为“0”)的字符串压缩编码 

成8一bit的字符串,编码后的字节数少于原始字节 

数;8一bit编码用于发送数据短信息,例如,图片和 

音频等等;UCS32编码用于发送Unicode字符,例 

如,中文汉字。 

4.3软件设计 

GSM模块与OSGi网关的接口是RS一232串行 

端口,本设计采取对串口操作的方式控制GSM模 

块。GSM模块服务包的设计主要分为三个层次: 

GSM编解码层:该层负责串口字符串的编解码 

工作,向第二层隐藏了复杂的PDU串与用户信息之 

间的转换; 

用户API层:该层通过调用GSM编解码层提供 

的方法,实现了GSM模块收发短信息和删除功能的 

几个接口,向第三层隐藏了AT指令集的使用; 

GSM模块远程监控层:该层可谓是“接口层”, 

调用API层提供的方法,实现对GSM模块的控制。 

下面就对GSM服务包做详细介绍。 GSM编解码层 

该层向用户API层提供一个接口类GsmPDU- 

Code.java,该类提供了PDU串与用户信息之间互相 

转换的方法: 1)public String gsmEncodePDU():把用户原始 

信息编码成GSM模块可识别的PDU串。 

2)public GSM—PARAM gsmDecodePDU():把 

PDU串解码成用户信息。其中,GSM—PARAM的数 

据结构如下: 

public class GSM_PARAM 

{ public String SCA=””;//短消息服务中心号 

码 

public String TPA=””;//目标号码或回复号 

码 

public char TP_PID=0;//用户信息协议标识 

public char TP—DCS=8;//用户信息编码方 

式(7一bit:0;8一bit:4;UCS32:8;) 

public String TP—SCTS=””;//服务时间戳 

//字符串,接收时用到 

public String TP—UD:””;//原始用户信息 

//或者返回错误信息 

public int index=0;//短消息序号, 

//在读取时用到 

} 

%用户API层 

该层的核心类是Sins.java,实现了GSM模块的 

基本功能,该类提供了表1所示的所有方法。 

表1 Sms.java实现的方法 

Sms.java实现的方法 功能 

Pubic Sms(InputStream 构造函数,以打开串口的输人流 in,OutputStream out) 和输出流为参数 

测试GSM模块是否与串口连接 Boolean testGsm() 成功 

Boolean sendMsg(String 发送短消息,s为短信内容,s1为 s,String s1) 对方手机号码(以86开头) 

Read readMsg(int s) 阅读存储在第S个位置的短消息 

ArrayList readMsg(int 阅读从第begin到end之间的所 begin,int end) 有短信息 

ArrayList readNew() 阅读新短信息 Delete deleteMsg(int s) 删除第S个位置的短信息 

ArrayList deleteMsg 删除从第begin到end之间的所 (int begin,int end) 有短信息 

由于GSM模块本身没有可视化界面,给该模块 

在网关上的测试带来了极大不便,所以在该层为 

GSM模块开发用户可视的界面,使得用户通过 

Intemet

登陆OSGi网关,控制GSM模块,实现GSM 维普资讯 http://www.cqvip.com ・40・ 微处理机 2007经 

收发、阅读和删除短信等基本测试功能。 

采用servlet技术设计网页,首先调用sun公司 

提供的COl"tim.jar包中的方法打开串口,获得串口的 

输人流和输出流,然后使用表1所示的接口和HTML 

技术来完成测试串口连接、发送短信息、阅读短信息 

和删除短信息的功能。 

在OSGi网关中,只有注册了这些网页和 

servlet,才能被用户在客户端通过网关提供的Http 

服务访问,在包激活类中注册所有资源。 

每个符合OSGi规范的服务包都有一个包激活 

器类,它实现了BundleActivator接口,该接口有两个 

方法:start()和stop(),它们分别在服务包启动和 

停止的时候被调用,OSGi框架启动一个服务包时, 

就会建立一个BundleContext对象,并把这个对象传 

递给包激活器的start()方法。利用BundleContext 对象里的方法,服务包可以安装自己、注册服务、取 

得其它已经安装的bundle信息、取得对服务的引 

用,获取或释放服务对象。具体实现如下: 

首先,在包激活器的start()方法中引用OSGi 

框架提供的HTrP服务: 

ServiceReference serviceRef=bundleContext.get— 

ServiceReference(”org.osgi.service.http.HttpSer— 

vice”); 

HttpService httpSvc=(HttpService)bdlCtxt. 

getService(serviceRef); 

然后,利用HTrP服务提供的两个注册方法注 

册网页和servlet: 

s ̄HTML_dirAlias=”/resources”: 

strServletURLSend=”/Send”: