最近,我一直在写一个 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);
}