资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基于Java的串口通讯为了更好地查看本文档,请打开word的文档结构视图。修订控制页修订号修订日期修订内容简述修订人审阅人修订后版本号批准人12012-9-13新建曾行明1.0目录修订控制页3目录41. 概述52. 搭建环境52.1 开发环境52.2 扩展包安装52.3 accessPort 的使用52.4 使用串口调试工具查看端口通信73. 编写java串口操作类73.1 串口操作的封装类73.2 main程序134. 运行java程序测试串口通信134.1 打开端口13 4.2 开启java程序的数据监听.141. 概述使用java进行串口通讯。2. 搭建环境2.1 开发环境本次测试使用的环境:Win 7 旗舰版 64位Eclipse 3.7Java 1.6Comm2.0.jar(串口通信的扩展库)AccessPort 1.37串口调试工具(精装版V3.6)VSPD 工具 (创建虚拟串口用)注:1. 因为操作系统是64位的win7,accessport 使用的是 1.372. Comm包是一个扩展包,需要放置到jre的lib/ext 目录下3. 关于创建虚拟串口和串口调试工具的使用请参考:http:/wenku.baidu.com/view/0851b5c408a1284ac850438c.html2.2 扩展包安装扩展包安装如下:下载路径:http:/mdubuc.freeshell.org/Jolt/javacomm20-win32.zip将下载的文件解压缩后,在/javacomm20-win32/commapi目录下有必需的三个文件comm.jar,javax.comm. properties和win32comm.dll。将文件comm.jar拷贝到%JAVA_HOME%/jre/lib/ext;文件javax.comm. properties拷贝到%JAVA_HOME%/jre/lib; 文件win32comm.dll拷贝到%JAVA_HOME%/bin。注意%JAVA_HOME%是jdk的路径,而非jre。2.3 accessPort 的使用打开软件,使用默认的配置就好了:A 选择端口B 开户端口监听C 停止监听最后点击 上面的蓝色 按钮使用端口。2.4 使用串口调试工具查看端口通信我们使用VSPD建立两个虚拟串口,这两个是数据连通的。这里我创建的是 COM2 、COM3在java程序中监听COM2,那么通过java程序发送的数据会发送到 COM3,从COM3中发送来的数据会被java程序监听到。所以这时我们只需要用“串口调试工具”连接到COM3就可以进行通信测试了。2.3 小节讲到的 AccessPort 工具可以不用,也可以进行测试。3. 编写java串口操作类3.1 串口操作的封装类package org.serial;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.TooManyListenersException;import javax.comm.CommPortIdentifier;import javax.comm.PortInUseException;import javax.comm.SerialPort;import javax.comm.SerialPortEvent;import javax.comm.SerialPortEventListener;/* * 项目名称 :illegalsms * 文件名称 :SerialPort.java * 所在包 :org.serial * 功能描述 : *串口类 * 创建者 :集成显卡1053214511qq.com * 创建日期 :2012-9-13 * 修改记录 : */public class DSerialPort implements Runnable, SerialPortEventListener private String appName = 串口通讯测试集成显卡2012;private int timeout = 2000;/open 端口时的等待时间private int threadTime = 0;private CommPortIdentifier commPort;private SerialPort serialPort;private InputStream inputStream;private OutputStream outputStream;/* * 方法名称 :listPort * 功能描述 :列出所有可用的串口 * 返回值类型 :void */SuppressWarnings(rawtypes)public void listPort()CommPortIdentifier cpid;Enumeration en = CommPortIdentifier.getPortIdentifiers();System.out.println(now to list all Port of this PC: +en);while(en.hasMoreElements()cpid = (CommPortIdentifier)en.nextElement();if(cpid.getPortType() = CommPortIdentifier.PORT_SERIAL)System.out.println(cpid.getName() + , + cpid.getCurrentOwner();/* * 方法名称 :selectPort * 功能描述 :选择一个端口,比如:COM1 * 返回值类型 :void *param portName */SuppressWarnings(rawtypes)public void selectPort(String portName)this.commPort = null;CommPortIdentifier cpid;Enumeration en = CommPortIdentifier.getPortIdentifiers();while(en.hasMoreElements()cpid = (CommPortIdentifier)en.nextElement();if(cpid.getPortType() = CommPortIdentifier.PORT_SERIAL& cpid.getName().equals(portName)this.commPort = cpid;break;openPort();/* * 方法名称 :openPort * 功能描述 :打开SerialPort * 返回值类型 :void */private void openPort()if(commPort = null)log(String.format(无法找到名字为%1$s的串口!, commPort.getName();elselog(端口选择成功,当前端口:+commPort.getName()+,现在实例化 SerialPort:);tryserialPort = (SerialPort)commPort.open(appName, timeout);log(实例 SerialPort 成功!);catch(PortInUseException e)throw new RuntimeException(String.format(端口%1$s正在使用中!, commPort.getName();/* * 方法名称 :checkPort * 功能描述 :检查端口是否正确连接 * 返回值类型 :void */private void checkPort()if(commPort = null)throw new RuntimeException(没有选择端口,请使用 +selectPort(String portName) 方法选择端口);if(serialPort = null)throw new RuntimeException(SerialPort 对象无效!);/* * 方法名称 :write * 功能描述 :向端口发送数据,请在调用此方法前 先选择端口,并确定SerialPort正常打开! * 返回值类型 :void *param message */public void write(String message) checkPort();tryoutputStream = new BufferedOutputStream(serialPort.getOutputStream();catch(IOException e)throw new RuntimeException(获取端口的OutputStream出错:+e.getMessage();tryoutputStream.write(message.getBytes();log(信息发送成功!);catch(IOException e)throw new RuntimeException(向端口发送信息时出错:+e.getMessage();finallytryoutputStream.close();catch(Exception e)
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号