Использование отладки ошибок сегментации wiringPi2-python (не root) для GPIO
Я использую wiringPi2-python для переключения малинового вывода GPIO с низкого уровня на высокий и обратно. Все работает, НО сразу после того, как он переключает значение пина Segmentation fault
выбрасывается и программа останавливается.
Мне нужно использовать этот подход, потому что это, кажется, единственный способ получить доступ к выводам GPIO без sudo
перед запуском программы мне нужно настроить вывод на вывод и экспортировать их так:
$ echo 17 > /sys/class/gpio/export
$ echo out > /sys/class/gpio/gpio17/direction
а затем немного оболочки Python:
$ 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: Это, вероятно, стоит сообщения об ошибке, но я хочу сначала обдумать это.
1 ответ
Так что я понял это. мне нужно сделать еще один процесс для 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')