基于Windows Mobile的无线通信系统的研究与实现
扫描二维码
随时随地手机看文章
1 引言
根据江阴苏南港集装箱码头的发展形势、理货业务的发展需求以及码头集装箱吞吐量的不断增长的情况,通过对苏南港口的业务流程进行深入调查,利用GPRS无线数据网络进行数据实时采集,结合码头的应用现状和今后的业务发展的需求所进行的无线通信系统的设计与实现,使用了智能手机,并结合基于Windows Mobile 操作系统的J2ME语言实现了系统的客户端。
2 整体设计
2.1 系统组网方案
现在非常成熟的GPRS网络的最大传输速率可高达171. 2 Kb/ s,现已成熟的EGPRS的速率约是GPRS的三倍,它能使影像和移动多媒体应用的数据速率达到473Kbps,完全满足码头的数据传输速度,并且它具有组网灵活、扩展容易、运行费用低,维护简单、性价比高等优点。
图1 系统总体结构
对本系统来说,采用GPRS技术适用于码头作业中连续的、突发性的和频繁的数据传输,能满足手持移动终端众多时系统对突发性数据传输进行处理的要求。因此,本设计中,各监控点使用了GPRS透明数据传输终端,通过移动GPRS网络与监控中心相连,并采用APN接入点方式。各数据采集点使用移动通信公司统一的STK卡,同时监控中心对各点进行登记,保存相关资料以便识别和维护处理。各信息采集点运行监控系统软件,支持24小时实时在线,实现信息点24小时传送采集的信息数据。系统的总体结构如图1所示。
2.2 系统总体工作原理
港口装卸生产现场信息自动传输系统的基本技术是无线终端,它是一种集无线通信与计算机网络功能于一体的新型通信系统。无线终端的应用围绕港口基本作业过程进行设计、数据采集、计划执行,是数据库的信息源头。管理人员通过中央控制台的电脑屏幕直接监控指挥集装箱装卸作业,集卡和机械司机、码头装卸作业人员通过手持或车载无线终端同中央控制台联系,实时传递集装箱的装卸信息,管理人员在中央控制台可以及时掌握整个码头集装箱的运作情况。
2.3 系统的通信流程
图2 服务器与手持终端通信
系统采用的是客户/服务器通信模式(C/S),服务器端利用ServerSocket创建侦听特定端口的Socket,为了实现通信,服务器端要开启侦听服务、发送和接收服务。在终端设定了客户端的套接字(socket),并将其目的地址连接到服务器所在的IP地址与相应的端口,当终端人员登录时,启动此socket,搜寻并连接到服务器,如果成功,则会正确进入下一步。图2表明了服务器和智能手机终端利用ServerSocket和Socket来通信的过程。
3 技术路线
3.1 Windows Mobile系统特性
运用在智能手机上的操作系统主要有四种:Symbian 、Linux OS 、Windows Mobile、Windows CE。相比较而言,Windows Mobile更加适用于智能手机:
首先从产品开发的角度来讲,Windows Mobile更适合在智能手机上运行,并且正在以前所未有的速度普及开来。[!--empirenews.page--]
其次,由于沿用了微软Windows操作系统的界面,界面和操作都和电脑上的Windows十分接近,对于使用者来说十分熟悉又上手。
第三,针对中国用户而言,中文操作系统已经比较成熟。目前,多普达、摩托罗拉、三星等都已经生产了针对该系统的智能手机,并且从市场的发展趋势来看,基于Windows Mobile操作系统的智能手机将是主流。
因此,在本次系统的设计中,智能手机终端采用了Windows Mobile操作系统。
3.2 Java在Windows Mobile中的应用
Java语言分为三个版本:J2SE,J2EE,J2ME。其中J2ME版本是适用于智能无线设备和小型计算设备的J2SE的简化版,它能够适应这些设备微型、移动和无线的特点。
对于安装了Windows Mobile操作系统的智能手机来说,根据不同品牌、不同型号的智能手机来看,在运行Java程序上也有所不同。对于不直接支持Java的智能手机来说,就需要借助第三方的Java虚拟机来运行程序,常见的Java虚拟机有JMM和DMIDP2等。而对于支持Java扩展的智能手机来说,只要将编写好的J2ME程序打包后,就能在手机上运行。本设计选择的智能手机是多普达S1,它本身是支持Java的,因此不需要另外寻找Java虚拟机来运行J2ME程序,只需要下载一个RESCO资源管理器,然后将要运行的程序对应的工程(包括jad文件)进行打包,下载至智能手机中。最后打开RESCO资源管理器,找到所要运行的Java程序,点击其中的jar文件就可以运行了。
4 系统的具体实现
4.1 服务器端程序的实现
由于服务器端需要接受和处理的数据量较大,并且是运行在计算机上的,所以,服务器端的程序是用J2EE编写的。
智能手机是通过设置专线APN来连接服务器的,服务器通过继承Thread类创建线程ServerImpl实现其功能,并通过生成固定端口的服务器Socket来接收终端的请求,实时侦听,对来自于终端的数据进行相应处理,完成任务后,用close()关闭套接字,最后关闭服务器退出。
服务器的初始化程序为:
private void initServer(){
try{
receiveMessages=new Vector();
//创建存放接收消息数组对象
sendMessages=new Vector();
//创建存放发送消息数组对象
sender=new SendImpl(); //生成SendImpl类的对象
receiver=new ReceiveImpl();
//生成ReceiveImpl类的对象
listener=new ListenImpl();
clients=new Vector();
serverSocket=new ServerSocket(8000);
//生成服务器端口
listener.setListenSocket(clients);
//实现对客户端的侦听
listener.setServerSocket(serverSocket);
//设置服务器套接字
sender.setSockets(clients);
receiver.setSockets(clients);
sender.setMessages(sendMessages);
receiver.setMessages(receiveMessages);
//设置消息对象
}catch(BindException b){
System.out.println("Server 已经启动");
System.exit(0);//结束程序
}
}
4.2 客户端的程序实现
在创建J2ME程序之前,首先要对J2ME进行配置。针对智能手机的特点,应当选择的是CLDC(连接有限设备)和MIDP1.0的配置。
4.2.1 连接程序的实现
程序的主题部分中,与服务器的连接过程是关键。程序代码如下:
private boolean connect() {
try {
System.out.println("连接到服务器");
connect=(SocketConnection)Connector.open("socket://localhost:8000");
//与服务器建立连接
System.out.println("此终端的地址为:"+adrthis);
in = connect.openInputStream();
//输入数据
out = connect.openOutputStream();
//输出数据
return true;
} catch (Exception e) {
//抛出异常[!--empirenews.page--]
e.printStackTrace();
System.out.println("不能连接到服务器");
return false;
}
}
4.2.2 界面程序的实现
为MIDlet所做的用户界面设计取决于小型计算设备的限制。丰富的用户界面含有各类用户界面元素,具有最小用户界面的设备则拥有这些元素的一个子集,具体由该设备使用的profile决定。例如主页面的程序主要用到的就是List,它是若干条选项的列表,用户可以从中选择一项。此外,对于程序中事件的应用程序,还要建立监听。这里用Command对象来为用户提供一组选项供选择,并且在每个屏幕必须有一个CommandListener监视用忽在屏幕上的操作事件。具体程序代码如下:
public MainGPRS() {
ok = new Command("OK",Command.OK,1);
exit = new Command("exit",Command.EXIT,1);
//定义按钮控件
aList =
new List("作业路径",Choice.IMPLICIT);
//定义一个Implict List
aList.append("1.装卸船作业",null); aList.append("2.冷藏抄温",null);
aList.append("3.正面吊作业",null); aList.append("4.堆高机作业",null)
aList.append("5.轨道吊作业",null);
//创建对按钮控件的监听
aList.addCommand(ok);
aList.setCommandListener(this);aList.addCommand(exit);
}
protected void startApp() throws MIDletStateChangeException {
//获得设备的display
aDisplay = Display.getDisplay(this);
//设置当前的显示界面
aDisplay.setCurrent(aList);
}
5 系统的总体实现效果
图3、图4列举了两个系统在运行过程中所获得的用户图形界面,以表明程序实现的效果。
图3 作业选择界面 图4 登录界面
以上介绍无线通信系统的设计与实现,主要是在智能手机上的应用。此程序设计的通信系统已经应用到了江阴苏南港集装箱码头,并且使得码头工作人员的工作效率得到了很大的提高,也使集装箱信息能实时得到采集。随着现在各个码头集装箱码头吞吐量的不断增大,这种手持通信系统将会在其它的码头得到推广。