Processing x Funnel x Arduino を試してみた

clayfish2009-04-27

Funnel 009 がリリースされたので試してみました.

うまくいったこと

FunnelServer.exe を起動せずに Processing から Arduino に接続して examples\Arduino\digitalOut\digitalOut.pde がうまいことうごきました.
うちの PC の場合, Arduino と接続する COM ポートは COM6 になるため, C:\Users\ユーザ名\Documents\Processing\libraries\funnel\library\settings.arduino.txt のポート番号を COM6 に変更する必要がありました.*1

うまくいかなかったこと

FunnelServer.exe を起動した状態で Arduino と接続しようとすると接続できない. 以下のようなエラーメッセージが Processing のコンソールにでて FunnelServer.exe が落ちる.

portStatus[]13 type 3
C:\Users\ユーザ名\Documents\Processing\libraries\funnel\library\settings.arduino.txt
current directory: D:\bin\processing-1.0.3-expert\.
I/Oモジュールと接続中です…
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
エラー:シリアルポートのオープンに失敗しました

gnu.io.PortInUseException: Unknown Application
at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354)
at funnel.FirmataIO.begin(FirmataIO.java:446)
at funnel.ArduinoIO.(ArduinoIO.java:33)
at funnel.FunnelServer.(FunnelServer.java:131)
at processing.funnel.IOSystem.waitingServer(IOSystem.java:140)
at processing.funnel.Arduino.startingServer(Arduino.java:92)

at processing.funnel.IOSystem.(IOSystem.java:72)
エラー:Arduino I/Oボードをオープンできませんでした at processing.funnel.Firmata.(Firmata.java:20)

at processing.funnel.Arduino.(Arduino.java:44)
at processing.funnel.Arduino.(Arduino.java:60)
at digitalOut.setup(digitalOut.java:38)
at processing.core.PApplet.handleDraw(PApplet.java:1400)
at processing.core.PApplet.run(PApplet.java:1328)
at java.lang.Thread.run(Thread.java:619)

waiting server
waiting server
waiting server
waiting server
waiting server
waiting server
waiting server
waiting server
waiting server
waiting server
waiting server

Check to connect Arduino or settings.txt C:\Users\ユーザ名\Documents\Processing\libraries\funnel\library\settings.arduino.txt

opened host address 127.0.0.1
ececCode /reset
reboot OK
configureation OK
addModule() Arduino
funnelServiceThread start
notify thread start
dispose funnel
funnelServiceThread out
ececCode /quit

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:113)
at processing.funnel.CommandPort.receive(CommandPort.java:127)
at processing.funnel.OSCClient.waitFunnel(OSCClient.java:73)
at processing.funnel.IOSystem.execCode(IOSystem.java:302)

notify thread out at processing.funnel.IOSystem.quit(IOSystem.java:372)

at processing.funnel.IOSystem.dispose(IOSystem.java:218)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
commandPort close at java.lang.reflect.Method.invoke(Method.java:597)

at processing.core.PApplet$RegisteredMethods.handle(PApplet.java:724)
at processing.core.PApplet$RegisteredMethods.handle(PApplet.java:717)

at processing.core.PApplet.stop(PApplet.java:667)
dispose funnel at processing.core.PApplet.run(PApplet.java:1372)

at java.lang.Thread.run(Thread.java:619)

まとめ

Processing x Funnel x Arduino で動かすときは

  • FunnelServer.exe を起動しない
  • C:\Users\ユーザ名\Documents\Processing\libraries\funnel\library\settings.arduino.txt

とする必要があるようです.

*1:Vista 上のパスなので XP な人は読みかえてください