私はWiringPi gem を使用しています。このコード ブロックは期待どおりに動作します。
pinNumber = 7
io = WiringPi::GPIO.new do |gpio|
gpio.pin_mode(pinNumber, WiringPi::INPUT)
end
pin_state = io.digital_read(pinNumber)
return pin_state
ただし、これをメソッドで囲んでSinatraを使用して呼び出しを行うと、更新しようとすると次のエラーが発生します。
配線PiSetup*: これは、プログラムの実行ごとに 1 回だけ呼び出す必要があります。これは致命的なエラーです。コードを修正してください。
これを 1 回だけ実行する必要があるのはなぜですか? また、最適な解決策は何ですか? 最終的pin_state
には、ルート URL に移動するたびに取得する必要があります。
完全なコードは次のとおりです。
require 'wiringpi'
require 'sinatra'
def getstate()
pinNumber = 7
io = WiringPi::GPIO.new do |gpio|
gpio.pin_mode(pinNumber, WiringPi::INPUT)
end
pin_state = io.digital_read(pinNumber)
return pin_state
end
get '/' do
getstate()
end