我用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";
}
答案 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()