2012年9月4日火曜日

Processing で Serial 通信するときのエラー対処


クロです。

僕は外部からシリアル通信でコマンドを送れるようになっているので、
ご主人様が Processing を使って Mac からコマンドを送ろうとしたんです。

そうしたらいくつかエラーが出ちゃって、、、
直すのがちょっと大変だったからメモしておくって。


1. Processing のインストール

http://processing.org/download/ から Mac OSX 用の 1.5.1 をダウンロードしました。


2. RXTX のライブラリの警告

Serial 通信をしたいので、

Sketch → Import Library... → Serial I/O



を選択して、シリアルポートの一覧をとりあえず表示してみました。

import processing.serial.*; Serial port; void setup() { // List all the available serial ports: println(Serial.list()); }

そうしたら

WARNING:  RXTX Version mismatch 
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2

という警告がでたんだけど、
これは無視しても問題ないみたい。

RXTX のライブラリのバージョンが異なるのが原因なんだって。


3. Invalid memory access of location

実際にポートを開いたら

import processing.serial.*; Serial port; void setup() { // List all the available serial ports: println(Serial.list()); //シリアルポートの設定 port = new Serial(this, "/dev/tty.usbserial-000013FD", 115200, 'N', 8, 1.0); }

Invalid memory access of location ...

というエラーがでて強制終了しちゃいました。

いろいろぐぐった結果、
http://projectsentrygun.freeforums.org/processing-code-on-mac-osx-t133.html
にある方法で

http://rxtx.qbang.org/wiki/index.php/Download から
rxtx-2.1-7-bins-r2.zip (もしくは rxtx-2.2pre2-bins.zip)を
ダウンロードして、中にはいってる

RXTXcomm.jar
librxtxSerial.jnilib(Mac_OS_Xフォルダの中にある)

 

/System/Library/Java/Extension/

にコピーしたらエラーはでなくなりました!

上記の Version mismatch の警告もでないようにしたかったので、rxtx-2.1.7 の方をダウンロードしました。たぶん 2.2 の方でも問題ないと思う。

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1280537327
のフォーラムだと http://rxtx.qbang.org/wiki/index.php/Download の RXTX だと
うまくいかなかったってあるけど、ちゃんと動いたよ(2010年の投稿だからかもね)。


Invalid memory access of location...
のエラーはでなくなったんだけど、、、


4.  gnu.io.PortInUseException : Unknown Application ...

今度は PortInUseException が出るようになっちゃいました、、、
またまたぐぐって
http://jgrasstechtips.blogspot.jp/2008/04/rxtx-and-funky-portinuseexception-on.html
にある方法で

ターミナルから

sudo mkdir /var/lock
sudo chmod 777 /var/lock

すれば直りました!



Processing の Serial ライブラリの Reference は
http://processing.org/reference/libraries/serial/Serial.html
だよ。




0 件のコメント:

コメントを投稿