Raspberry Pi:使用帧缓冲图像查看器(FBI),有没有办法在不打开另一个FBI显示的情况下更改图像?

时间:2015-11-16 15:00:41

标签: python raspberry-pi

所以,我有一个TFT屏幕和一个连接4个按钮的Raspberry Pi。按下按钮时,与该按钮关联的图像将使用fbi显示在屏幕上。按照我编写的方式,当按下按钮时,它将在旧按钮上创建一个新的fbi显示。所以,我最终将一堆fbi显示器叠放在一起。

有没有办法只用新的fbi显示替换当前的fbi显示,而不是创建一个叠加在旧的显示上?

这是我的python代码:

import RPi.GPIO as GPIO
import os
import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)


os.system("sudo fbi -T 2 -d /dev/fb1 -noverbose -a normal.png")

var = 1  
while var == 1:
  if (GPIO.input(23) == False):
    os.system("sudo fbi -T 2 -d /dev/fb1 -noverbose -a happy.png")

  if (GPIO.input(22) == False):
    os.system("sudo fbi -T 2 -d /dev/fb1 -noverbose -a sad.png")

  if (GPIO.input(27) == False):
    os.system("sudo fbi -T 2 -d /dev/fb1 -noverbose -a angry.png")

  if (GPIO.input(18) == False):
    os.system("sudo fbi -T 2 -d /dev/fb1 -noverbose -a surprised.png")

GPIO.cleanup()  

1 个答案:

答案 0 :(得分:2)

您可以在显示新图像之前终止该过程。

....
 if (GPIO.input(23) == False):
    os.system("sudo killall -9 fbi")
    os.system("sudo fbi -T 2 -d /dev/fb1 -noverbose -a happy.png")

....