clayfish2009-04-27

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

うまくいったこと

FunnelServer.exe を起動せずに Processing から Arduino に接続して examples[Arduino](http://d.hatena.ne.jp/keyword/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.<init>(ArduinoIO.java:33)
	at funnel.FunnelServer.<init>(FunnelServer.java:131)
	at processing.funnel.IOSystem.waitingServer(IOSystem.java:140)
	at processing.funnel.Arduino.startingServer(Arduino.java:92)

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

	at processing.funnel.Arduino.<init>(Arduino.java:44)
	at processing.funnel.Arduino.<init>(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 な人は読みかえてください