0

最近、ブリッジから 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);
}
4

0 に答える 0