Python 树莓皮蟒蛇

Python 树莓皮蟒蛇,python,gpio,Python,Gpio,我不知道我的问题在哪里。如果有人能帮助我,那就太好了。Mqtt工作正常,但每次触发GPIO时,程序都会崩溃 错误: 已与结果代码0连接 /test/light1 0 0回溯最近的调用上次:文件 garage.py,第33行,in client.loop_文件/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py,第行 1481年,永远在循环中 rc=self.looptimeout,最大数据包文件/usr/local/lib/pyth

我不知道我的问题在哪里。如果有人能帮助我,那就太好了。Mqtt工作正常,但每次触发GPIO时,程序都会崩溃

错误:

已与结果代码0连接

/test/light1 0 0回溯最近的调用上次:文件 garage.py,第33行,in client.loop_文件/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py,第行 1481年,永远在循环中 rc=self.looptimeout,最大数据包文件/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py,第行 1003,在回路中 rc=self.loop\u readmax\u数据包文件/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py,第行 1284,循环内读取 rc=self.\u packet\u read File/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py,第行 1849年,数据包读取 rc=self.\u packet\u handle File/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py,第行 2305,在包里 返回self.\u handle\u publish File/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py,第行 2500,在处理中发布 self._handle_在消息文件/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py的第行 2647,在消息上处理 self.on_messageself,self._userdata,消息文件garage.py,第22行,在on_消息中 GPIO.outputpin,GPIO.LOW RuntimeError:GPIO通道尚未设置为输出


乍一看,我认为问题在于GPIO.setup没有传播到定义的函数。与其在顶部全局定义它们,不如创建一个子方法

def gpio_setup():
  pin = 15

  GPIO.setwarnings(False)
  GPIO.setmode(GPIO.BCM)

  GPIO.setup(pin, GPIO.OUT)
  GPIO.setup(pin, GPIO.HIGH)
然后在其他每个方法中调用该方法:

def on_message(client, userdata, msg):
  gpio_setup()

您甚至可以通过在每个方法中手动设置GPIO.setup来找到它的中断位置。

您正在调用GPIO.setuppin,GPIO.HIGH来设置模式输出后的初始值,此时您应该调用GPIO.outputpin,GPIO.HIGH。或者,您可以使用GPIO.setuppin、GPIO.OUT、initial=GPIO.HIGH。

错误很明显,您没有将GPIO通道设置为输出GPIO.setupchannel、GPIO.OUT、initial=GPIO.HIGH chan_list=[11,12]也适用于元组GPIO.outputchan_list,GPIO.LOW将所有设置为GPIO.LOW GPIO.outputchan_列表,GPIO.HIGH、GPIO.LOW将设置第一高和第二低
def on_message(client, userdata, msg):
  gpio_setup()