近期开发过程中遇到需要读取底层传感器串口数据的问题,也是从无到有的一个过程,爬了不少帖子在这里记录一下,也给后来的朋友们一点小小的帮助吧。
下载链接在文末
串口介绍
如图所示就是一种串口转换器:
Java对串口编程的API包
官方包:
1998年SUN发布的串口通信API:comm2.0.jar(Windows环境下)和comm3.0.jar(Linux/Solaris环境下);IBM发布的串口通信API;
但是sun已经停止了对commAPI的更新,现在使用的更多的是RXTX的jar包,下载链接百度RXTX官网就是
编程前准备
除了jar包以外,相信新出的台式电脑和笔记本电脑已经没有com接口了吧,在做测试之前我们选择虚拟两个串口出来,这里需要用到软件:vspdpro
后面我会整理出开发所需要的所有的软件,供大家下载的.
软件安装好以后,直接添加虚拟对就好了,选择你需要虚拟出的端口即可:
开始编程
使用Eclipse工具,新建一个maven工程,添加pom依赖,代替手工导入RXTX.jar
<!-- 添加对485接口的依赖 -->
<dependency>
<groupId>org.rxtx</groupId>
<artifactId>rxtx</artifactId>
<version>2.1.7</version>
</dependency>
读取所有可用串口,并打印
这里我使用的端口是8和12大家可以灵活处理
package com.shenlan.demo485;
import java.util.Enumeration;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.UnsupportedCommOperationException;
public class RxtxDemo2 {
public static void main(String[] args) {
//定义表示端口的变量
CommPortIdentifier portIdentifier = null;
//定义记录每一个变量的枚举
Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();
//输出所有端口
System.out.println("输出所有端口");
while (portIdentifiers.hasMoreElements()) {
portIdentifier = (CommPortIdentifier) portIdentifiers.nextElement();
System.out.println("串口:"+ portIdentifier.getName());
}
//获取两个端口
CommPortIdentifier com8 = null;
CommPortIdentifier com12 = null;
try {
com8 = CommPortIdentifier.getPortIdentifier("COM8");
com12 = CommPortIdentifier.getPortIdentifier(