jSerialComm是一个平台无关的串行端口访问的java库

jSerialComm


一个独立于平台的 Java 串行端口访问库。

使用方法

有关使用示例,请参阅使用方法 wiki

如果您打算同时在多个应用程序中使用该库,则可能需要在访问 SerialPort 类之前设置 ```fazecast.jSerialComm.appid`` 属性,这样应用程序就不会在启动过程中意外删除彼此的临时文件,(这几乎没有必要):

复制代码
System.setProperty("fazecast.jSerialComm.appid", "YOUR_APPLICATION_IDENTIFIER")

或者,如果您计划在 Apache Tomcat 应用程序中使用该库,请在访问SerialPort 类之前将 jSerialComm.library.randomizeNativeName 属性设置为 true,以解决 Tomcat 引导加载程序多次尝试重新初始化该库的问题。您可以使用 -DjSerialComm.library.randomizeNativeName="true" 作为命令行参数,或者在您自己的应用程序中调用以下命令,然后再使用任何 SerialPort 功能:

复制代码
System.setProperty("jSerialComm.library.randomizeNativeName", "true")

为了在您自己的项目中使用 jSerialComm 库,您只需将 JAR 文件添加到您的构建路径中,然后像导入其他 Java 包一样,使用 import com.fazecast.jSerialComm.*; 导入它。

或者,您也可以从 Maven 中央仓库 自动将 jSerialComm 作为依赖项添加到您的项目中。根据您的构建系统,使用以下依赖项声明:

  • Maven:
复制代码
<dependency>
  <groupId>com.fazecast</groupId>
  <artifactId>jSerialComm</artifactId>
  <version>[2.0.0,3.0.0)</version>
</dependency>
  • Ivy:
复制代码
<dependency org="com.fazecast" name="jSerialComm" rev="[2.0.0,3.0.0)"/>
  • Groovy:
复制代码
@Grab(group='com.fazecast', module='jSerialComm', version='[2.0.0,3.0.0)')
  • Gradle:
复制代码
compile 'com.fazecast:jSerialComm:[2.0.0,3.0.0)'
  • Gradle (.kts):
复制代码
compile("com.fazecast:jSerialComm:[2.0.0,3.0.0)")
  • Buildr:
复制代码
compile.with 'com.fazecast:jSerialComm:jar:[2.0.0,3.0.0)'
  • Scala/SBT:
复制代码
libraryDependencies += "com.fazecast" % "jSerialComm" % "[2.0.0,3.0.0)"
  • Leiningen:
复制代码
[com.fazecast/jSerialComm "[2.0.0,3.0.0)"]

最后,如果您正在使用的设备没有提供其他允许临时本机文件运行的方式,jSerialComm 支持使用启动标志从用户定义的位置加载其本机库的预提取版本:-DjSerialComm.library.path="<LIB_PATH>",其中LIB_PATH可以是包含适合您正确架构的单个本机 jSerialComm 库的目录,也可以是从 jSerialComm JAR 文件内部提取的整个特定于架构的目录结构;但是,这应该作为最后的手段,因为它使版本控制和升级变得更加困难和容易出错。

故障排除

如果您使用的是 Linux,并且此库似乎无法正常工作,请确保您已设置正确的权限来访问系统上的串行端口。测试此问题的一种方法是以 root 身份运行您的应用程序,或使用sudo 命令。如果一切正常,您将需要在未来以 root 身份运行您的应用程序,或者修复系统上的权限问题。有关更多说明,请参阅故障排除 wiki

在一些使用基于 ARM 的定制 CPU 和/或权限极其严格的系统上,该库可能无法确定底层系统架构是否为 ARM。在这种情况下,您可以强制库禁用其自动检测功能,而是直接使用 Java os.arch_full 系统属性指定架构。此属性的可接受值目前包括以下之一:armv5armv6armv7armv8_32armv8_64ppc64lex86x86_64

此外,某些系统可能会阻止从系统临时文件夹执行库。如果您遇到此问题,可以在首次使用此库之前,在程序中添加 System.setProperty("java.io.tmpdir", "/folder/where/execution/is/allowed") 来指定一个其他限制较少的临时文件夹。执行此操作时,请确保您指定的文件夹已存在,并且已设置正确的权限,以允许执行共享库。

或者,您也可以通过在命令行中运行 Java 应用程序,并指定 java.io.tmpdir 目录作为附加参数来实现相同的效果,例如:java -Djava.io.tmpdir=/folder/of/your/choice -jar yourApplication.jar

在 Windows 上,您可以通过设置 TMP环境变量(通过“设置”->“系统属性”->“环境变量”GUI 或在命令终端中通过 SET TMP=C:\Desired\Tmp\Folder )来实现相同的效果,尽管尽可能通过 Java 设置此变量更为可取。

Linux 用户需注意:如果您在基于事件的模式下运行此库,LISTENING_EVENT_DATA_WRITTEN 事件将永远不会发生。这不是错误,而是 Linux 操作系统的限制。

对于其他故障排除问题,请查看使用示例 Wiki故障排除 Wiki 中是否有答案。

如果您的问题仍未得到解答,请随时在此项目的 GitHub 页面 上创建问题报告,我们将很乐意为您解答。

构建

不建议自行构建此库(至少不建议用于分发),因为它需要跨多个平台进行原生编译。建议在您的应用程序中直接使用预先构建的 ```jSerialComm`` 库。有关安装/使用说明,请跳至 使用部分。

如果您选择从源代码构建此库,请按照 构建教程中的说明设置所需的工具链。

关于项目

jSerialComm 是一个 Java 库,旨在提供一种平台无关的方式来访问标准串行端口(串口),无需外部库、本机代码或任何其他工具。它旨在替代 RxTx 和(已弃用的)Java 通信 API,具有更高的易用性、增强的超时支持以及同时打开多个端口的能力。
LGPL
C
1,456
309
64
2015-02-27
2025-07-04

增长趋势 - stars