Ошибка с RPi.GPIO «Ошибка выполнения: ожидание EDGE»Python

Программы на Python
Anonymous
Ошибка с RPi.GPIO «Ошибка выполнения: ожидание EDGE»

Сообщение Anonymous »

Для этого кода я использую RaspberryPi 4 Model B

Код: Выделить всё

import RPi.GPIO as GPIO
import time
import cv2
import numpy as np

# GPIO-Pin für den Klingelknopf
KLINGEL_PIN = 18

# Setup GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(KLINGEL_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# Initialisierung der USB-Kamera
cap = cv2.VideoCapture(0)

# Zeitdauer, wie lange das Bild nach dem Klingeln angezeigt werden soll (in Sekunden)
ANZEIGEZEIT = 10  # in dem Fall 10 Sekunden

def zeige_bild():
# Erstellen eines Vollbildfensters
cv2.namedWindow("Live-Feed", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("Live-Feed", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

# Starten des Live-Feeds
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow("Live-Feed", frame)

# Warten auf eine Taste zum Beenden (oder eine bestimmte Zeit)
key = cv2.waitKey(1)
if key == ord('q') or time.time() > endzeit:  # Zum Beenden 'q' drücken oder Zeit abgelaufen
break

# Schließen des Live-Feed-Fensters
cv2.destroyAllWindows()

def zeige_leeres_bild():
# Erstellen eines Vollbildfensters
cv2.namedWindow("Schwarzbild", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("Schwarzbild", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

# Erstellen eines schwarzen Bildes
schwarzbild = np.zeros((1080, 1920, 3), dtype=np.uint8)

# Anzeigen des schwarzen Bildes
cv2.imshow("Schwarzbild", schwarzbild)

# Startzeit für die Überprüfung der Tastatureingabe
startzeit = time.time()

# Warten auf eine Taste oder das Drücken von 'q'
while True:
if cv2.waitKey(1) == ord('q')
break

# Schließen des Fensters für das schwarze Bild
cv2.destroyAllWindows()

def main():
try:
while True:
# Warten auf Klingel-Impuls
GPIO.wait_for_edge(KLINGEL_PIN, GPIO.FALLING)
print("Klingel gedrückt, Live-Feed wird gestartet...")

# Zeige das Bild für eine bestimmte Zeit
global endzeit
endzeit = time.time() + ANZEIGEZEIT
zeige_bild()

print("Live-Feed beendet.")

# Nach dem Schließen des Live-Feeds zeige ein schwarzes Bild
zeige_leeres_bild()

except KeyboardInterrupt:
pass
finally:
# Aufräumen
GPIO.cleanup()
cap.release()

if __name__ == "__main__":
main()

Предполагается, что этот код обнаруживает электрический импульс на контакте 18 и активирует прямую трансляцию с USB-веб-камеры. Этот код работал совершенно нормально. После того, как я закончил работу с Pi, я отложил его на две недели, и ни у кого не было доступа к Pi. За эти две недели мне пришлось установить Pi для проекта, который затем просто перестал работать. При запуске кода появляется следующая ошибка:

Код: Выделить всё

[ WARN:0@2.422] global ./modules/videoio/src/cap_gstreamer.cpp (1405) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
Traceback (most recent call last):
File "/home/raspi/Desktop/kamera-Impuls_test4.py", line 91, in 
main()
File "/home/raspi/Desktop/kamera-Impuls_test4.py", line 70, in main
GPIO.wait_for_edge(KLINGEL_PIN, GPIO.FALLING)
RuntimeError: Error waiting for edge

------------------
(program exited with code: 1)
Press return to continue

Проблема не в предупреждении GStreamer, эта ошибка уже была раньше, но в этих двух строках трассировки я постепенно начинаю сходить с ума из-за этой ошибки.
Что я пробовал:
-Переустановка всего Pi
-Использование другого Pi
-Установка более старой версии RPi.GPIO
- Установка более старой версии pip
-Изменение используемого контакта GPIO
-проверка правильности root-прав/прав (они есть)
-ведение журнала (единственное, что мне показали журналы: «DEBUG: root:Warte auf Klingel-Impuls")
-Переустановите RPi.GPIO (этот шаг был странным, потому что путь, по которому должен быть установлен этот пакет, не существует. Когда я удалил его, пакет был успешно удален из пути Кажется, этого не существует, но когда я пытаюсь найти пакет сразу после того, как появляется сообщение «Требование уже удовлетворено...»

Подробнее здесь: https://stackoverflow.com/questions/784 ... g-for-edge

Вернуться в «Python»