Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用node.js检查sense帽子屏幕的开|关_Node.js_Raspberry Pi_Node Red - Fatal编程技术网

如何使用node.js检查sense帽子屏幕的开|关

如何使用node.js检查sense帽子屏幕的开|关,node.js,raspberry-pi,node-red,Node.js,Raspberry Pi,Node Red,我正在使用sense帽子在raspberry pi工作。现在我正在使用红色节点的sense帽子模拟器。现在我必须检查sense帽子屏幕的状态。我该怎么做 我尝试使用: msg.payload.screen==“打开” 及 msg.screen==“打开” 但是没有起作用。谁能帮帮我吗 我也尝试过: msg.background==“off | on”和msg.device==“off | on”根本不确定您实际想做什么,但这应该会有所帮助 SenseHat帧缓冲区是一个8x8 LED矩阵。这意味

我正在使用sense帽子在raspberry pi工作。现在我正在使用红色节点的sense帽子模拟器。现在我必须检查sense帽子屏幕的状态。我该怎么做

我尝试使用:

msg.payload.screen==“打开”

msg.screen==“打开”

但是没有起作用。谁能帮帮我吗

我也尝试过:
msg.background==“off | on”
msg.device==“off | on”

根本不确定您实际想做什么,但这应该会有所帮助

SenseHat帧缓冲区是一个8x8 LED矩阵。这意味着有64个LED,您可以向
/dev/fb1
中的每个地址写入16位RGB565值,以使LED显示特定颜色。64个LED,每个LED的2个字节表示128个字节

因此,要关闭所有LED,您可以发送一组(128字节)的零:

dd if=/dev/zero of=/dev/fb1 bs=128 count=1
以及打开前几个随机颜色的LED:

echo AnyJunk > /dev/fb1
因此,如果要检查所有指示灯是否熄灭,则需要将帧缓冲区中的128字节与零进行比较。您可以通过生成128字节的零,然后像这样运行
cmp

cmp <(cat /dev/fb1) <(dd if=/dev/zero bs=128 count=1)

cmp“传感器屏幕的状态”是什么意思?任何LED是否为非黑色?@techhunter侧边栏信息告诉您节点允许您执行的所有操作。我不知道你从哪里得到了
screen
,但这不是这个节点所做的。发送到设备的命令应该:具有命令id/类型的'display'被格式化为JSON对象,有一个名为'screen'的属性,其值为'on'或'off'。例如:{“屏幕”:“开”}或{“屏幕”:“关”}@Knollerary我想检查sense hat是否收到了{screen:on}{screen:off}命令。@techhunter啊,你正在上物联网课程。任务是通过WatsonIoT从Bluemix上的Node RED向运行Node RED的raspberry Pi发送命令。Pi上的流应该接收该命令,并将其转换为适当的命令以发送到附加的SenseHAT。您不会将{screen:on}发送到SenseHAT本身。请关注Coursera作业论坛。您好,非常感谢您的代码。但它看起来像linux平台上的python代码。我赞成你的答案,因为它将有助于其他人谁搜索以上。
echo AnyJunk > /dev/fb1      # Turn some LEDs on

# Check all zero, but they are not so the comparison fails
cmp <(cat /dev/fb1) <(dd if=/dev/zero bs=128 count=1)
1+0 records in
1+0 records out
128 bytes (128 B) copied, 0.000237917 s, 538 kB/s
/dev/fd/63 /dev/fd/62 differ: byte 1, line 1

echo $?
1
dd if=/dev/zero of=/dev/fb1 bs=128 count=1

cmp <(cat /dev/fb1) <(dd if=/dev/zero bs=128 count=1)
1+0 records in
1+0 records out
128 bytes (128 B) copied, 0.000289063 s, 443 kB/s

echo $?
0