保持if语句

时间:2016-04-09 11:06:56

标签: python opencv while-loop raspberry-pi

我用Python编写脚本,每次在GPIO引脚17上输入时用网络摄像头拍照。我使用while循环,只要连接到引脚17的按钮不是按下,设置为True。如果将其设置推送到False,则代码开始。

我的问题是:if语句中的代码在释放buttom之前完成并设置回True。所以它只是停下来并显示图片。知道如何让代码完成,然后它返回状态True?

编辑:只要按下按钮,if语句就会运行。释放后停止。含义:在我推送到发布之前,脚本只能显示图片,而#34; waitKey"命令和beyound dosent执行。因为它回到了" True"。但我需要它完成

下面是代码:

do {
    $stmt = $mysqli->prepare("SELECT `Started` FROM `verifyAccounts` WHERE `Username` = ?");
    $stmt->bind_param("s", $Username);
    $stmt->execute();
    sleep(2);
} while (/*VALUE OF `Started`*/ != 0);

if (/*VALUE OF `Started`*/ == 1) {
    echo "Correct";
} elseif (/*VALUE OF `Started`*/ == 2) {
    echo "Incorrect";
}

2 个答案:

答案 0 :(得分:1)

正如评论中已经提到的,if语句之后的代码没有正确缩进。

尝试使用下面的格式化。

import RPi.GPIO as GPIO
import time
import cv2
import os    
GPIO.setmode(GPIO.BCM)    
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True:
    input_state = GPIO.input(17)
    if not input_state: # not False = True
        print('Button Pressed')
        capture = cv2.VideoCapture(0)
        capture.set(3,1280)
        capture.set(4,1024)
        ret, img = capture.read()
        cv2.imshow("input", img)
        cv2.waitKey(1500)
        del(capture)
        cv2.VideoCapture(0).release()
        input_state = True 

答案 1 :(得分:0)

我不是一个python编码器,所以不确定语法:

尝试此代码:循环直到条件成立,而不是单个if语句。

import RPi.GPIO as GPIO
import time
import cv2
import os

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True:
    input_state = GPIO.input(17)
    while input_state:
        input_state = GPIO.input(17)
    print('Button Pressed')
    capture = cv2.VideoCapture(0)
    capture.set(3,1280)
    capture.set(4,1024)
    ret, img = capture.read()
    cv2.imshow("input", img)
    cv2.waitKey(1500)
    del(capture)
    cv2.VideoCapture(0).release()