一个独立于平台的 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
作为依赖项添加到您的项目中。根据您的构建系统,使用以下依赖项声明:
<dependency>
<groupId>com.fazecast</groupId>
<artifactId>jSerialComm</artifactId>
<version>[2.0.0,3.0.0)</version>
</dependency>
<dependency org="com.fazecast" name="jSerialComm" rev="[2.0.0,3.0.0)"/>
@Grab(group='com.fazecast', module='jSerialComm', version='[2.0.0,3.0.0)')
compile 'com.fazecast:jSerialComm:[2.0.0,3.0.0)'
compile("com.fazecast:jSerialComm:[2.0.0,3.0.0)")
compile.with 'com.fazecast:jSerialComm:jar:[2.0.0,3.0.0)'
libraryDependencies += "com.fazecast" % "jSerialComm" % "[2.0.0,3.0.0)"
[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
系统属性指定架构。此属性的可接受值目前包括以下之一:armv5
、armv6
、armv7
、armv8_32
、armv8_64
、ppc64le
、x86
或 x86_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`` 库。有关安装/使用说明,请跳至 使用部分。
如果您选择从源代码构建此库,请按照 构建教程中的说明设置所需的工具链。