我正在使用sense-hat在树莓派中工作。现在我在节点红色中使用感应帽模拟器。现在我必须检查sense-hat屏幕的状态。我怎么能这样做?
我尝试过使用:
msg.payload.screen=="on"
和
msg.screen=="on"
但没有奏效。任何人都可以帮帮我吗?
我也尝试过:
msg.background=="off|on"
和msg.device=="off|on"
答案 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,矩阵,命令行,命令行