繁体   English   中英

如何异步运行Raspberry Pi GPIO输入按钮?

[英]How to run Raspberry Pi GPIO input buttons asynchronously?

import RPi.GPIO as GPIO
import time
import os
import subprocess
GPIO.setmode(GPIO.BCM)

GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
        input_state=GPIO.input(18)
        input_state1=GPIO.input(17)
        if input_state==False:
                print('Scan Button Pressed')
                subprocess.call(['./ocr.sh'])
        if input_state1==False:
                print('Read Button Pressed')
                subprocess.call(['aplay','temp1.wav'])

如果检测到输入17,将播放temp.wav,而在播放音频文件时,无法检查输入18。 如何在运行的进程之间检查这种情况?

我正在使用名为pigpiod服务,并且在我的树莓派上使用了该服务。 我为pipipiod服务(守护程序)安装了python库。
我检测按钮状态的代码是这样的

!/usr/bin/env python
import pigpio
import time
import datetime

if __name__ == "__main__":
    def cbf(gpio, level):
        if(pi.read(gpio)!=0):
            i = datetime.datetime.now()
            date = i.strftime("%Y-%m-%d %H:%M:%S")
            print "gpio "+str(gpio)+"button gpio gave 1"

            print date
        if(pi.read(gpio)==0):
            i = datetime.datetime.now()
            date = i.strftime("%Y-%m-%d %H:%M:%S")
            print "gpio "+str(gpio)+"button gpio gave 0"

            print date
    pi = pigpio.pi()
    pi.set_mode(23, pigpio.INPUT)
    while True:
        cbf(23, pigpio.EITHER_EDGE)

运行python脚本,然后按按钮。 您将获得不同的值0和1。

因此,基本上,我使用PIGPIO和Python检测树莓派PI的特定GPIO上的按钮按下以及电路闭合或断开。

启动Pigpio守护程序

sudo pigpiod

停止Pigpio守护程序

sudo killall pigpiod

的github

git clone https://github.com/joan2937/pigpio

Python库

sudo apt-get update
sudo apt-get install pigpio python-pigpio python3-pigpio

注意:使用Raspberry上的RPi.GPIO或GPIO服务。 我所有将Pigpio用于温度传感器,RFID读卡器等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM