基于Java的串口通信_李良

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 系统的结构
该监控系统的物理拓扑结构为 B /S /C 模式 , 如 图 1 所示 , 即客户端(或者浏览器)+服务器 +控制 端模式. 用户可在任何时间地点联入 Internet , 通过 Web 浏览器访问系统 , 连接服务器对各设备进行远
程地监控维护.
图 1 系统的物理拓扑结构
1. 1 客户端 客户端通过 Web 浏览器下载一种能嵌在网页
(Col lege o f Elect ri cal En gi neer ing , Zhej ian g Universi ty , H ang zhou 310027 , Chi na)
Abstract :To implement free communication between computer and peripheral data source equipment , the energy consumption monit oring system uses serial communication as the communication method , w hile Java has it s special advantage in developing this system. The sy stem receives and sends data in Java through RS-232 COM port with comm. jar package and implement s serial communication with the equipments based on RS-485 Bus. T he application of the theory of multithread on serial communication enables the implementation of different tasks at the same time and improves utilization of resource and perfo rmance of overall system. Key words:serial communi catio n ;java ;RS-485 bus ;comm . Jar package ;multi thread EEACC :6 210L
针对 RS-232 的不足 , 出现了一些如 RS-485 的新 的接 口 标 准. RS-485 接 口 总 线 速 度 快 (最 大 10 Mbyte / s), 传 送距 离 远(90 Kby te / s 下可 传 1 200 m), 以差分平衡方式传输信号 , 具有很强的抗共模干 扰能力 , 在总线上允许连接多达 128 个收发器 , 这样 用户可以利用单一的 RS-485 接口方便地建立起设备 网络 , 上述优点使其成为首选的串行接口. 因为 RS485 接口组成的半双工网络 , 一般只需二根连线 , 所 以 RS-485 接口均采用屏蔽双绞线传输.
4 电表通讯
4. 1 电表通讯规约及原理 杭州西子仪表公司的两款电能表 , 支持 RS-485
71 6
电 子 器 件
第 30 卷
通信接口 , 采用了 DL / T 645-1997《多功能电能表通 信规约》[ 4] , 通信符合国家电力行业要求[ 5-6] .
电表通信为主 - 从结构的半双工通信方式. 数 据终端为主站 , 电能表为从站. 每个电能表均有各自
2 串行通信接口
系统控制端 的电能表支 持 RS-485 总线协议 , 而工控机上的 CO M 口为 RS-232 串行通信端口[ 2] . 为使数 据侦听 能够 进行 , 工控机 需要 通过 232 转 485 模块将 232 信号转换成 485 信号发出. 服务器 和仪表之间的硬件连接如图 2 所示.
中运行的 Jav a 小 应用程 序[ 1] A pplet 与 服务 器通 讯. 客户 端 的基 本功 能 包括 :显示 图 形用 户 界面
收稿日期 :2006-04-26 作者简介 :李 良(1982-), 女, 硕士研究生 , 研究方向为远程设备以及网络实验室的状态监控 , my_ narcissus @y ahoo. com. cn.
的地址编码. 通信链路的建立与解除均由主站发出 的信息帧来控制. 每帧由帧起始符 、从站地址域 、控 制码 、数据长度 、数据域 、帧信息纵向校验码及帧结 束符等 7 个域组成. 每部分由若干字节组成[ 4] . 字节 传输序列如图 4 所示 , 先传低位 , 后传高位.
电表 , 如此往复不断地把电表的数据送入服务器端 的数据库中.
串口写数据的流程图如图 3 所示. 打开串口并 对其初始化 , 就可以向定义的串口数据流写数据了.
图 2 RS-485 总线连接
2. 1 RS-232 RS-232 是目前最常用的一种串行通讯接口 , 被定
义为一种在低速率串行通讯中增加通讯距离的单端标 准. RS-232 串行通信端口是每台计算机上的常规配备, 通常有 COM1 和 COM2 两个端口 ,最大传输距离在 50 m 左右 ,在总线上只允许连接 1 个收发器. 2. 2 RS-485
信. 多线程技术在串口通讯中的运用 , 使得应用程序能同时执行不同的任务 , 提高了资源的利用率和系统的整体性能.
关键词 :串口通信 ;Jav a ;RS-485 总线 ;co mm. Jar 开 发包 ;多线程
中图分类号 :TP311
文献标识码 :A 文章编号 :1005-9490(2007)02-0714-03
表 1 帧格式
说 明
代码
帧起始符
6 8H
地址域
帧起始符 控制码 数据长度域 数据域 校验码 结束符
A0 A1 A2 A3 A4 A5 6 8H C L DA T A CS 1 6H
例如 :读正相有功电量 主站帧格式 :F E 68 99 99 99 99 99 99 68 |01
02 43 C3 6F 16 , 其中 43 C3 是读有功的命令. 从站回复形式 :68 50 19 00 00 00 00 68 81 06
本文介绍的是为设备能耗等进行实时监控的系 统. 该控制系统通过串行通信口与电能表的数据交 换与处理 , 实现对用电设备的监控. 杭州西子仪表公 司的三相四线电能表 , 可选配 RS-485 通信接 口方 便地实现与服务器的通信. Java 程序语言具有面向 对象 、平台无 关 、多线程 、安全等特性 , 是一 种跨平 台 、适合于分布式计算环境的面向对象的编程语言. 因此 , 用 Jav a 程序语言实现串口通信具有很强的实 用意义.
3 Java 与 COM 口的串口通讯
3. 1 Java 与 comm. jar 开发包 Sun 的 J2SE 中没有直接提供串行通讯协议的
图 3 向串口写数据流程图
串口读写的软件实现如下所示 :
/ *打开串口并对其初始化的程序 */ public void I nitialize() { por tId = CommP or tI dentifie r. g etPo rtIdentifier ( " COM 2") ; serialP or t =(SerialP or t)por tId. open( "Se rial_ Communicatio n", 2000); serialP or t. 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 A RIT Y_ EV EN / /校验位 1 位 ); } / *从端口中读取数据 */ InputStream input =serialPo rt. getInputStream(); Input. read( …) ; / *往端口中写数据 */ OutputStream input =serialPort. getOutputStream(); O utput. w rite( …) ;
开发包 , 而是以独立的 ja r 包形式发布在 java. sun. com 网 站 上 ———即 co mm. jar , 称 之 为 Java (tm ) Com munica tions API , 它 是 J2SE 的 标 准 扩 展. Com m. jar 提供了对 RS-232 串行端口通讯的支持 , Jav a 通过该类库能够极大地简化对串 口的操作过 程. 与 co mm. jar 开发包一起的还有两 个重要的文 件 , wi n32com . dll 和 javax. comm . properties. comm . jar 提供了通讯用的 java A PI , w in32co m. dll 提供了供 comm . jar 调用 的本地驱 动接口 , javax. comm . propert ies 是这个驱动的类配置文件[ 3] .
43 C3 33 33 33 33 92 16 , 该回复形式没有唤醒字符 0xF E , 下划线部分为返回的为 4 个字节的数据.
控制流程图如图 5 所示. 主站先发送信息帧 , 写 入串口 , 检测电表的硬件地址和读电表的命令 , 正确 后读串口会返回有数据的帧 , 将数据取出连同此时 的时间存入相应的数据库中. 当发生地址或命令出 错 , 会出现读表延时返回零值. 然后轮询检测下一个
第2期
李 良 , 朱善安 :基于 Jav a 的串口通信
715
(G UI)、连接服务器端 、发送设置参数或者指令及显 示数据和结果等. 1. 2 服务器端
服务器端采用 SQL server 2000 数据库 , 连接 客户端和控制端 , 记录各项数据. 1. 3 控制端
控制端采用简单 、成熟且稳定的 485 总线 , 对传 感器 ———三相四线制电能表的数据进行采集 , 并上 传到服务器的数据库上.

