Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    MTTQ Threaded receive

    Scheduled Pinned Locked Moved WiPy 2&3
    1 Posts 1 Posters 780 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      crankshaft
      last edited by

      Hi, not sure if this is related to micropython or is a problem with my code.

      I am using a thread to listen for messages, while in the main code I am looping every second and sending data.

      The purpose is to continually send data but also be able to not miss and quickly respond to a request.

      def recv_msg_callback(topic, msg):
        BUSY = True
        print(topic +"="+ msg)
        
      def listen(arg):
        while True:
          try:
            BUSY = False
            client.wait_msg()
          except NameError:
            pass
      
      client.set_callback(recv_msg_callback)
      client.subscribe('/lights')
      
      _thread.start_new_thread(listen,(None,))
      
      while True:
        if(not BUSY):
          print("Sending ON")
          client.publish("/slights", "ON")
          time.sleep(1)
          print("Sending OFF")
          client.publish("/slights", "OFF")
        time.sleep(1)
      
      

      But the problem is, the main loop is not executing independently of the thread and only fires after a message is received.

      The received data (lights=xxxxx) is being transmitted every 5 seconds (just for dev/testing) so what I am expecting is for the main look to send on and off 4 times for every receive but it is not.

      Sending OFF
      b'/lights=4639.61'
      Sending ON
      b'/lights=4644.02'
      Sending OFF
      b'/lights=4648.55'
      Sending ON
      b'/lights=4653.74'
      

      What am I doing wrong ??

      1 Reply Last reply Reply Quote 0

      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

      With your input, this post could be even better 💗

      Register Login
      • 1 / 1
      • First post
        Last post

      Pycom on Twitter

      Pycom