【问题标题】:raspberry pi 3 webbrowser controlled by buttons (Python)由按钮控制的树莓派 3 网络浏览器(Python)
【发布时间】:2018-01-03 13:38:06
【问题描述】:

您好,我正在尝试让 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 会得到相同的结果。

【问题讨论】:

    标签: python chromium raspberry-pi3 gpio


    【解决方案1】:

    发生这种情况的原因是因为 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)
    

    【讨论】:

    • 非常感谢,这很容易,这是不可能的,我还没有代表投票,但这是解决方案
    • 谢谢,如果可以的话,请对此答案投票或将其标记为已接受的解决方案。很高兴我能提供帮助。
    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多