在RaspberryPi树莓派上使用RXTX进行JAVA串口编程

树莓派已经入手半年多了,第一次拆开包装,刷入系统时的兴奋感还记忆犹新~

上个假期在RPI上完成了一个用JAVA开发的智能家居小项目,将RPI与单片机结合后可以对一些设备进行简单的控制。在项目中,RPI充当了服务器,它的性能对于这种小数据处理量的场合还是游刃有余的。而谈到控制,最简单的控制方式之一就是采用串行接口通信。因为项目采用JAVA语言进行开发,只能通过JNI调用底层的代码实现。至于JVM,原本需要安装预览版的JRE8。不过最新版本的系统镜像中已经内置了支持硬浮点运算的JRE7,因此JAVA环境不再需要额外安装。

在安装RXTX的时候还是遇到了一些小麻烦,因为目前Raspbian源中的librxtx似乎是在openJDK的基础上编译打包的,直接通过apt-get安装的librxtx无法在JRE7中使用。因此,只能从RXTX项目的网站上下载源码包进行编译安装了。

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

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'信息,需要手工添加。先获取当前系统的版本信息:

uname -r

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

#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.2*|1.3*|1.4*|1.5*

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

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安装已经成功。

Tagged with: , , , , , ,
Comments (2)
  • holten 10 11 月, 2016

    最后那一行找不到呀

    • 寒枫秋叶 12 9 月, 2017

      请确认rxtx版本是否与文中一致

Add Your Comment

* required

This is a unique website which will require a more modern browser to work!

Please upgrade today!