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. Unable to send and receive images between 2 Raspberry connected to Zigbee via UART.
Forum Updated to NodeBB v4.3 + New Features

Unable to send and receive images between 2 Raspberry connected to Zigbee via UART.

Scheduled Pinned Locked Moved Unsolved General and Desktop
42 Posts 4 Posters 8.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.
  • J.HilkJ J.Hilk

    @mrjj IIRC, it's passed on to the OS during the write call and that copies the data. But I'm not entirely sure 😬

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

    @J-Hilk
    Yeah i was wondering since its a board if that still happens as it would
    make sense we get cut if not.

    @Rika
    Can you try this

    void serial::on_pushButton_2_clicked()
    {
            static QByteArray ba;
            ba.fill('A', 1000);
            if(serialPort->isOpen()==true){
                serialPort->write(ba);
                qDebug()<<ba.size()<<"size_send:";
            }
    }
    

    and tell me if we still only get up to 190 bytes with the sizeeeee message.

    R 1 Reply Last reply
    1
    • mrjjM mrjj

      @J-Hilk
      Yeah i was wondering since its a board if that still happens as it would
      make sense we get cut if not.

      @Rika
      Can you try this

      void serial::on_pushButton_2_clicked()
      {
              static QByteArray ba;
              ba.fill('A', 1000);
              if(serialPort->isOpen()==true){
                  serialPort->write(ba);
                  qDebug()<<ba.size()<<"size_send:";
              }
      }
      

      and tell me if we still only get up to 190 bytes with the sizeeeee message.

      R Offline
      R Offline
      Rika
      wrote on last edited by
      #30

      @mrjj I tried, still only get 190.
      16 sizeeeee:
      32 sizeeeee:
      64 sizeeeee:
      64 sizeeeee:
      14 sizeeeee:

      mrjjM 1 Reply Last reply
      0
      • R Rika

        @mrjj I tried, still only get 190.
        16 sizeeeee:
        32 sizeeeee:
        64 sizeeeee:
        64 sizeeeee:
        14 sizeeeee:

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

        @Rika
        Good testing.
        So even it says
        qDebug()<<ba.size()<<"size_send:";
        1000 size_send
        you only get
        5 lines of
        16 sizeeeee:
        32 sizeeeee:
        64 sizeeeee:
        64 sizeeeee:
        14 sizeeeee:
        ?

        R 1 Reply Last reply
        0
        • mrjjM mrjj

          @Rika
          Good testing.
          So even it says
          qDebug()<<ba.size()<<"size_send:";
          1000 size_send
          you only get
          5 lines of
          16 sizeeeee:
          32 sizeeeee:
          64 sizeeeee:
          64 sizeeeee:
          14 sizeeeee:
          ?

          R Offline
          R Offline
          Rika
          wrote on last edited by Rika
          #32

          @mrjj Sometimes 4 lines, sometimes 7 lines, but the total is 190 bytes. With 500-A, received only 230

          mrjjM 1 Reply Last reply
          0
          • R Rika

            @mrjj Sometimes 4 lines, sometimes 7 lines, but the total is 190 bytes. With 500-A, received only 230

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

            @Rika
            Ok
            if we do
            ba.fill('A', 10);
            do you then get all ?

            R 1 Reply Last reply
            0
            • mrjjM mrjj

              @Rika
              Ok
              if we do
              ba.fill('A', 10);
              do you then get all ?

              R Offline
              R Offline
              Rika
              wrote on last edited by
              #34

              @mrjj yes.

              mrjjM 1 Reply Last reply
              0
              • R Rika

                @mrjj yes.

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

                @Rika
                So it seems data get cut over some size.

                What Os is running on the boards ?

                Also maybe Zigbee has some sort of max transfer size ?

                R 1 Reply Last reply
                0
                • mrjjM mrjj

                  @Rika
                  So it seems data get cut over some size.

                  What Os is running on the boards ?

                  Also maybe Zigbee has some sort of max transfer size ?

                  R Offline
                  R Offline
                  Rika
                  wrote on last edited by
                  #36

                  @mrjj I use raspbian. I tried using a PC connected to zigbee and sent photos to my Pi4 + Zigbee with Realterm, my Pi4 received the photos. I think the error is in the program sends the data.

                  1 Reply Last reply
                  0
                  • J.HilkJ Offline
                    J.HilkJ Offline
                    J.Hilk
                    Moderators
                    wrote on last edited by
                    #37

                    well, lets narrow it down,
                    write returns a quint64 with the actual number of bytes written to the serialport, what does that return ?

                    void serial::on_pushButton_2_clicked()
                    {
                            static QByteArray ba;
                            ba.fill('A', 1000);
                            if(serialPort->isOpen()==true){
                                quint64 send = serialPort->write(ba);
                                qDebug()<<send << " of" << ba.size()<<"size_send:";
                            }
                    }
                    

                    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                    Q: What's that?
                    A: It's blue light.
                    Q: What does it do?
                    A: It turns blue.

                    R 1 Reply Last reply
                    1
                    • J.HilkJ J.Hilk

                      well, lets narrow it down,
                      write returns a quint64 with the actual number of bytes written to the serialport, what does that return ?

                      void serial::on_pushButton_2_clicked()
                      {
                              static QByteArray ba;
                              ba.fill('A', 1000);
                              if(serialPort->isOpen()==true){
                                  quint64 send = serialPort->write(ba);
                                  qDebug()<<send << " of" << ba.size()<<"size_send:";
                              }
                      }
                      
                      R Offline
                      R Offline
                      Rika
                      wrote on last edited by
                      #38

                      @J-Hilk 1000 of 1000 size.

                      J.HilkJ 1 Reply Last reply
                      0
                      • R Rika

                        @J-Hilk 1000 of 1000 size.

                        J.HilkJ Offline
                        J.HilkJ Offline
                        J.Hilk
                        Moderators
                        wrote on last edited by
                        #39

                        @Rika well,
                        to make sure your 2nd application is not simply very late in its creation/startup process, try clicking the button a 2nd time, see if something changes :D

                        After that, time for a serial port listing device, to check what is actually transferred


                        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                        Q: What's that?
                        A: It's blue light.
                        Q: What does it do?
                        A: It turns blue.

                        mrjjM 1 Reply Last reply
                        0
                        • J.HilkJ J.Hilk

                          @Rika well,
                          to make sure your 2nd application is not simply very late in its creation/startup process, try clicking the button a 2nd time, see if something changes :D

                          After that, time for a serial port listing device, to check what is actually transferred

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

                          @J-Hilk
                          When i goggle Zigbee , i do see max payload mentioned.
                          Do you think that could be the cause here ?
                          I never used Zigbee so not sure if its even an issue.

                          J.HilkJ 1 Reply Last reply
                          1
                          • mrjjM mrjj

                            @J-Hilk
                            When i goggle Zigbee , i do see max payload mentioned.
                            Do you think that could be the cause here ?
                            I never used Zigbee so not sure if its even an issue.

                            J.HilkJ Offline
                            J.HilkJ Offline
                            J.Hilk
                            Moderators
                            wrote on last edited by J.Hilk
                            #41

                            @mrjj uh, I should read the opening post more clearly,

                            You're right, that is most likely the issue, ZigBee is a low data transfer protocol and from what my quick google search told me, limited to about 100 - 200 bytes, which fits exactly here

                            for a quick and dirty test, we could split the test byte array and send it delayed, that should work

                            void serial::on_pushButton_2_clicked()
                            {
                                    static QByteArray ba;
                                       int index(0);
                                       ba.fill('A', 1000);
                                       if(serialPort->isOpen()==true){
                                           QTimer *t = new QTimer();
                                           auto sendSection = [=,&index]()->void{
                                               serialPort->write(ba.data() + index * 100, 100);
                                               index ++;
                                               if(index == 10)
                                                   t->deleteLater();
                                           };
                                           QObject::connect(t, &QTimer::timeout, sendSection);
                                           t->start(1000);
                                    //       quint64 send = serialPort->write(ba);
                                           qDebug()<< ba.size()<<"size_send:";
                                       }
                            }
                            

                            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                            Q: What's that?
                            A: It's blue light.
                            Q: What does it do?
                            A: It turns blue.

                            1 Reply Last reply
                            2
                            • R Offline
                              R Offline
                              Rika
                              wrote on last edited by
                              #42

                              @mrjj @J-Hilk Sorry for my late reply. The problem is when I try to send from PC with Realterm (Pc is also connected to Zigbee), on Pi4 I still get pictures.

                              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