gpt4 book ai didi

python - 对 GPIO 使用 wiringPi2-python(非根)段错误捕获

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:07 24 4
gpt4 key购买 nike

我正在使用 wiringPi2-python 将覆盆子 GPIO 引脚从低电平切换到高电平,然后再切换回来。一切正常,但在它切换 pin 的值后立即抛出 Segmentation fault 并且程序停止。
我需要使用这种方法,因为这似乎是无需 sudo

即可访问 GPIO 引脚的唯一方法

在启动程序之前,我需要设置引脚以输出和导出它们:

$ echo 17 > /sys/class/gpio/export
$ echo out > /sys/class/gpio/gpio17/direction

然后是一些 python shell:

$ python
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import wiringpi2 as pi
>>> pi.wiringPiSetupSys()
0
>>> pi.digitalWrite(17, 1)
Segmentation fault
$

我试过这种方法,但也好不到哪儿去。程序还是停止了。:

try:
pi.digitalWrite(17, 0)
except:
print('got an error')
print('just printing something to see if gets to end')

所以我的问题是如何正确捕获错误,所以我可以忽略它,因为代码确实有效。
Ps:这可能值得提交错误报告,但我想先了解一下。

最佳答案

所以我想通了。我需要为 digitalwrite 创建另一个进程。在这种情况下,新创建的进程停止,但程序的其余部分可以继续工作。

import wiringpi2 as pi
from multiprocessing import Process

def process(choice):
if choice == "1":
pi.digitalWrite(17, 1)
else:
pi.digitalWrite(17, 0)

if __name__ == '__main__':
pi.wiringPiSetupSys()
choice = raw_input(">")
p = Process(target=process, args=(choice,))
p.start()
p.join()

print('just printing something to see if gets to end')

关于python - 对 GPIO 使用 wiringPi2-python(非根)段错误捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com