很老套的代码,但是却费时很久,找到过很多参考代码,但是要不然和本身项目不太符合,要不然就运行不出来,报串口找不到的错误,也还因为jar包整了很久,去各种百度解决办法才真正实现使用java实现串口通信。
1. jar包的导入
1.1 如果你的电脑安装的是32位的JDK,那么有两种解决方案
A.
将文件comm.jar拷贝到%JAVA_HOME%\jre\lib\ext;
文件javax.comm. properties拷贝到%JAVA_HOME%\jre\lib;
文件win32comm.dll拷贝到%JAVA_HOME%\bin。
注意%JAVA_HOME%是jdk的路径,而非jre。
B. 使用Rxtx jar包(32位)
下载地址:点击打开链接
1.2 如果你的电脑安装的是64位的JDK,那么只能使用Rxtx jar包(64位)
下载地址:点击打开链接
由于我写的项目是一个动态WEB项目,所以目前只实现了接收串口数据,在WEB页面操作后,再向硬件发送数据还未实现,后续还会更新。
接收数据的实现思路如下:现在java程序中启动读串口数据的类,读出之后按解析保存至数据库中,WEB的显示后台则从数据库中取数据。
首先是写好的串口工具类:
/**
* 串口服务类,提供打开、关闭串口,读取、发送串口数据等服务(采用单例设计模式)
* @author zhong
*
*/
public class SerialTool {
private static SerialTool serialTool = null;
static {
//在该类被ClassLoader加载时就初始化一个SerialTool对象
if (serialTool == null) {
serialTool = new SerialTool();
}
}
//私有化SerialTool类的构造方法,不允许其他类生成SerialTool对象
private SerialTool() {}
/**
* 获取提供服务的SerialTool对象
* @return serialTool
*/
public static SerialTool getSerialTool() {
if (serialTool == null) {
serialTool = new SerialTool();
}
return serialTool;
}
/**
* 查找所有可用端口
* @return 可用端口名称列表
*/
@SuppressWarnings("unchecked")
public static final ArrayList<String> findPort() {
//获得当前所有可用串口
Enumeration<CommPortIdentifier&g