30 卷 第 2 2007 年 4 月

电子器件
Chinese Journal Of Electron Devices
Vol. 30 No. 2 Apr. 2007
Java-Based Implementation on Serial Communication
L I L iang , Z HU Shan-an
Jav a 读写串口过程主要是调用 Javax . comm 包 中的 co mm AP I 函数. 在 Jav ax. co mm 包中串口的 输人输出操作是数据流形式 , 在初始化串口波特率 和数据位的同时 , 将输入输出流和该串口建立一个 映射 , 串口的输入输出操作就直接反映在输入流和 输出流上. 通过 Co mmP or t 类的 ge tInputSt ream() 和 g etOutputSt ream()方法即可分别取得端口的输 入流和输出流. 3. 2 串口通讯的软件实现
百度文库图 4 字节传输序列
帧是传送信息的基本单元 , 帧格式如表 1 所示. 发送帧信息之前 , 先发送 1 ~ 4 个字节 F EH , 以唤醒 接受方. 所有数据项均先传送低位字节 , 后传送高位 字节. 每次通信都是由主站按信息帧地址域选择的 从站发出请求命令帧开始 , 被请求的从站根据命令 帧中控制码的要求作出响应.
基于 Java 的串口通信
李 良 , 朱善安
(浙江大学 电气工程 学院 , 杭州 310027)
摘 要 :为实现计算机与外围数据源设备 的自由通信 , 能耗监控系统采用了串口通信的方式 , 而 Java 对开发 该系统具有其 独
特的优势. 系统在 Java 程序中使用 comm. jar 开 发包通 过 RS-232 串口 收发数 据 , 并与 基于 RS-485 总线 的设 备进行 数据 通
相关文档
最新文档