如何使用node.js检查感应帽屏幕

时间:2017-03-30 16:23:39

标签: node.js raspberry-pi node-red

我正在使用sense-hat在树莓派中工作。现在我在节点红色中使用感应帽模拟器。现在我必须检查sense-hat屏幕的状态。我怎么能这样做?

我尝试过使用:

msg.payload.screen=="on"

msg.screen=="on"

但没有奏效。任何人都可以帮帮我吗?

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

1 个答案:

答案 0 :(得分:1)

完全不确定你真正想要做什么,但这应该会有所帮助。

SenseHat帧缓冲区是一个8x8的LED矩阵。这意味着有64个LED,您可以为/dev/fb1中的每个地址写入一个16位RGB565值,以使LED呈现某种颜色。每个2字节的64个LED产生128个字节。

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

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

用随机颜色开启前几个LED:

echo AnyJunk > /dev/fb1

因此,如果要检查所有LED是否关闭,则需要将帧缓冲区中的128个字节与零进行比较。您可以通过生成128个字节的零然后运行cmp来实现这一点:

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

所以,举个例子:

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

关闭所有LED并再次检查:

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

关键字:Raspberry Pi,RPi,SenseHat,Sense Hat,帧缓冲,/ dev / fb,RGB565,LED,矩阵,命令行,命令行