我正在使用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*:每次程序运行时,您只能调用一次。这是一个致命错误。请修复您的代码。
为什么必须只运行一次,最好的解决方案是什么?每次我导航到根 url 时最终pin_state
都需要检索。
这是完整的代码:
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