当前位置:文档之家› Java串口通信编程指南

Java串口通信编程指南

Java串口通信编程指南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_HOME}\jre\bin✧把comm.jar拷贝到{JAVA_HOME}\jre\lib\ext✧把m.properties拷贝到{JAVA_HOME}\jre\lib✧set CLASSPATH={JAVA_HOME}\jre \lib\ext \comm.jar;%classpath%3. 实现过程主要步骤包括:✧获得串口标识✧打开串口✧设置串行端口通讯参数✧获取输入(出)流✧进行读写操作3.1. 获得串口标识指定串口的端口号,生成串口的标识类的实例。

mPortIdentifier是通讯端口管理器,控制访问到通讯端口的中心类。

一个应用程序首先使用CommPortIdentifier中的方法,通过相关的驱动去获取那些通讯端口是可用的并且选择一个端口便于开始。

它包括如下功能:a. 通过驱动决定通讯端口是可用的。

b. 打开通讯端口为了I/O操作。

c. 决定端口的拥有者。

d. 解析端口拥有者的争夺。

e. 管理事件显示在端口拥有者的中的状态改变。

示例代码如下:代码:3.2. 打开串口示例代码如下:代码: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()方法就可以了。

示例代码如下:代码:✧读操作,需要如下步骤:✓继承SerialPortEventListener接口。

✓为SerialPort添加监听Listener。

✓实现该接口的serialEvent(SerialPortEvent event)方法。

✓通过BufferedReader的read()方法逐byte读取。

当然也可以用readLine()方法进行逐行读取。

示例代码如下:代码:public class SerialPortTerminal extends SerialPortHandlerimplementsSerialPortEventListener {//受信バッファ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(newInputStreamReader(port.getInputStream()));// RS-232C 出力用の Writer を生成comWriter = newBufferedOutputStream(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 char[20];int newData = 0;int i = 0;while (true) {try {newData = comReader.read();// 入力ストリームから読み込みif (newData == -1 || newData == 0x0d) {// CRbreak;}c[i] = (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/win95/hardware/se423507.html (免费)✧软件名称:SuperCommTool超级串口调试器✧目的:和上面的功能类似,这个是中文界面的。

✧下载地址:/detail/8/71193.shtml (免费)✧软件名称:串口调试(AccessPort)✧目的:更强大的串口检测调试工具。

✧下载地址:/soft/9838.html (免费)08916831085032050F0 11000D91 5108153952F9 000000 02 C83408916831085032050F011000D915108153952F900000002C8340891683108200545F94405A10180F600080110401130012360050003470202660E4E4B4E0 0FF0C8BF759A555844FDD7BA1FF0C4E2D56FD79FB52A84E0D4F1A4EE54EFB4F5565B95F0F5 41160A87D2253D68BE55BC67801FF0C8BF752FF544A77E54ED64EBA3002611F8C22900962E94E2D56 FD79FB52A8FF010891683108200505F0040D91685108153952F900000190709015652301413108200505F05108153952F908916831085032050F11000D91685108153952F900000002C834 0011000D91683168111930F30008AA0862116210529F4E860011000D91685108153952F90008AA0862116210529F4E860011000d91685108153952F90008AA0862116210529F4E860011000d91685108153952F90008AA08CED2B3C9B9A6C1CB 5108153952F9。

相关主题