我正在尝试使用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
请帮忙
查看您的代码,看起来您的
try block
内部发生了错误。不幸的是,我目前只能假设错误发生在 curses.initscr()
调用期间。
即使发生错误,您的 finally block
始终会执行。
要进一步诊断此问题:您可以在
except
中添加 try block
并打印错误吗?
如果您看到类似
AttributeError: 'Module' object has no attribute 'initscr'
的错误,那么您可能将 Python 脚本命名为 curses
。重命名它并删除“curses.pyc”文件。