Palm J2ME串行通讯程序编写调试 |
||||
| 作者:李鲁群 来源:赛迪网 发布时间:2005-12-21 3:44:00 | ||||
|
Palm是3Com公司的产品,其操作系统PalmOS是一种32位的嵌入式操作系统。Palm硬件提供了标准串行通讯接口(RS232接口)和红外线传输接口。利用它可以方便地与其它外部设备通讯、传输数据。目前3Com公司与Sun公司积极合作,已经提供了非常完善的嵌入式Java(J2ME),并提供了CLDC1.03和Palm相应的配置。基于PalmOS平台的Java虚拟机为KVM,此虚拟机中已经提供了完善的对Palm串行通讯口读写的SDK程序开发包。利用该开发包可以方便地开发Palm与外围设备的串行通讯的应用程序。 串行通讯历来是计算机软件界经久不衰的应用与研究内容之一。计算机串行通讯系统因为利用的外围硬件少,通常传输距离为15米,如果配合光电转换器,可将传输距离延长至若干公里。如果通讯双方使用Modem,再配合电话线,就可以使在任意位置的通讯双方实现串行通讯。串行通讯被广泛地应用在工业数据采集、IC卡读写等领域。由于Palm程序的编写与调试步骤与台式PC机不同,所以一些与Palm串行通讯的设备必须拿到室外才能正常使用。如GPS的接收机、GPS的全球定位系统、GPS的接收设备等,它们必须在室外,并且必须在较开阔的位置才能接收到足够的卫星数目,GPS接收机才能解算出当前的位置。然后,需要通过GPS接收机的串行通讯口将解算出的结果按照NMEA0183协议将数据发送出去,并实现定位。这就使得Palm串行通讯程序调试起来非常复杂。 笔者从事J2ME嵌入式程序开发1年有余,找到了一套较高效的编写和调试Palm J2ME嵌入式程序的方法,以下将详细介绍。 通常Palm应用程序的开发是利用台式PC编写,编写后编译成Palm应用程序,然后将其导入到台式PC的Palm模拟器中运行调试。程序调试完成后,通过台式PC与Palm的同步软件(HotSync)导入到真正的Palm硬件,从而实现应用程序在Palm硬件上的运行(见图1)。 ![]() 由于Palm串行通讯涉及到对硬件的操作,所以单纯地利用Palm模拟器无法调试Palm串行通讯程序,必须采用软件与硬件相结合的方法才可以。方法如下: 首先将Palm模拟器的串行通讯口映射到台式PC的物理串行通讯口。具体操作为鼠标右击Palm模拟器,选择Setting,然后选择Properties,再选择Serial Port,最后选择Com1。注意此串行通讯口设备必须未被其它设备使用。随后使用9针的D型串行通讯接口将PC物理通讯端口与Palm相通讯的设备连接一起。 当在同一台PC上完成Palm模拟器与PC串行通讯时,需要制作一根Null Modem串行通讯电缆,详细制作可参照相关串行通讯资料。 终端仿真程序是Windows 9x/NT/2000自带的应用软件,是功能强大的串行通讯辅助调试软件,利用它可以方便地完成PC计算机之间的串行通讯。我们在此介绍终端仿真程序,并不是单纯地为了介绍Windows系统自带的软件,而主要是为了调试串行通讯程序。 终端仿真程序位于Windows工具“开始-程序-附件-通讯-超级终端”。如果系统中尚未安装超级终端程序,请选择“控制面板-添加删除程序”,选择Windows,选择通讯,选中超级终端复选项,然后按照提示插入Windows 9x/NT/2000系统安装光盘,完成终端仿真程序的安装。 启动超级终端程序Hpertrm.exe,选定串行通讯端口(Com1或Com2),然后设定好通讯速率与校验位。例如串行通讯速率为9600波特,数据位为8位,无奇偶校验,停止位为1位(见图2、图3)。 ![]() ![]() 一般来说,串行通讯的双方都必须遵守相同的通讯数据格式,编写各自的通讯程序。由于通讯程序的编写涉及到通讯的双方,所以任意一方通讯程序的错误都将导致通讯的失败,也将给编写和调试通讯带来许多困难。笔者通过反复试验发现,利用Windows终端仿真通讯程序模拟通讯双方中一方,然后调试通讯双方中另一方与Windows终端仿真通讯,当通讯两方都与Windows终端仿真调试成功后,即可实现它们之间的串行通讯了。这样可以最大限度地减少串行通讯程序的调试工作量,提高程序开发速度(见图4)。假设目前要设计两个串行通讯系统,分别是PC机显示Palm数据系统和Palm显示PC端数据系统,它们的具体实现如下: ![]() 将Palm的数据库内容通过串行通讯,按照串行通讯9600波特速率、数据位为8位、无奇偶校验、停止位为1位传送到PC计算机,并显示。此系统涉及到Palm端程序和PC计算机端程序。 1. Palm端程序(见图5) ![]() Palm端程序主要分三步: (1)打开Palm内部数据库,设Palm内部的数据库的标识为:
由于不涉及到对数据库的写操作,所以这里以只读的方式打开Palm内部数据库。 (2)打开Palm串行通讯端口,构造serialPort对象,使用serialPort.open方法打开串口。
(3)发送数据,通过serialPort对象的openOutputStream()方法,获取OutputStream数据流,并赋给os对象,代码为OutputStream os = serialPort.openOutputStream()。然后,读取Palm内部数据库gpsd的每条记录内容,将内容按字节通过串行通讯传送到PC,并通过os.write(),将数据写入串口。主要代码为:
如果串行通讯数据传输完毕,关闭串行通讯端口和Palm内部数据库。代码如下:
|
||||
| [] [返回上一页] [打 印] | ||||
|
||||
文章评论 |
||||





