Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Button Status Updation on UDP packet reception
Qt 6.11 is out! See what's new in the release blog

Button Status Updation on UDP packet reception

Scheduled Pinned Locked Moved Unsolved General and Desktop
17 Posts 5 Posters 1.6k Views 1 Watching
  • 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.
  • R reshu

    @JonB
    i can stop transmission from the other PC. i checked if udp packets are received using wireshark in host PC.
    My doubt is why the status of connect(msocket,SIGNAL(readyRead()),this,SLOT(readyRead_DAQ())) is not changing when no packet is received.

    JonBJ Offline
    JonBJ Offline
    JonB
    wrote on last edited by
    #7

    @reshu
    Why should it change? If nothing is ready to read the signal won't fire.

    R 1 Reply Last reply
    0
    • JonBJ JonB

      @reshu
      Why should it change? If nothing is ready to read the signal won't fire.

      R Offline
      R Offline
      reshu
      wrote on last edited by
      #8

      @JonB
      but the button colour remains the same.i want to change it back to white when reception stops.

      JonBJ 1 Reply Last reply
      -1
      • R reshu

        @JonB
        but the button colour remains the same.i want to change it back to white when reception stops.

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by
        #9

        @reshu
        You haven't answered the question. How do you expect to detect "when reception stops"?

        R 1 Reply Last reply
        2
        • JonBJ JonB

          @reshu
          You haven't answered the question. How do you expect to detect "when reception stops"?

          R Offline
          R Offline
          reshu
          wrote on last edited by
          #10

          @JonB
          there should be a signal like readyRead that would fire when reception stops

          jsulmJ JonBJ 2 Replies Last reply
          0
          • R reshu

            @JonB
            there should be a signal like readyRead that would fire when reception stops

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by jsulm
            #11

            @reshu No. readyRead is fired when there is something to read. You have to implement a protocol to let the receiver know when the data transmission is finished. The network layer simply transmits data from a to b, it does not know when the data you're sending ends. It is your job to let the receiver know when all data was send.

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            2
            • R reshu

              @JonB
              there should be a signal like readyRead that would fire when reception stops

              JonBJ Offline
              JonBJ Offline
              JonB
              wrote on last edited by JonB
              #12

              @reshu said in Button Status Updation on UDP packet reception:

              @JonB
              there should be a signal like readyRead that would fire when reception stops

              :) Computers are good at doing something when things happen, but not when things do not happen! There is no event to slot onto here.

              I have already asked several times what you mean by/how you intend to detect when "[UDP] reception stops".

              i transmit UDP packet from another PC at 100ms interval to test the code.

              Given that, the best you can do is have a QTimer ticking. Note when the last message arrived, or restart the timer when a message arrives. When 100ms has elapsed with no message, that is apparently your definition of "stopped", and you can act on that. However, apart from the vagaries of timings, don't forget that UDP is a "lossy" protocol: there is no guarantee that a packet will arrive at all, or at the right time. You might want to wait for several packets to be missed. If you want reliable, guaranteed, TCP gives that rather than UDP.

              Or, you might change your protocol to @jsulm's, where a "terminating" packet gets sent. Though you might still have the issue of missing it.

              R 2 Replies Last reply
              2
              • JonBJ JonB

                @reshu said in Button Status Updation on UDP packet reception:

                @JonB
                there should be a signal like readyRead that would fire when reception stops

                :) Computers are good at doing something when things happen, but not when things do not happen! There is no event to slot onto here.

                I have already asked several times what you mean by/how you intend to detect when "[UDP] reception stops".

                i transmit UDP packet from another PC at 100ms interval to test the code.

                Given that, the best you can do is have a QTimer ticking. Note when the last message arrived, or restart the timer when a message arrives. When 100ms has elapsed with no message, that is apparently your definition of "stopped", and you can act on that. However, apart from the vagaries of timings, don't forget that UDP is a "lossy" protocol: there is no guarantee that a packet will arrive at all, or at the right time. You might want to wait for several packets to be missed. If you want reliable, guaranteed, TCP gives that rather than UDP.

                Or, you might change your protocol to @jsulm's, where a "terminating" packet gets sent. Though you might still have the issue of missing it.

                R Offline
                R Offline
                reshu
                wrote on last edited by
                #13

                @JonB
                actually this is a simple thing which i am not able to solve. My Button has three states or colours.

                1. it should be white before i receive any data(udp pkt) from my data acquisition PCB (DAQ)
                2. should turn green when DAQ UDP packets are received
                3. should turn red if leak detected
                4. should turn back to white if i disconnect DAQ( this is not happening). if i disconnect DAQ it is still red.
                  this is my issue. when i printed the status of 'connect' it is remaining the same even after disconnecting. I don't know what is wrong.I am not a full time user of QT. only a starter. My requirement is that whenever i disconnect DAQ it should return back to the initial status and not retain the existing condition. pls help.
                1 Reply Last reply
                0
                • Christian EhrlicherC Online
                  Christian EhrlicherC Online
                  Christian Ehrlicher
                  Lifetime Qt Champion
                  wrote on last edited by
                  #14

                  @reshu said in Button Status Updation on UDP packet reception:

                  if i disconnect DAQ it is still red.

                  Again (third time or so): UDP is stateless - there is no connect/disconnect. The one and only s“thing is that you don't receive packets anymore!

                  Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                  Visit the Qt Academy at https://academy.qt.io/catalog

                  1 Reply Last reply
                  2
                  • JonBJ JonB

                    @reshu said in Button Status Updation on UDP packet reception:

                    @JonB
                    there should be a signal like readyRead that would fire when reception stops

                    :) Computers are good at doing something when things happen, but not when things do not happen! There is no event to slot onto here.

                    I have already asked several times what you mean by/how you intend to detect when "[UDP] reception stops".

                    i transmit UDP packet from another PC at 100ms interval to test the code.

                    Given that, the best you can do is have a QTimer ticking. Note when the last message arrived, or restart the timer when a message arrives. When 100ms has elapsed with no message, that is apparently your definition of "stopped", and you can act on that. However, apart from the vagaries of timings, don't forget that UDP is a "lossy" protocol: there is no guarantee that a packet will arrive at all, or at the right time. You might want to wait for several packets to be missed. If you want reliable, guaranteed, TCP gives that rather than UDP.

                    Or, you might change your protocol to @jsulm's, where a "terminating" packet gets sent. Though you might still have the issue of missing it.

                    R Offline
                    R Offline
                    reshu
                    wrote on last edited by
                    #15

                    i understood what you are saying.
                    The readyRead() signal is emitted whenever datagrams arrive. so when datagram is not there( physically detached) the status of this connect function has to change right.
                    6155bb1b-7c71-4b51-8ae4-51017c219509-image.png

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #16

                      Hi,

                      Everybody answering here has understood your case. What you seem to not understand is that this detection you want so badly is something that you need to implement yourself. @JonB already gave you good suggestions to achieve that.

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      R 1 Reply Last reply
                      1
                      • SGaistS SGaist

                        Hi,

                        Everybody answering here has understood your case. What you seem to not understand is that this detection you want so badly is something that you need to implement yourself. @JonB already gave you good suggestions to achieve that.

                        R Offline
                        R Offline
                        reshu
                        wrote on last edited by
                        #17

                        thanks for spending your valuable time. let me try to sort it out.

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved