0

我正在尝试让 LCD 屏幕显示一些文本,同时遵循教程,教程代码和我的代码之间的唯一区别是文本消息。

我还检查了我的接线并测试了 pi 上的引脚的功能。我不明白为什么我会收到这个错误。

我的代码:

    from time import sleep
    import Adafruit_CharLCD as LCD

    lcd = LCD.Adafruit_CharLCD(rs=23, en=19, d4=13, d5=6, d6=5, d7=11, cols=16, lines=2)
    lcd.clear()

    lcd.message('hi\n guy')
    sleep(3)

我的错误

Traceback (most recent call last):
  File "lcd3.py", line 4, in <module>
    lcd = LCD.Adafruit_CharLCD(rs=23, en=19, d4=13, d5=6, d6=5, d7=11, cols=16, lines=2)
  File "/home/pi/Adafruit_CharLCD.py", line 143, in __init__
    gpio.setup(pin, GPIO.OUT)
  File "/usr/local/lib/python2.7/dist-packages/Adafruit_GPIO/GPIO.py", line 278, in setup
    pull_up_down=self._pud_mapping[pull_up_down])
SystemError: error return without exception set
4

2 回答 2

0

这个错误是从 CPython 解释器本身冒出来的,并且强烈表明调用任何 C 代码中的错误。

如果在 C 中实现的函数返回一个NULL值并指示错误,就会出现这种情况。解释器期望函数在返回之前为当前线程设置异常对象。如果尚未设置异常对象,解释器会引发 a SystemError,因为它是安全的,并假定 C 代码遇到错误条件但(由于某种原因)未能实际提供异常对象。

您可能在底层 C 代码中遇到了作者没有预料到的错误路径。如果您可以自己编译它,请尝试调试将返回NULL解释器的代码路径,并查看为什么采用该代码路径。

于 2017-05-18T19:40:42.537 回答
0

我遇到同样的问题。我尝试重新安装树莓派更新软件。在终端执行:

sudo apt-get autoremove && sudo apt-get -f install && sudo apt-get update && sudo apt-get upgrade -y

(删除不需要的包,修复损坏的安装,更新包列表,升级已安装的包)。

还要在 Raspbian 等基于 Debian 的 Linux 上重新安装库 RPi.GPIO 和 Adafruit_BBIO 库。在终端执行:

sudo apt-get install build-essential python-pip python-dev python-smbus git
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git
cd Adafruit_Python_GPIO
sudo python setup.py install

并重新运行 python 脚本,它对我有用。

于 2017-07-04T08:49:03.980 回答