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.4k 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.
  • JonBJ JonB

    @reshu

    i am sending the udp test packet from another PC. I stop that.

    :) So do you mean it has stopped when nothing arrives for a while?

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

    @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 1 Reply Last reply
    0
    • 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 Online
      JonBJ Online
      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 Online
          JonBJ Online
          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 Online
                JonBJ Online
                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 Offline
                    Christian EhrlicherC Offline
                    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