【发布时间】:2011-08-02 05:36:12
【问题描述】:
我正在开发 an open source program,它使用 gnu.io (RXTX) 通过 USB 串行端口与微控制器通信。该应用程序在 Windows、Linux 和 OSX 上运行。它依赖gnu.io 进行便携式串行端口访问。一位 Macbook 用户发布了一份日志,显示了两件事的证据:
- 当应用程序打开串行端口时,某些东西会导致 RTS 产生脉冲,从而重置微控制器。
- 当应用程序打开串行端口时,某些东西会暂时改变波特率,导致输入出现垃圾。 (通常,这种微控制器/固件/USB 组合不易受到波特率差的“线路噪声”式垃圾特性的影响)。
- 这会在应用程序处于空闲状态时定期发生(在 RTS 引发的重置后自发消息到达时做出反应/记录)
我怀疑某些其他程序偶尔会打开相同的串行端口(例如搜索连接的设备)。如何在 OSX 上防止这种情况发生?
【问题讨论】:
-
这听起来像是 RXTX 中的一个缺陷。它可能不会以独占模式打开端口,因此其他应用程序可以打开它。会不会是片状硬件? UART 芯片出现问题,因此系统将其重置。
-
@MarkRobinson:在我的例子中,UART 是一个 FTDI USB 串行设备。
-
作为一个实验。当您尝试同时从两个 RXTX 应用程序打开一个串行端口时会发生什么?特别是在 MacOS X 上。
-
@MarkRobinson:我没有测试 OSX 版本的硬件。问题中的详细信息来自我要求报告错误的人进行的实验。
-
您可以尝试使用 SerialIO 来确定是 RXTX 错误还是硬件/驱动程序的问题。
标签: java macos serial-port