基于Java的串口通信_李良
- 格式:pdf
- 大小:615.06 KB
- 文档页数:4
第30卷 第2期
2007年4月
电子器件
Ch in es e Jo u rnal Of Electro n Devi ces
Vol.30 No.2Apr.2007
Java -Based Implementation on Serial Communication
L I L iang ,ZH U Shan -an
(C olle ge of E le ctr ical En gineering ,Zhej ian g Univ e rsity ,H ang zh ou 310027,China)
Abstract:To implement free communication betw een computer and peripheral data source equipment,the energy consumption monitoring system uses serial communication as the communication method,w hile Java has its special advantage in developing this system.The system receives and sends data in Java through RS -232COM port w ith comm.jar package and implements serial communication with the equipments based on RS -485Bus.The applica -tion of the theory of multithread on serial communication enables the implementation of different tasks at the same time and improves utilization of resource and performance of overall system.
Key words:serial communicatio n;java;RS -485bus;comm.Jar package;multithread
EEACC :6210L
基于Java 的串口通信
李 良,朱善安
(浙江大学电气工程学院,杭州310027)
收稿日期:2006-04-26
作者简介:李 良(1982-),女,硕士研究生,研究方向为远程设备以及网络实验室的状态监控,my_narcissus@y .
摘 要:为实现计算机与外围数据源设备的自由通信,能耗监控系统采用了串口通信的方式,而Java 对开发该系统具有其独
特的优势.系统在Java 程序中使用comm.jar 开发包通过RS -232串口收发数据,并与基于RS -485总线的设备进行数据通信.多线程技术在串口通讯中的运用,使得应用程序能同时执行不同的任务,提高了资源的利用率和系统的整体性能.
关键词:串口通信;Jav a;R S -485总线;co mm.Jar 开发包;多线程中图分类号:TP311
文献标识码:A 文章编号:1005-9490(2007)02-0714-03
本文介绍的是为设备能耗等进行实时监控的系统.该控制系统通过串行通信口与电能表的数据交换与处理,实现对用电设备的监控.杭州西子仪表公司的三相四线电能表,可选配RS -485通信接口方便地实现与服务器的通信.Java 程序语言具有面向对象、平台无关、多线程、安全等特性,是一种跨平台、适合于分布式计算环境的面向对象的编程语言.因此,用Jav a 程序语言实现串口通信具有很强的实用意义.
1 系统的结构
该监控系统的物理拓扑结构为B/S/C 模式,如图1所示,即客户端(或者浏览器)+服务器+控制端模式.用户可在任何时间地点联入Internet,通过Web 浏览器访问系统,连接服务器对各设备进行远
程地监控维护.
图1 系统的物理拓扑结构
1.1 客户端
客户端通过Web 浏览器下载一种能嵌在网页
中运行的Jav a 小应用程序[1]Applet 与服务器通讯.客户端的基本功能包括:显示图形用户界面
(GU I)、连接服务器端、发送设置参数或者指令及显示数据和结果等.
1.2 服务器端
服务器端采用SQL server 2000数据库,连接客户端和控制端,记录各项数据.
1.3 控制端
控制端采用简单、成熟且稳定的485总线,对传感器)))三相四线制电能表的数据进行采集,并上传到服务器的数据库上.
2 串行通信接口
系统控制端的电能表支持RS -485总线协议,而工控机上的COM 口为RS -232串行通信端口[2]
.为使数据侦听能够进行,工控机需要通过232转485模块将232信号转换成485信号发出.服务器和仪表之间的硬件连接如图2所示
.
图2 R S -485总线连接
2.1 RS -232
RS -232是目前最常用的一种串行通讯接口,被定义为一种在低速率串行通讯中增加通讯距离的单端标准.RS -232串行通信端口是每台计算机上的常规配备,通常有COM1和COM2两个端口,最大传输距离在50m 左右,在总线上只允许连接1个收发器.2.2 RS -485
针对RS -232的不足,出现了一些如RS -485的新的接口标准.RS -485接口总线速度快(最大10Mbyte/s),传送距离远(90Kbyte/s 下可传1200m),以差分平衡方式传输信号,具有很强的抗共模干扰能力,在总线上允许连接多达128个收发器,这样用户可以利用单一的RS -485接口方便地建立起设备网络,上述优点使其成为首选的串行接口.因为RS -485接口组成的半双工网络,一般只需二根连线,所以RS -485接口均采用屏蔽双绞线传输.
3 Java 与COM 口的串口通讯
3.1 Java 与comm.jar 开发包
Sun 的J2SE 中没有直接提供串行通讯协议的
开发包,而是以独立的jar 包形式发布在 网站上)))即co mm.jar,称之为Java (tm )Com munications API,它是J2SE 的标准扩展.
Com m.jar 提供了对RS -232串行端口通讯的支持,Jav a 通过该类库能够极大地简化对串口的操作过程.与co mm.jar 开发包一起的还有两个重要的文件,w in32com.dll 和m.jar 提供了通讯用的java A PI,w in32co m.dll 提供了供comm.jar 调用的本地驱动接口,m.pr operties 是这个驱动的类配置文件[3]
.
Jav a 读写串口过程主要是调用m 包中的co mm API 函数.在Jav ax.co mm 包中串口的输人输出操作是数据流形式,在初始化串口波特率和数据位的同时,将输入输出流和该串口建立一个映射,串口的输入输出操作就直接反映在输入流和输出流上.通过Co mmPort 类的g etInputStream ()和g etOutputStream ()方法即可分别取得端口的输入流和输出流.
3.2 串口通讯的软件实现
串口写数据的流程图如图3所示.打开串口并对其初始化,就可以向定义的串口数据流写数据了.
图3 向串口写数据流程图
串口读写的软件实现如下所示:
/*打开串口并对其初始化的程序*/
public vo id I nit ialize(){
por tId =CommP ortI dentifier.g etPo rtIdent ifier ("COM 2");
serialP ort =(SerialP ort)port Id.open("Ser ial_Communication",2000);serialP ort.setSerialPo rtP arams(
1200,//波特率1200
SerialP or t.DA T A BIT S_8,//数据位8位SerialP or t.ST O PBIT S_1,//数据停止位1位SerialP or t.P AR IT Y_EV EN//校验位1位);
}
/*从端口中读取数据*/
InputStream input =serialPort.getInputStream();Input.read(,);
/*往端口中写数据*/
OutputStream input=serialPort.getOutputStream();O ut put.w rite(,);
4 电表通讯
4.1 电表通讯规约及原理
杭州西子仪表公司的两款电能表,支持RS -485
715
第2期李 良,朱善安:基于Jav a 的串口通信