0

最近,我一直在写一个 Arduino(Yún) 草图来从桥上获取 RGB 值(0-255)。我Bridge.begin()在设置和循环中有以下内容:

Bridge.get("r", r, 4);
Bridge.get("g", g, 4);
Bridge.get("b", b, 4);

哪个应该从桥(第一个参数)获取值并将局部变量设置为它(第二个参数)。局部变量 r、g 和 b 定义为char r[4];(显然每个变量都有适当的名称)。我明白这一切,但是有一个问题:

第一次Bridge.get()调用总是返回\u0001(标题开始)。我已经通过在循环的开头添加一个虚拟桥接解决了这个问题,但这对我来说似乎很奇怪,因为第一个调用在每个循环中返回“开始标题”。

为什么会这样,有没有更好的方法来解决它?

编辑:

代码通过在 Yún 的 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