ArduinoIDEのパッケージに含まれるRXTXライブラリと何かしらバッティングでもしてるのか、などと疑って調べてみたら、見当違いだった。エラーは、/Library/Java/Extensions/に入れた方のライブラリが出しているもので、シリアルポートの排他制御のために使う/var/lock/ディレクトリが存在しなかったのが原因。どうやら、RXTXライブラリのコンパイルオプションでは/var/lock/を使うのがデフォルトらしい。
Arduino Forumに情報があった。
the default compilation options for RXTX create a library that uses locks to help ensure that only one program tries to access the serial port at a time. This requires you to setup the lock directory (this was the purpose macosx_setup.command script that used to come with Arduino and Processing). If you don't set up the lock directory, you get an error like the one you saw.というわけで対策は、/var/lock/を使わないオプションでRXTXをリコンパイルするか、/var/lock/ディレクトリを作成して、ユーザから書き込めるようにパーミッションを設定してやるか。
Arduino Forum - Serial Port Already in Use - MacOSX leopard
僕はお手軽に、
$ sudo mkdir /var/lock
$ sudo chown <user> /var/lock
で済ませた。ちなみに、Arduino Forumの記事にあるような
chmod 777
はちょっとイヤだったので、オーナーを使用ユーザに変更するにとどめておいた。今のところ問題なく動いているようだ。
0 件のコメント:
コメントを投稿