
【IntelliJ IDEA 2019.2】java读取发送pc串口数据
1. 错误信息:
修改代码中的串口设置,确保波特率与设备一致。 在项目根目录下编译程序,并将输出文件(JAR或类文件)放置在用户桌面上。 双击运行程序,检查是否可以正确识别并连接到串口设备。
发布日期:2021-05-13 00:03:26
浏览次数:26
分类:精选文章
本文共 2752 字,大约阅读时间需要 9 分钟。
以下是优化后的内容:
Java 串口开发指南及常见问题解决方案
在进行Java串口开发之前,请按照以下步骤准备好环境和依赖:
1. 安装必要软件
- Java Development Kit (JDK): 请安装最新版本的Java开发工具。
- JavaSerialComm Library: 添加适用于您操作系统的Java串口通信库,例如RXTX库。
2. 配置依赖库
- 将
rxtxserial.dll
和rxtxParallel.dll
放置在能够被Java搜索的目录中,如C:\Program Files\Java\lib\ext。 - 如果使用RXTX通信库,将
RXTXcomm.jar
放置在C:\Program Files\Java\jre/lib/ext
中。
3. 创建开发项目
- 打开IntelliJ IDEA或其他IDE,创建新的Java项目。
- 在项目根目录下新建
lib
文件夹,并将相关的库文件(如RXTXcomm.jar
)放入其中。通过右键选择“添加库文件”完成依赖配置。
4. 编写测试代码
import java.util.*; import gnu.io.*; public class Test { public static void main(String[] args) { EnumerationportList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { CommPortIdentifier portIp = portList.nextElement(); System.out.println("可用串口:" + portIp.getName()); } } }
5. 运行与调试
- 确保串口被正确打开并设置正确的波特率。
- 注意:Avoid running JAR files directly, ensure the Runtime Environment can find the dependent DLL files。
常见问题与解决方案
1. 错误信息:EXCEPTION_ACCESS_VIOLATION
- 错误描述:可能是由于依赖文件 (
rxtxSerial.dll
或rxtxParallel.dll
) 版本问题或路径错误导致的。 - 解决方法:
- 确认您使用的
rxtx
库是否支持您操作系统的位长(32位或64位)。 - 检查DLL文件是否被正确放置在可搜索目录中。
- 如果问题依旧,您可以尝试从指定URL重新下载最新版本:RXTX下载链接。
2. 包路径错误
- 错误描述:某些依赖包未被正确添加至项目路径中。
- 解决方法:
- 确保
RXTXcomm.jar
已被正确添加到项目的lib
文件夹中。 - 如果问题依旧,请重新检查
jav732.dll
及相关文件的路径是否正确。
- 确保
3. serialEvent 事件监听问题
- 错误描述:可能在监听数据时出现异常。
- 解决方法:
- 确保串口数据流 (
is
和os
) 已被正确初始化。 - 检查
serialPort.NotifyOnDataAvailable
是否被正确调用。 - 使用 proper exception handling 对意外情况进行处理。
完整开发示例代码
以下是一个基础的串口通信示例:
import java.awt.*; import java.io.*; import java.util.*; import gnu.io.*; public class MySerialPort { private static InputStream is; private static OutputStream os; private static SerialPort serialPort; private static boolean isOpen = false; public static void main(String[] args) { EnumeratePort(); } private static void EnumeratePort() { EnumerationportList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { CommPortIdentifier portIp = portList.nextElement(); System.out.println("发现串口:" + portIp.getName()); openPort(portIp); } } private static void openPort(CommPortIdentifier portIp) { try { serialPort = (SerialPort) portIp.open("MyApp", 1000); is = serialPort.getInputStream(); os = serialPort.getOutputStream(); serialPort.setTimeout(1000); } catch (PortInUseException e) { System.out.println("串口已被占用,请尝试下一个!"); } } // 您可以根据实际需求添加发送数据和接收数据的方法。 }
运行验证
如有进一步问题,请参考详细文档或社区资源,例如 RXTX官方文档 或 Java 串口开发相关论坛,继续深入解决问题。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月28日 06时52分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Thymeleaf sec:authorize 标签不生效
2019-03-11
js回车键登录
2019-03-11
Iterable与Iterator
2019-03-11
Python机器学习(五十二)SciPy 基础功能
2019-03-11
Python机器学习(六十五)Matplotlib 入门
2019-03-11
关于WebView当前地址问题的疑惑
2019-03-11
Python机器学习(九十二)Pandas 统计
2019-03-11
项目实战从0到1之hive(24)企业级数据仓库构建(六):数仓理论及数仓搭建
2019-03-11
SecSolar:为代码“捉虫”,让你能更专心写代码
2019-03-11
1965 - 2019 年最流行的编程语言变化
2019-03-11
链上钱包的博彩雷区
2019-03-11
GRUB2
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
XYNUOJ
2019-03-11
Chrome查找发请求的js之黑箱调试
2019-03-11
CMCC登录参数分析
2019-03-11
GridView的另外一种分页方式,可提高加载速度
2019-03-11
一些错误记录
2019-03-11