在java串口编程连接电能表取数据时,用到了RXTXcomm包,这个包在windows上依赖两个文件rxtxParallel.dll和rxtxSerial.dll,然而将程序移植到树莓派上面时在网上下载了linux各个版本的librxtxSerial.so都用不了,因为不支持树莓派arm架构,所幸在网上看到了下面一篇文章,重新编译后自动在${java}/jre下面生成了一个librxtxSerial.so文件,程序就能跑起来了,以下为原文:

在使用RaspberryPi树莓派的接口编程时,使用RXTX框架,但是搜遍RXTX的官网其他地方并未找到与树莓派系统对应的框架版本。原因很简单,RaspberryPi树莓派处理器使用的是ARM架构,而一般电脑则为x86或x64架构,均不能适用,故只能在系统中重新编译安装RXTX源码。

于是网上找到这个方法,记录一下(这里未使用树莓派联网下载,而是使用内存卡将下载好的zip文件进行解压):

最新的RXTX稳定版本是rxtx 2.1-7r2。首先用wget获取源码包并解压

1
2
3
cd  /tmp
wget http: //rxtx .qbang.org /pub/rxtx/rxtx-2 .1-7r2.zip
unzip rxtx-2.1-7r2.zip

如果直接MAKE编译安装,可能会遇到以下两种错误:

错误1:/tmp/rxtx-2.1-7r2/./src/I2CImp.c:135: error: ‘UTS_RELEASE’ undeclared (first use in this function)

这是由于version.h中缺少’UTS_RELEASE’信息,需要手工添加。先获取当前系统的版本信息:

1
uname  -r

然后在/usr/include/linux/version.h中添加

1
#define UTS_RELEASE "3.10.24+"

3.10.24+为上一步中获得的版本号

错误2:libtool: install: armv6l-unknown-linux-gnu/librxtxRS485.la’ is not a directory

这个错误会出现在JDK1.6及以上的运行环境下,需要对configure文件进行修改。在configure文件中找到

1
1.2*|1.3*|1.4*|1.5*

这一行,在后边添加上当前JDK的版本号即可,如

1
1.2*|1.3*|1.4*|1.5*|1.6*|1.7*|1.8*

完成以上两项修改后,就可以正常编译安装了。如果看到 Libraries have been installed in:/usr/lib/jvm/jdk-7-oracle-armhf/jre/lib/arm 则说明RXTX安装已经成功。


Logo

更多推荐