最近、ブリッジから RGB 値 (0-255) を取得するための Arduino(Yun) スケッチを作成しています。私はBridge.begin()
セットアップにあり、ループには次のものがあります:
Bridge.get("r", r, 4);
Bridge.get("g", g, 4);
Bridge.get("b", b, 4);
ブリッジから値を取得し (第 1 引数)、ローカル変数をそれに設定する必要があります (第 2 引数)。ローカル変数 r、g、および b はchar r[4];
(明らかにそれぞれ適切な名前で) で定義されます。私はこれをすべて理解していますが、問題があります:
最初のBridge.get()
呼び出しは常に\u0001
(見出しの開始) を返します。ループの先頭にダミーのブリッジ get を追加することでこれを解決しましたが、最初の呼び出しがすべてのループで「見出しの開始」を返すため、これは奇妙に思えます。
これはなぜですか?それを修正するより良い方法はありますか?
編集:
このコードは、Yun の Linux 側で実行される Python スクリプトによってブリッジに配置されます。RGB値を計算するコードはかなり長く、面倒で、問題の一部であってはならないため、以下は短縮されています(有名な最後の言葉:D)。
#!/usr/bin/python
from sys import path
path.insert(0, '/usr/lib/python2.7/bridge')
from bridgeclient import BridgeClient
link = BridgeClient()
link.put("r", str(int(r)))
link.put("g", str(int(g)))
link.put("b", str(int(b)))
arduino のコード (もう一度要約) は次のとおりです。
#include <Process.h>
char r[4];
char g[4];
char b[4];
void setup() {
Bridge.begin();
}
void loop() {
Process colo;
colo.runShellCommand("/mnt/sda1/colours.py");
while (colo.running());
Bridge.get("r", r, 4); //this command(whatever key it’s getting) always returns \u0001
Bridge.get("r", r, 4);
Bridge.get("g", g, 4);
Bridge.get("b", b, 4);
}