如何在 Python Raspberry PI 中将键盘按键分配给 GPIO 命令

问题描述 投票:0回答:1

我正在尝试使用Python制作一个Raspberry Pi机器人,但我真的不知道如何使用curses来为动作分配键。我对此很陌生,需要一些帮助。

我在下面的代码中写了我的尝试:

import RPi.GPIO as GPIO
import curses 
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.OUT)
GPIO.setup(11,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)
try: 
    stdscr = curses.initscr()
    curses.noecho()
    curses.cbreak()
    stdscr.keypad(1)
    while 1:
        c = stdscr.getch()
        if c == ord('p'):
             stdscr.addstr("")
        elif c == 37:
            GPIO.output(7,False)
            GPIO.output(11,True)
            GPIO.output(13,False)
            GPIO.output(13,True)

finally: 
    curses.nocbreak(); stdscr.keypad(0)l curses.echo
    curses.endwin()
    GPIO.cleanup()

我不断收到以下错误:

Traceback (most recent call last):
File "/home/pi/ROBOT_FINAL.py", line 26, in <module>
curses.nocbreak(); stdscr.keypad(0); curses.echo()
error: must call initscr() first

请帮忙

python raspberry-pi key curses
1个回答
0
投票

查看您的代码,看起来您的

try block
内部发生了错误。不幸的是,我目前只能假设错误发生在
curses.initscr()
调用期间。 即使发生错误,您的
finally block
始终会执行。

要进一步诊断此问题:您可以在

except
中添加
try block
并打印错误吗?

如果您看到类似

AttributeError: 'Module' object has no attribute 'initscr'
的错误,那么您可能将 Python 脚本命名为
curses
。重命名它并删除“curses.pyc”文件。

© www.soinside.com 2019 - 2024. All rights reserved.