Thu 05/26, 2011

RXTX on NetBSD [Computer and Networking ]

RXTX は java でシリアルやパラレルポートをアクセスするためのネイティブライブラリだ。これを NetBSD-5.1/i386 + OpenJDK で使うためのメモ。おそらく需要は限りなくゼロに近いと思われる。

まずは OpenJDK を pkgsrc (/usr/pkgsrc/language/openjdk7/) で導入する。今回はソースからビルドしたがバイナリでも良い筈。環境変数 JAVA_HOME と PATH の設定もする。Linux 用バイナリを使う sun-java だとエミュレーション環境で動作するため、このような目的には不向きだと思う。

# cd /usr/pkgsrc/language/openjdk7
# make install
# export JAVA_HOME=/usr/pkg/java/openjdk7
# PATH=/usr/pkg/java/openjdk7/bin:$PATH

RXTX のソースコードを取得、ビルド。一応 NetBSD もサポートされているようなことが書かれているが、そのままでは通らないから、適宜調整して行く。

# cd ~
# wget http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7r2.zip
# unzip rxtx-2.1-7r2.zip
# cd rxtx-2.1-7r2
# ./configure
  • configure で host_os がうまく設定されないようなので 1583 行目付近を変更し、直接 host_os="netbsd" と記述する。
  • ビルドには gmake が必要。/usr/bin/make では通らない。
  • シェアードライブラリの作成とインストールがうまく行かないため、とりあえず手動でおこなった。
  • src/RXTXCommDriver.java で java.ext.dirs プロパティが複数の値を返すことに対応していないため、とりあえず最初の値 (/usr/pkg/java/openjdk7/jre/lib/ext) だけを参照するように変更した。
  • src/RXTXCommDriver.java の NetBSD 用シリアルポート名の接頭詞に USB シリアルのための "ttyU" を追加する。(追記 /dev/dty* も追加したほうがよさそうだ。)
  • src/SerialImp.c でポートの排他利用制御のための uucp_lock と uucp_unlock 関数を無効(ダミー)にする。真面目に実装するなら /var/spool/lock/ とかにロックファイルを作る。
  • gnu.io.rxtx.properties ファイルを準備。
  • 今回はシリアルのみでパラレルについてはとりあえず無視している。
# gmake
  :
# cp RXTXcomm.jar /usr/pkg/java/openjdk7/jre/lib/ext
# cd i386-unknown-netbsdelf5.1
# gcc -shared ./libs/fuserImp.o ./libs/SerialImp.o -Wl,-soname -Wl,librxtxSerial-2.1-7.so -o .libs/librxtxSerial-2.1-7.so
# gcc -shared ./libs/fuserImp.o ./libs/ParallelImp.o -Wl,-soname -Wl,librxtxParallel-2.1-7.so -o .libs/librxtxParallel-2.1-7.so
# cd i386-unknown-netbsdelf5.1/.libs
# cp -P *.so /usr/pkg/lib
# cat > /usr/pkg/java/openjdk7/jre/lib/ext/gnu.io.rxtx.properties
os.name=NetBSD
gnu.io.rxtx.SerialPorts=/dev/ttyU0:/dev/tty00:/dev/tty01
^D
#

Pepper こうして出来上がったライブラリを Processing からも使うことができた。写真は Gainer IO モジュールの Pepper を操作しているところ。実はこれが目的だった。

Posted by masato at 09:46 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1805
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?