我用过 NeuronRobotics nrjavaserial 在Linux和Mac OS / X上取得了巨大成功。它将本机库嵌入到jar文件中,然后呈现Java接口。它来自RXTX,因此我希望它对您的项目来说不会是一个巨大的变化。
的 主要编辑 强>
为了节省你一些时间,这就是我目前正在做的事情。请注意,我 的 不 强> 此时使用IDE - 这是所有命令行。
import gnu.io.NRSerialPort; import gnu.io.UnsupportedCommOperationException; import java.io.DataInputStream; import java.io.IOException; import java.util.Arrays; public class PulseOximeter { public static void main( String[] argv ) throws IOException, UnsupportedCommOperationException { NRSerialPort serial = new NRSerialPort("/dev/rfcomm0", 115200); serial.connect(); DataInputStream ins = new DataInputStream(serial.getInputStream()); // read the first 10000 bytes a byte at a time for( int i = 0; i < 10000; i++ ) { int b = ins.read(); if( b == -1 ) { System.out.println( "got EOF - going to keep trying" ); continue; } } serial.disconnect(); } }
和构建它的maven文件:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>tld.domainname</groupId> <artifactId>bluetooth</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <java.min.version>1.8</java.min.version> <maven.min.version>3.2.0</maven.min.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <resource.directory>src/main/resources</resource.directory> </properties> <prerequisites> <maven>${maven.min.version}</maven> </prerequisites> <dependencies> <dependency> <groupId>com.neuronrobotics</groupId> <artifactId>nrjavaserial</artifactId> <version>3.12.0</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>${resource.directory}</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>${java.min.version}</source> <target>${java.min.version}</target> <showDeprecation>true</showDeprecation> <showWarnings>true</showWarnings> <compilerArgument>-Xlint:all</compilerArgument> </configuration> </plugin> </plugins> </build> </project>
这是Linux版本的代码 - 最大的变化是串行端口名称(“/ dev / rfcomm0”)部分。我这里没有我的Mac所以对不起我忘记了Mac设备的名称,但是如果我没记错的话,它就在/ dev中。
所有这些示例都是从串行(USB)端口读取的字节。请注意,Java会让它变得更有趣,因为它们会再次出现 整数 即使它们确实是字节,所以你需要做一些有趣的操作。
几年前,当我设置一个Java应用程序来接收来自arduino的生物数据时,我遇到了同样的问题。
我与RXTX库进行了摔跤和搏斗,但从未能让它们正常工作(在Linux和Windows上)。这似乎是一个普遍的问题( RXTX的稳定替代品 )。
的 我的建议: 强> 离开RXTX库。
我发现一个替代的库,它工作得很好并且易于实现 的 Java简单串行连接器(JSSC) 强> 图书馆找到了 https://github.com/scream3r/java-simple-serial-connector 。 以下是一些例子: http://www.javaprogrammingforums.com/java-se-api-tutorials/5603-jssc-library-easy-work-serial-ports.html
至于在eclipse中设置,你应该能够以下列方式包含jar:
右键单击您的项目 - &gt;配置构建路径 - &gt;添加外部JAR - &gt;选择你下载的jar。 现在在包资源管理器中,您应该看到一个“引用的库”项,当展开时,它会显示您添加的jar。
最后,值得您花时间研究Maven或Gradle等工具。它们极大地简化了添加外部库。
干杯!