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. UI doesnt refresh correctly
Forum Updated to NodeBB v4.3 + New Features

UI doesnt refresh correctly

Scheduled Pinned Locked Moved Unsolved General and Desktop
qt5serial portuser interface
20 Posts 2 Posters 3.0k 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.
  • mrjjM mrjj

    @suslucoder

    well if dont move the bar, the most logical conclusion is that it gets the same value as before.

    So put in
    qDebug() << "-->"<< dizi[1] << dizi[2]<< dizi[3]<< dizi[4]<< dizi[5]<< dizi[6];
    in on_joystick (in top)
    and see when it dont move what data, if it still has the same value as before.

    D Offline
    D Offline
    deleted286
    wrote on last edited by
    #9

    @mrjj said in UI doesnt refresh correctly:

    qDebug() << "-->"<< dizi[1] << dizi[2]<< dizi[3]<< dizi[4]<< dizi[5]<< dizi[6];

    I've checked, coming datas are true. Is there anything about threads? I have serial port and i have a gui. There may be something different about it

    mrjjM 1 Reply Last reply
    0
    • D deleted286

      @mrjj said in UI doesnt refresh correctly:

      qDebug() << "-->"<< dizi[1] << dizi[2]<< dizi[3]<< dizi[4]<< dizi[5]<< dizi[6];

      I've checked, coming datas are true. Is there anything about threads? I have serial port and i have a gui. There may be something different about it

      mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #10

      @suslucoder
      Hi
      Only if you added threads yourself. else it cant be the issue.

      So that data is right in top of on_joystick ?
      that you are very sure about ?

      Since we dont clear dizi between readyRead
      it will have old values.

      So waht excactly do you see ?
      first it work, then it stops. or it never works ?

      D 1 Reply Last reply
      0
      • mrjjM mrjj

        @suslucoder
        Hi
        Only if you added threads yourself. else it cant be the issue.

        So that data is right in top of on_joystick ?
        that you are very sure about ?

        Since we dont clear dizi between readyRead
        it will have old values.

        So waht excactly do you see ?
        first it work, then it stops. or it never works ?

        D Offline
        D Offline
        deleted286
        wrote on last edited by
        #11
        This post is deleted!
        mrjjM 1 Reply Last reply
        0
        • D deleted286

          This post is deleted!

          mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #12

          @suslucoder
          Well it cant really be stuck as such.
          It means its current value is 15.

          You dont have any loops or anything that would prevent it from redrawing ?

          I think you will have to use the debugger and set breakpoint on the

          ui->progressBarXXXX

          and then see when you set data what it is.

          Its very unlikely the Widget simply don't redraw as that normally makes them white/odd if
          you have strangulated the event loop.

          D 1 Reply Last reply
          1
          • mrjjM mrjj

            @suslucoder
            Well it cant really be stuck as such.
            It means its current value is 15.

            You dont have any loops or anything that would prevent it from redrawing ?

            I think you will have to use the debugger and set breakpoint on the

            ui->progressBarXXXX

            and then see when you set data what it is.

            Its very unlikely the Widget simply don't redraw as that normally makes them white/odd if
            you have strangulated the event loop.

            D Offline
            D Offline
            deleted286
            wrote on last edited by
            #13

            @mrjj I didnt understand what you mean. Am i doing something wrong?

            mrjjM 1 Reply Last reply
            0
            • D deleted286

              @mrjj I didnt understand what you mean. Am i doing something wrong?

              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by mrjj
              #14

              @suslucoder
              Hi
              Nope code looks fine but you seem think the widget would suddenly stop to draw and
              they rarely do and if they do, then it's very clear as it then looked messed up.

              So Im trying to guess at what could be wrong/go wrong.
              I think its just something with the data but you seems sure the values are newer and higher than 15 so
              I would like you to set a break point on the line where you set the progressbar value
              and then run & stop and inspect value in the dubugger to be truely sure that a value higher than 15 comes.

              other note, this line
              memcpy(dizi, data.constData(), 14);

              If less than 14 data comes, then old values are left in dizi.
              and what happens if data.constData() is less than 14 ?

              I think its something like that.

              D 1 Reply Last reply
              0
              • mrjjM mrjj

                @suslucoder
                Hi
                Nope code looks fine but you seem think the widget would suddenly stop to draw and
                they rarely do and if they do, then it's very clear as it then looked messed up.

                So Im trying to guess at what could be wrong/go wrong.
                I think its just something with the data but you seems sure the values are newer and higher than 15 so
                I would like you to set a break point on the line where you set the progressbar value
                and then run & stop and inspect value in the dubugger to be truely sure that a value higher than 15 comes.

                other note, this line
                memcpy(dizi, data.constData(), 14);

                If less than 14 data comes, then old values are left in dizi.
                and what happens if data.constData() is less than 14 ?

                I think its something like that.

                D Offline
                D Offline
                deleted286
                wrote on last edited by
                #15

                @mrjj data.constData() cant be less than 14. I set it. Its too weird

                mrjjM 1 Reply Last reply
                0
                • D deleted286

                  @mrjj data.constData() cant be less than 14. I set it. Its too weird

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by mrjj
                  #16

                  @suslucoder
                  Hi
                  What you mean ?
                  You dont set it at all

                  QByteArray data = serial->readAll(); <<< this can read all from 1 to xxx bytes

                  s= data.size(); << this is the size of data we read
                  if (s>14)  << is is just some variable not related to data
                      s=14;
                  

                  then we copy 14 from data
                  memcpy(dizi, data.constData(), 14);

                  so it dont matter how much data we actually got. we always copy 14

                  D 1 Reply Last reply
                  2
                  • mrjjM mrjj

                    @suslucoder
                    Hi
                    What you mean ?
                    You dont set it at all

                    QByteArray data = serial->readAll(); <<< this can read all from 1 to xxx bytes

                    s= data.size(); << this is the size of data we read
                    if (s>14)  << is is just some variable not related to data
                        s=14;
                    

                    then we copy 14 from data
                    memcpy(dizi, data.constData(), 14);

                    so it dont matter how much data we actually got. we always copy 14

                    D Offline
                    D Offline
                    deleted286
                    wrote on last edited by
                    #17

                    @mrjj said in UI doesnt refresh correctly:

                    @suslucoder
                    Hi
                    What you mean ?

                    I have

                    int16_t dizi[7];
                    

                    Since I have an array which size is 7, i wrote something

                    s= data.size(); 
                    if (s>14)  
                        s=14;
                    
                    mrjjM 1 Reply Last reply
                    0
                    • D deleted286

                      @mrjj said in UI doesnt refresh correctly:

                      @suslucoder
                      Hi
                      What you mean ?

                      I have

                      int16_t dizi[7];
                      

                      Since I have an array which size is 7, i wrote something

                      s= data.size(); 
                      if (s>14)  
                          s=14;
                      
                      mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #18

                      @suslucoder

                      But what do you then do with s to make it do anything ?

                      D 1 Reply Last reply
                      0
                      • mrjjM mrjj

                        @suslucoder

                        But what do you then do with s to make it do anything ?

                        D Offline
                        D Offline
                        deleted286
                        wrote on last edited by
                        #19

                        @mrjj Im just try to convert my binary data do int with that code script

                        mrjjM 1 Reply Last reply
                        0
                        • D deleted286

                          @mrjj Im just try to convert my binary data do int with that code script

                          mrjjM Offline
                          mrjjM Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on last edited by mrjj
                          #20

                          @suslucoder

                          ok im not sure what s does.

                          Anyway, could you try

                          (in on_Serial_Read)
                          memset(dizi, 0, 14);
                          memcpy(dizi, data.constData(), data.size());

                          in place ot the line
                          memcpy(dizi, data.constData(), 14);

                          and tell if it still stops at 15 ?

                          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