ひでっぷの技術メモ

はてなダイアリーから移行しました

Javaでシリアルポートを制御するDebian(lenny)編[2009.11.16追記あり]

Javaでシリアルポートを使用する場合はRXTXComm.jarを使用しますが、Debianの場合、なんとapt-getできてしまう!

apt-get install librxtx-java

Debian(lenny)ならばこれでRXTXComm.jarは/usr/share/java/の中に、librxtxSerial.soその他もろもろは/usr/lib/の中に入ります。
ただしソースの修正が必要。
今まではRXTXComm.jarを使用するのに
import javax.comm.*

してましたが、これを
import gnu.io.*

にしないといけない。
Windows版だと今まで通りjavax.comm.*なのでこれはちょっと困る。Write Once,Run Anywhereに反するじゃん。
SunがWindowsでも同じようにgnu.io.*でいけるcomm.jarを出してくれればいいんだけど。

認識させるには以下の方法があるらしい。


1.librxtxSerial.soその他もろもろを使用するJavaの..jre/lib/i386内にコピーする。
2.librxtxSerial.soがあるディレクトリをLD_LIBRARY_PATHに含める
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:librxtxSerial.soのあるディレクトリ

3.java起動時にパスを通す
java -Djava.library.path=librxtxSerial.soのあるディレクトリ...


実際やってみて起動したのは
1.に加えてRXTXComm.jarを使用するJavaの..jre/lib/ext/にコピーする。

3.はだめでした。2.は試してません。
ちなみにDebian(etch)だとバグがあってそのままのRXTXComm.jarではうまく動かないようです。
Debianってほんとすばらしい!

[2009.11.16追記]
Win用、Mac用もhttp://www.rxtx.org/にありました。