Java Raspberry Pi RXTX Serial

RXTX on Raspberry Pi

投稿日:

RXTX は Java でシリアル通信を行うためのライブラリです.
RXTX を Raspberry Pi でも使用できるようにしてみます.

Raspberry Pi には Soft-float Debian wheezy と Java SE Development Kit 7u21 を入れておきます.
Soft-float Debian wheezy on Raspberry Pi
Java SE Development Kit 7u21 on Raspberry Pi

RXTX のサイトの Download から rxtx 2.2pre2 (prerelease) の Source の rxtx-2.2pre2.zip をダウンロードします.
RXTX

ダウンロードしたファイルを解凍してコンパイルします.

unzip rxtx-2.2pre2.zip
cd rxtx-2.2pre2
./configure
make

下記のようなエラーでコンパイルが終わりますが無視します.
(結果として必要なファイルが生成されているため)

gcc -I/rxtx-2.2pre2 -Iarmv6l-unknown-linux-gnu -I. -I/usr/java/default/include -I/usr/java/default/include/./linux/ -g -O2 -D_POSIX_SOURCE -D_BSD_SOURCE -D__need_timespec -c /rxtx-2.2pre2/./src/I2CImp.c  -fPIC -DPIC -o /rxtx-2.2pre2/armv6l-unknown-linux-gnu/.libs/I2CImp.o
/home/pi/rxtx-2.2pre2/./src/I2CImp.c: In function 'Java_gnu_io_I2CPort_Initialize':
/home/pi/rxtx-2.2pre2/./src/I2CImp.c:135:5: error: 'UTS_RELEASE' undeclared (first use in this function)
/home/pi/rxtx-2.2pre2/./src/I2CImp.c:135:5: note: each undeclared identifier is reported only once for each function it appears in
libtool: link: `/home/pi/rxtx-2.2pre2/armv6l-unknown-linux-gnu/I2CImp.lo' is not a valid libtool object
make: *** [armv6l-unknown-linux-gnu/librxtxI2C.la] Error 1

生成されたファイル(2つ)を適当な場所,例えば /usr/local/lib にでもコピーしておきます.

sudo cp RXTXcomm.jar /usr/local/lib/
sudo cp armv6l-unknown-linux-gnu/.libs/librxtxSerial-2.2pre1.so /usr/local/lib/librxtxSerial.so

librxtxSerial.so は JRE ディレクトリにも置いておかないといけないかも.

sudo cp armv6l-unknown-linux-gnu/.libs/librxtxSerial-2.2pre1.so /usr/java/default/jre/lib/arm/librxtxSerial.so

ここでコピーをし忘れていると,RXTX を使用したプログラム実行時に下記のようなエラーが出る場合があります.

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver

最後に PC-OP-RS1 でシリアル通信を行うテストプログラムを Raspberry Pi で実行してみます.

java -jar test.jar

ちなみに自作のテストプログラムの実行結果は下記のような感じです.
(WARNING が出てるけど問題なく動作しているので気にしない)

WARNING:  RXTX Version mismatch
        Jar version = RXTX-2.2pre1
        native lib Version = RXTX-2.2pre2
send 0x69
receive 0x4f
close

-Java, Raspberry Pi, RXTX, Serial

Copyright© hirooka.pro , 2013-2018 All Rights Reserved.