Java串口通信编程指南.doc_第1页
Java串口通信编程指南.doc_第2页
Java串口通信编程指南.doc_第3页
Java串口通信编程指南.doc_第4页
Java串口通信编程指南.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java串口通信编程Java串口通信编程指南 第8页/共8页1. 概述在java中,利用Java Communication包可以操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的 2.0版本,不过在XP下还能使用。另外,也可以用开源的Rxtx实现串口通信,这里仅以Java Communication包,在Windows平台实现串口通信进行说明。2. 前期准备2.1. 下载Java Communication包 下载地址如下:/Jolt/javacomm20-win32.zip。 如果是非Windows平台,请到Sun网站选择其他版本下载。地址如下:/download/products.xml?id=43208d3d2.2. 配置 解压缩javacomm20-win32.zip 把win32com.dll拷贝到JAVA_HOMEjrebin 把comm.jar拷贝到JAVA_HOMEjrelibext 把perties拷贝到JAVA_HOMEjrelib set CLASSPATH=JAVA_HOMEjre libext comm.jar;%classpath%3. 实现过程主要步骤包括: 获得串口标识 打开串口 设置串行端口通讯参数 获取输入(出)流 进行读写操作3.1. 获得串口标识指定串口的端口号,生成串口的标识类的实例。m.CommPortIdentifier是通讯端口管理器,控制访问到通讯端口的中心类。 一个应用程序首先使用CommPortIdentifier中的方法,通过相关的驱动去获取那些通讯端口是可用的 并且选择一个端口便于开始。它包括如下功能: a. 通过驱动决定通讯端口是可用的。 b. 打开通讯端口为了I/O操作。 c. 决定端口的拥有者。 d. 解析端口拥有者的争夺。 e. 管理事件显示在端口拥有者的中的状态改变。示例代码如下:代码:CommPortIdentifier portID = null;try/ CommPortIdentifier 取得portID = CommPortIdentifier.getPortIdentifier(COM1);catch(NoSuchPortException ex)ex.printStackTrace();3.2. 打开串口示例代码如下:代码:try/ port = (SerialPort)portID.open(portApp, 5000);catch(PortInUseException ex) ex.printStackTrace();5000(毫秒)是超时时间。3.3. 设置串行端口通讯参数设置串口传输的波特率、数据位、停止位、奇偶校验等参数。示例代码如下:代码:try / 通信条件設定/ 通信速度 9600 baud/ 8bit/ 1bit/ / 設定/ 無制御使用port.setSerialPortParams(9600, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); catch (UnsupportedCommOperationException ex) ex.printStackTrace();System.exit(1);3.4. 获取输入(出)流利用getInputStream()以及getOutputStream()从每个串口产生对应的输入输出流对象。示例代码如下:代码:/受信protected BufferedReader comReader;/送信protected BufferedOutputStream comWriter;try / RS-232C 入力用 Reader 生成comReader = new BufferedReader( new InputStreamReader(port.getInputStream();/ RS-232C 出力用 Writer 生成comWriter=new BufferedOutputStream(port.getOutputStream(); catch (IOException ex)ex.printStackTrace();3.5. 进行读写操作 写操作很简单,只需要调用BufferedOutputStream的write()方法就可以了。示例代码如下:代码:try comWriter.write(送信内容。);comWriter.flush(); catch (IOException e) port.close();System.out.println(Serial Send Error:+e);e.printStackTrace(); 读操作,需要如下步骤: 继承SerialPortEventListener接口。 为SerialPort添加监听Listener。 实现该接口的serialEvent (SerialPortEvent event)方法。 通过BufferedReader的read()方法逐byte读取。当然也可以用readLine()方法进行逐行读取。示例代码如下:代码:public class SerialPortTerminal extends SerialPortHandlerimplements SerialPortEventListener /受信 protected BufferedReader comReader; /送信 protected BufferedOutputStream comWriter; public SerialPortTerminal(String portName) super(portName, SerialPortTerminal); try / SerialPortEvent 受取登録 port.addEventListener(this); catch(TooManyListenersException ex) ex.printStackTrace(); System.exit(1); / Data Available 受取 port.notifyOnDataAvailable(true); try / RS-232C 入力用 Reader 生成 comReader = new BufferedReader( new InputStreamReader(port.getInputStream(); / RS-232C 出力用 Writer 生成 comWriter = new BufferedOutputStream(port.getOutputStream(); catch (IOException ex) ex.printStackTrace(); System.exit(1); / 処理 public void serialEvent(SerialPortEvent event) switch(event.getEventType() case SerialPortEvent.OUTPUT_BUFFER_EMPTY:/ Data Available 以外処理break;case SerialPortEvent.DATA_AVAILABLE:/ Data Available 処理String buffer = null; StringWriter strWriter = new StringWriter(); char c = new char20; int newData = 0; int i = 0; while (true) try newData = comReader.read();/ 入力読込 if (newData = -1 | newData = 0x0d) / CR break; ci = (char)newData; if(i 100) break; catch (IOException ex) return; i+; try strWriter.write(c); strWriter.flush(); buffer = strWriter.toString(); strWriter.close(); retText = buffer; comReader.close(); port.close(); catch(Exception e) setReadfinishFlg(true); break; 4. 测试相关正确安装Java Communication API,并将自己的程序编译通过以后,你可以按如下方法测试这个程序。如果你只有一台机器,你可以利用一条RS-232电缆将COM1和COM2连接起来,在COM1上运行自己的串口读写程序,在COM2上运行第二章辅助工具中提到的串口调试工具。如果你有两台机器的话,你可以利用一条RS-232电缆将两台机器的COM1(或者是COM2)连接起来,在一端运行程序,另外一端运行串口调试工具。5. 示例代码6. 辅助工具6.1. 模拟串口 软件名称:Virtual Serial Port Driver 目 的:由于串口开发,需要硬件接口,以及串口链接线。使用本软件可以在没有硬件串口接口和链接线的情况下,模拟出串口,并且可以让模拟出的两个串口互相导通。 下载地址:/download/vspdxp/ (14天免费试用)6.2. 串口调试工具 软件名称:Serister 目 的:测试的辅助工具,日文界面,可以接受RS232C传过来的数据,并且以多种形式表现出来,如以十六进制显示,以文本方式显示等。还可以编辑送信内容,进行送信等。 下载地址:http:/www.vector.co.jp/soft/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论