【发布时间】:2022-07-06 23:34:50
【问题描述】:
编写了一个每秒检查 gpio 状态的代码,如果新结果与前一个结果不匹配,它应该发布它。问题是它没有发布它,但如果你输入一个印刷品,那么一切都很清楚。有什么问题?
from argparse import ArgumentError
from multiprocessing.connection import Client
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import re
import subprocess
import time
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected with result code "+str(rc))
values = dict()
k = 0
while True:
DIN4R=subprocess.run("gpioget `gpiofind \"DIN4\"`",shell=True,check=True, capture_output=True)
DIN3R=subprocess.run("gpioget `gpiofind \"DIN3\"`",shell=True,check=True, capture_output=True)
DIN2R=subprocess.run("gpioget `gpiofind \"DIN2\"`",shell=True,check=True, capture_output=True)
arr= str(DIN4R.stdout + DIN3R.stdout + DIN2R.stdout)
arrr = re.sub("[^0,^1]", "", arr)
if k % 2 == 0:
values['0'] = arrr
else:
values['1'] = arrr
if k != 0:
if values['1'] != values['0']:
global arrrr
arrrr=arrr
print(arrrr)
client.publish("test/5555result", arrrr)
k+=1
time.sleep(2)
def on_publish(client, userdata, result):
print("data published \n")
pass
client = mqtt.Client()
client.on_connect = on_connect
client.on_publish = on_publish
client.connect("test.mosquitto.org", 1883, 60)
client.loop()
【问题讨论】: