我正在尝试创建一个可以通过USB进行串行通信传输和接收的程序。我通过研究我需要的两个文件学到了:一个包含实际库的.jar
文件,以及我所了解的librxtxSerial.jnilib
,它是一个驱动程序?
从以下网站我了解到,为了开始串行通信过程,我的项目中必须存在这两个。
http://rxtx.qbang.org/wiki/index.php/Download
我在mac上使用Eclipse IDE,似乎无法获得正确的文件配置以使其工作。网上任何地方都没有明确的答案,我希望有人可以为每个人提供帮助。
答案 0 :(得分:4)
我在Linux和Mac OS / X上使用NeuronRobotics nrjavaserial取得了巨大成功。它将本机库嵌入到jar文件中,然后呈现Java接口。它来自RXTX,因此我希望它不会对您的项目造成巨大变化。
MAJOR EDIT
为了节省你一些时间,这就是我现在正在做的事情。请注意,此时我使用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版本的代码 - 最大的变化是串口名称(&#34; / dev / rfcomm0&#34;)部分。我没有在这里安装我的Mac,所以我很遗憾我忘记了Mac设备的名称,但它在/ dev中 - 如果我没记错的话,还有蓝牙功能。
所有这些示例都是从串行(USB)端口读取的字节。请注意,Java使它更有趣,因为它们以整数的形式返回,即使它们确实是字节,因此您可以在需要进行任何位操作时获得乐趣。
答案 1 :(得分:1)
几年前,当我设置Java应用程序以接收来自arduino的生物数据时,我遇到了同样的问题。
我与RXTX库进行了摔跤和搏斗,并且无法让它们正常工作(在Linux和Windows上)。这似乎是一个常见问题(Stable alternative to RXTX)。
我的建议:远离RXTX库。
我发现一个非常好用且易于实现的替代库是在https://github.com/scream3r/java-simple-serial-connector找到的 Java简单串行连接器(JSSC)库。
以下是一些示例: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等工具。它们极大地简化了添加外部库。
干杯!