小さな3つの接続されたロボットを作ろうとしています。彼らは互いにセンサーデータを送受信しなければならず、読み取りをゼロにする傾向があります。 Iamは動きの角度を交換して、他の人が彼に従うようにしようとしています。 IamはMQTTを使用しており、非常にうまく動作します。 しかし、私はdef on_messageからデータを取得しようとすると、その変数はグローバルではなく、次の変数で使用されます。次のように コード:Defの変数からデータを取得して外部で使用する方法は?
############### MQTT section ##################
# when connecting to mqtt do this;
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe(sub_topic)
# when receiving a mqtt message do this;
def on_message(client, userdata, msg):
masterangel = int(msg.payload)
print (masterangel)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(Broker, 1883, 60)
client.loop_start()
# Start the Program
psm.screen.termPrintAt(1, "Press Go to stop program")
while(not doExit):
oldAngel = Angel
Angel = gyro.readValue()
Angelshow = "Current Angel ="+" "+str (Angel)
if (oldAngel != Angel):
psm.screen.termPrintAt(5, Angelshow)
if (Angel < masterangel) :
psm.BBM1.setSpeedSync(20)
psm.BAM1.floatSync()
elif (masterangel < Angel) :
psm.BAM1.setSpeedSync(20)
psm.BBM1.floatSync()
client.publish(pub_topic, "test")
が、今私は、whileループで変数「masterangel」を使用することができますどのように誰もがアイデアを持っていますか?ちなみに印刷順序は問題ありません。
print (masterangel)
は、事前にあなたに感謝し、私はあなたがonMessage
機能の範囲外の変数を初期化してからonMessage
機能のグローバル変数としてそれをマークする必要があり、ヘルプ
ありがとうございました。助けてくれてありがとう:) –