前回のWeDo BLE接続が、gatttoolでは扱いにくかったので、Processingで使えるようにしました。
しかしProcessingでは該当するライブラリがなかったので、手取り早くgatttoolをラップする形で作ってみました。
環境: Raspberry Pi3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import processing.net.*; Server srv; Client cli; void setup(){ srv = new Server(this, 2345); delay(1000); launch("/home/pi/work/proc"); delay(2000); cli = new Client(this, "localhost", 1234); delay(2000); cli.write("connect\n"); delay(2000); } void draw(){ Client req = srv.available(); if(req != null){ String rcv = req.readString(); println(rcv); } } void mousePressed(){ if(mouseButton == LEFT){ cli.write("char-write-cmd 3d 01010164\n"); } else if(mouseButton == RIGHT){ cli.write("char-write-cmd 3d 01010100\n"); } } void keyPressed(){ if(key == 'q'){ cli.write("exit\n"); cli.stop(); srv.stop(); } } |
左クリックで前進、右クリックで停止をします。キー’q’で接続を解除します。
外部プロセスの中身は以下のようになっています。(XXはデバイスによる)
#!/bin/sh
nc -l 1234 | gatttool -I -b XX:XX:XX:XX:XX:XX | nc localhost 2345
あまり美しくないのですが、結構安定して接続できます。
とりあえずこの方法で動作確認したメモでした。