bashi18
2021年5月19日 19時16分
X1 をDebian10で動かしております。
https://armadillo.atmark-techno.com/blog/615/4300
こちらを参考にpythonでGPIOを制御しようとしています。
ただ、他の処理とタイミングを合わせてGPIOをLow/Highしたいので、
上記の例からwithを使わないように変更し、open後に自前でcloseするようにしています。
なのですが、1回のopenにつき1回の制御(print)しかできません。
2回目を以降は処理されず、最後のcloseは"Invalid argument”になってしまいます。
printを1回だけだとエラーにならずちゃんとLow/Highが指定した通りに変化します。
都度都度openはやりたくないのですが、複数回制御するにはどうすればよいでしょうか?
printを実行すると勝手にcloseされる?
printを使用せずにwriteで制御する?
よろしくお願いいたします。
コメント
bashi18
入江様、ありがとうございます。
説明下手ですみません。
言いたかったのは以下の内容です。
export、directionの処理はやっている前提で
f = open("/sys/class/gpio/gpio87/value", "w") print('0', file=f) f.close()
はエラーもなく、ちゃんとLowに落ちるのですが、
f = open("/sys/class/gpio/gpio87/value", "w") print('0', file=f) print('1', file=f) f.close()
とすると、f.close()のところで"Invalid argument"のエラーを吐きます。
そしてHighになりません。
ちなみにwriteで自己解決しました。
at_akihito.irie
2021年5月20日 11時35分
入江です。
通常、openするとcloseしたタイミングでファイルに値が書き込まれます。
open後に任意のタイミングで書き込むためにはflushするのが良いと思います。