【问题标题】:How to assign keyboard keys to a GPIO command in Python Raspberry PI如何在 Python Raspberry PI 中将键盘键分配给 GPIO 命令
【发布时间】:2017-11-01 16:13:34
【问题描述】:

我正在尝试使用 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 key curses robot


    【解决方案1】:

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

    要进一步诊断:您可以将except 添加到您的try block 并打印错误吗?

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

    【讨论】:

    • 感谢您的帮助,以及如何将捕获添加到我的 try 块?我是 python 的新手,还在学习,非常感谢。
    • 对不起,我的意思是except:。看这里:docs.python.org/3/tutorial/errors.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多