我打算将Driveboardapp从内核3.8移植到内核4.14。 Driveboardapp是用python编写的应用程序,旨在运行Lasersaur激光切割机,它使用UART1,WiFi和GPIO。 开发人员建议使用基于内核3.8的Ubuntu 14.04 LTS中的映像将应用程序运行到beaglebone黑板上 使用该映像,我遇到了网络稳定性问题,并且发现基于debian 9.5和内核4.14的最新官方beaglebone映像更加可靠。 不幸的是,我无法使gpio功能在此新操作系统上正常工作。
这是设置gpio引脚的python代码:
try:
fw = file("/sys/class/gpio/export", "w")
fw.write("%d" % (71))
fw.close()
except IOError:
# probably already exported
pass
# set the gpio pin to output
# echo out > /sys/class/gpio/gpio71/direction
fw = file("/sys/class/gpio/gpio71/direction", "w")
fw.write("out")
fw.close()
# set the gpio pin high
# echo 1 > /sys/class/gpio/gpio71/value
fw = file("/sys/class/gpio/gpio71/value", "w")
fw.write("1")
fw.flush()
fw.close()
当我在debian9.5中运行该应用程序时,有时它会显示以下消息:
root@beaglebone:~/driveboardapp# python backend/app.py
Traceback (most recent call last):
File "backend/app.py", line 7, in <module>
import config
File "/root/driveboardapp/backend/config.py", line 194, in <module>
fw = file("/sys/class/gpio/gpio71/direction", "w")
IOError: [Errno 2] No such file or directory: '/sys/class/gpio/gpio71/direction'
如果我重新运行该应用程序,它可能会在同一时间点中断,或者它可能会成功,并最终在使用gpio的代码中的下一个时间点中断。
到目前为止,我已尝试在尝试写入文件之前添加一小段睡眠,但仍然失败。
Driveboard应用回购https://github.com/nortd/driveboardapp
到目前为止,我对代码的编辑https://github.com/luky83/driveboardapp/blob/debian9.5/backend/config.py
谢谢您的建议。
答案 0 :(得分:0)
切换到Adafruit's BeagleBone IO Python Library似乎是这样做的方法:
import Adafruit_BBIO.GPIO as GPIO
GPIO.setup("P8_46", GPIO.OUT)
GPIO.output("P8_46", GPIO.HIGH)