python - 由按钮控制的 raspberry pi 3 网络浏览器(Python)

标签 python chromium raspberry-pi3 gpio

嗨,我正在尝试让 2 个网络摄像头输出显示在以全屏模式运行的网络浏览器中。 到目前为止,只要我禁用全屏/信息亭,它就可以工作,一旦全屏打开,我的脚本就会暂停。 当我关闭网络浏览器时,脚本将继续,我可以使用打开新浏览器的按钮,然后脚本再次暂停(目的是脚本无限循环而不暂停)

import RPi.GPIO as GPIO
from time import sleep
import os
url1 = 'http://10.0.0.31/mjpg/video.mjpg'
url2 = 'http://10.0.0.32/mjpg/video.mjpg'
GPIO.setmode(GPIO.BCM)
array = [4,17]
GPIO.setup(array, GPIO.IN, pull_up_down=GPIO.PUD_UP)
os.system('chromium-browser --app=http://10.0.0.31/mjpg/video.mjpg --kiosk')
while True:
if ( GPIO.input(17) == False ):
    print('Button 1 Pressed')
    os.system('date')
    os.system('pkill chromium-browser')
    print (GPIO.input(17))
    os.system('chromium-browser --app=http://10.0.0.32/mjpg/video.mjpg --kiosk')
    sleep(0.5)
if ( GPIO.input(4) == False ):
    print('Button 2 Pressed')
    os.system('date')
    os.system('pkill chromium-browser')
    print (GPIO.input(4))
    os.system('chromium-browser --app=http://10.0.0.31/mjpg/video.mjpg --kiosk')
    sleep(0.5)
else:
    os.system('clear')
    print ('Press a key')
    sleep(0.1)

有没有一种方法可以在不做大改变的情况下解决这个问题(因为我注意到很多人都是 Selenium 的粉丝,这不是一个选择)并且使用 subprocess 而不是 os.system 会给出相同的结果。

最佳答案

发生这种情况的原因是 os.system() 等待进程完成,并且在发生这种情况之前不会继续您的代码。通过在命令末尾使用“&”,命令不必完成,并且您的按钮应该仍然可用。

#Import libraries
import RPi.GPIO as GPIO
from time import sleep
import os

#Set up the URLs
url1 = 'http://10.0.0.31/mjpg/video.mjpg'
url2 = 'http://10.0.0.32/mjpg/video.mjpg'

#Set up GPIO pins
GPIO.setmode(GPIO.BCM)
array = [4,17]
GPIO.setup(array, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#Open the first webpage
os.system('chromium-browser --app=http://10.0.0.31/mjpg/video.mjpg --kiosk & ')

while True:
    if ( GPIO.input(17) == False ):
        print('Button 1 Pressed')
        os.system('date')
        os.system('pkill chromium-browser')
        print (GPIO.input(17))
        os.system('chromium-browser --app=http://10.0.0.32/mjpg/video.mjpg --kiosk &')
        sleep(0.5)
    if ( GPIO.input(4) == False ):
        print('Button 2 Pressed')
        os.system('date')
        os.system('pkill chromium-browser')
        print (GPIO.input(4))
        os.system('chromium-browser --app=http://10.0.0.31/mjpg/video.mjpg --kiosk &')
        sleep(0.5)
else:
    os.system('clear')
    print ('Press a key')
    sleep(0.1)

关于python - 由按钮控制的 raspberry pi 3 网络浏览器(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078554/

相关文章:

python - 将字符串从 Python 返回到 Shell 脚本

python - Pytest 和 Django 设置运行时更改

python - 在计算之前删除包含某些值的组合

google-chrome - 有没有办法调试 chrome 请求排队的原因?

python - 使用 Raspberry Pi3 实现无线传感器网络

python - 在 Raspberry PI 启动时运行 OpenVINO Python 脚本

python:我可以在不(明确)使用整数索引的情况下获得稀疏矩阵表示吗?

delphi - 从 Chromium 嵌入式框架 3 打印

java - 如何对 Webview 中加载的网页进行替换

linux - 分配静态 ttyUSB