Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. QserialPortInfo::availablePorts() do not give information about „/dev/ttyGS0“
Forum Updated to NodeBB v4.3 + New Features

QserialPortInfo::availablePorts() do not give information about „/dev/ttyGS0“

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
16 Posts 4 Posters 1.9k Views 2 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.
  • K Offline
    K Offline
    kuzulis
    Qt Champions 2020
    wrote on last edited by kuzulis
    #6

    @saurabh162 said in QserialPortInfo::availablePorts() do not give information about „/dev/ttyGS0“:

    /dev/ttyGS0

    Try latest version of Qt as 5.7.1 is too old (at least try v 5.9). And then we be investigate an issue.

    UPD:

    1. do you have the /dev/ttyGS0 in a filesystem in reality?
    2. try this comamnd: udevadm info --name=/dev/ttyGS0 and paste an output here.
    3. try compile and run the following code (what is it return? true/false?):
    #include <linux/serial.h> 
    
    bool foo()
    {
        const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
        const int fd = ::open("/dev/ttyGS0", flags);
        if (fd != -1) {
            struct serial_struct serinfo;
            const int retval = ::ioctl(fd, TIOCGSERIAL, &serinfo);
            ::close(fd);
            if (retval != -1 && serinfo.type != PORT_UNKNOWN)
                return true;
        }
        return false;
    }
    
    1 Reply Last reply
    2
    • S Offline
      S Offline
      saurabh162
      wrote on last edited by saurabh162
      #7

      Hello @SGaist , @aha_1980, @kuzulis

      Thank you very much for your help

      I will surely install Qt5.9 on my Beaglebone black and compile cross tool chain on host machine corresponding to it but at this moment I cannot do it due to other priorities.

      Following are the answers to questions asked by @kuzulis

      1. do you have the /dev/ttyGS0 in a filesystem in reality?

      Ans) Yes, I have it and I am manually opening this port using following code in Beagebone black and doing communication which is also working perfectly.

      isBBBSerialOpened = co2SerialPortobject.OpenConfigureCO2HW("/dev/ttyGS0" ,
                                               co2SerialPortobject.ReadWrite,
                                               co2SerialPortobject.Baud9600,
                                               co2SerialPortobject.Data8,
                                               co2SerialPortobject.NoParity,
                                               co2SerialPortobject.OneStop,
                                               co2SerialPortobject.NoFlowControl);
      
      1. try this comamnd: udevadm info --name=/dev/ttyGS0 and paste an output here ?

      Ans)

      
      udevadm info --name=/dev/ttyGS0
      P: /devices/virtual/tty/ttyGS0
      N: ttyGS0
      E: DEVNAME=/dev/ttyGS0
      E: DEVPATH=/devices/virtual/tty/ttyGS0
      E: MAJOR=243
      E: MINOR=0
      E: SUBSYSTEM=tty
      E: TAGS=:systemd:
      E: USEC_INITIALIZED=32563390
      E: net.ifnames=0
      

      Q) try compile and run the following code (what is it return? true/false?): ?

      #include <linux/serial.h> 
      
      bool foo()
      {
          const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
          const int fd = ::open("/dev/ttyGS0", flags);
          if (fd != -1) {
              struct serial_struct serinfo;
              const int retval = ::ioctl(fd, TIOCGSERIAL, &serinfo);
              ::close(fd);
              if (retval != -1 && serinfo.type != PORT_UNKNOWN)
                  return true;
          }
          return false;
      }
      

      Ans) After compiling above code I got following errors

      test.c:3:1: error: unknown type name ��‘bool��’
       bool foo()
       ^~~~
      test.c: In function ��‘foo��’:
      test.c:5:11: error: unknown type name ��‘mode_t��’
           const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                 ^~~~~~
      test.c:5:26: error: ��‘O_RDWR��’ undeclared (first use in this function)
           const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                                ^~~~~~
      test.c:5:26: note: each undeclared identifier is reported only once for each function it appears in
      test.c:5:35: error: ��‘O_NONBLOCK��’ undeclared (first use in this function)
           const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                                         ^~~~~~~~~~
      test.c:5:48: error: ��‘O_NOCTTY��’ undeclared (first use in this function)
           const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                                                      ^~~~~~~~
      test.c:6:20: error: expected expression before ��‘:��’ token
           const int fd = ::open("/dev/ttyGS0", flags);
                          ^
      test.c:9:28: error: expected expression before ��‘:��’ token
               const int retval = ::ioctl(fd, TIOCGSERIAL, &serinfo);
                                  ^
      test.c:10:9: error: expected expression before ��‘:��’ token
               ::close(fd);
               ^
      test.c:12:20: error: ��‘true��’ undeclared (first use in this function)
                   return true;
                          ^~~~
      test.c:14:12: error: ��‘false��’ undeclared (first use in this function)
           return false;
      

      Please inform me if you need any other information from me.

      many thanks :)

      aha_1980A 1 Reply Last reply
      0
      • SGaistS SGaist

        It's a bit an old version but IIRC, it should be good to access the device...

        Can you check if it is a symlink ?

        S Offline
        S Offline
        saurabh162
        wrote on last edited by
        #8

        @SGaist said in QserialPortInfo::availablePorts() do not give information about „/dev/ttyGS0“:

        IIRC

        Hello @SGaist, Thank you very much. I checked but "ttyGS0" is not symlink following the command I used to check it.

        root@beaglebone:/dev# ls -l ttyGS0
        crw--w---- 1 root tty 243, 0 Apr 17 10:08 ttyGS0
        
        
        1 Reply Last reply
        0
        • S saurabh162

          Hello @SGaist , @aha_1980, @kuzulis

          Thank you very much for your help

          I will surely install Qt5.9 on my Beaglebone black and compile cross tool chain on host machine corresponding to it but at this moment I cannot do it due to other priorities.

          Following are the answers to questions asked by @kuzulis

          1. do you have the /dev/ttyGS0 in a filesystem in reality?

          Ans) Yes, I have it and I am manually opening this port using following code in Beagebone black and doing communication which is also working perfectly.

          isBBBSerialOpened = co2SerialPortobject.OpenConfigureCO2HW("/dev/ttyGS0" ,
                                                   co2SerialPortobject.ReadWrite,
                                                   co2SerialPortobject.Baud9600,
                                                   co2SerialPortobject.Data8,
                                                   co2SerialPortobject.NoParity,
                                                   co2SerialPortobject.OneStop,
                                                   co2SerialPortobject.NoFlowControl);
          
          1. try this comamnd: udevadm info --name=/dev/ttyGS0 and paste an output here ?

          Ans)

          
          udevadm info --name=/dev/ttyGS0
          P: /devices/virtual/tty/ttyGS0
          N: ttyGS0
          E: DEVNAME=/dev/ttyGS0
          E: DEVPATH=/devices/virtual/tty/ttyGS0
          E: MAJOR=243
          E: MINOR=0
          E: SUBSYSTEM=tty
          E: TAGS=:systemd:
          E: USEC_INITIALIZED=32563390
          E: net.ifnames=0
          

          Q) try compile and run the following code (what is it return? true/false?): ?

          #include <linux/serial.h> 
          
          bool foo()
          {
              const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
              const int fd = ::open("/dev/ttyGS0", flags);
              if (fd != -1) {
                  struct serial_struct serinfo;
                  const int retval = ::ioctl(fd, TIOCGSERIAL, &serinfo);
                  ::close(fd);
                  if (retval != -1 && serinfo.type != PORT_UNKNOWN)
                      return true;
              }
              return false;
          }
          

          Ans) After compiling above code I got following errors

          test.c:3:1: error: unknown type name ��‘bool��’
           bool foo()
           ^~~~
          test.c: In function ��‘foo��’:
          test.c:5:11: error: unknown type name ��‘mode_t��’
               const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                     ^~~~~~
          test.c:5:26: error: ��‘O_RDWR��’ undeclared (first use in this function)
               const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                                    ^~~~~~
          test.c:5:26: note: each undeclared identifier is reported only once for each function it appears in
          test.c:5:35: error: ��‘O_NONBLOCK��’ undeclared (first use in this function)
               const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                                             ^~~~~~~~~~
          test.c:5:48: error: ��‘O_NOCTTY��’ undeclared (first use in this function)
               const mode_t flags = O_RDWR | O_NONBLOCK | O_NOCTTY;
                                                          ^~~~~~~~
          test.c:6:20: error: expected expression before ��‘:��’ token
               const int fd = ::open("/dev/ttyGS0", flags);
                              ^
          test.c:9:28: error: expected expression before ��‘:��’ token
                   const int retval = ::ioctl(fd, TIOCGSERIAL, &serinfo);
                                      ^
          test.c:10:9: error: expected expression before ��‘:��’ token
                   ::close(fd);
                   ^
          test.c:12:20: error: ��‘true��’ undeclared (first use in this function)
                       return true;
                              ^~~~
          test.c:14:12: error: ��‘false��’ undeclared (first use in this function)
               return false;
          

          Please inform me if you need any other information from me.

          many thanks :)

          aha_1980A Offline
          aha_1980A Offline
          aha_1980
          Lifetime Qt Champion
          wrote on last edited by
          #9

          @saurabh162

          For your code: replace bool with int and true with 1 resp. false with 0. Or simply use a C++ instead a C file.

          For the other errors you will need some more includes, Google should help you there.

          Qt has to stay free or it will die.

          1 Reply Last reply
          1
          • S Offline
            S Offline
            saurabh162
            wrote on last edited by
            #10

            Hello @aha_1980

            Thank you very much for the help ..I will try to compile it again and will update you

            1 Reply Last reply
            0
            • S Offline
              S Offline
              saurabh162
              wrote on last edited by saurabh162
              #11

              Hello @aha_1980,

              I have run above function foo() and got

              retval = -1 from following statement

              const int retval = ::ioctl(fd, TIOCGSERIAL, &serinfo);
              

              Additionally when I print value of variable errno after calling above statement, then it comes out to be 25.

              Moreover value of serinfo.type variable is 2(#define PORT_16450 2)

              can you please inform me what can be reasons for it and how can I solve it ?

              I am also trying to solve this problem at my side and will update you if I get any progress.

              Many thanks :)

              1 Reply Last reply
              0
              • K Offline
                K Offline
                kuzulis
                Qt Champions 2020
                wrote on last edited by kuzulis
                #12

                @saurabh162 ,

                Hmm.. Seems, need to debug the QSerialPortInfo class to see what happens there.

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  kuzulis
                  Qt Champions 2020
                  wrote on last edited by
                  #13

                  Please see a fix: https://codereview.qt-project.org/#/c/260832/

                  1 Reply Last reply
                  2
                  • S Offline
                    S Offline
                    saurabh162
                    wrote on last edited by saurabh162
                    #14

                    Hello @kuzulis

                    Thank you very much..Can you please inform me how can I apply this fix to my Qt.

                    Regards

                    Saurabh

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      kuzulis
                      Qt Champions 2020
                      wrote on last edited by kuzulis
                      #15

                      @saurabh162 said in QserialPortInfo::availablePorts() do not give information about „/dev/ttyGS0“:

                      Can you please inform me how can I apply this fix to my Qt.

                      Just modify that file in a qtserialport sources and rebuild it. Or, just wait for a next Qt release (seems to 5.12.4).

                      1 Reply Last reply
                      2
                      • S Offline
                        S Offline
                        saurabh162
                        wrote on last edited by
                        #16

                        Hello Kuzulis,

                        Thanks a lot for your update ...

                        I think using latest fixed version of Qt release (seems to 5.12.4) will be better choice. Please inform me, what should I do with this query should I close it or leave it open till I test it with Qt release (seems to 5.12.4).

                        Regards Saurabh

                        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