USB Communication Using Qt



  • Remove (clear) away all that you previously copied by hand and do as I have indicated in the "above":http://qt-project.org/forums/viewreply/90605/



  • Will not compile... the errors at code...



  • See the errors:

    @
    ...
    ...
    ...
    /home/dvl/SOURCE_CODE/qtserialport/src -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I/home/dvl/SOURCE_CODE/qtserialport/src -I. -I/home/dvl/SOURCE_CODE/qtserialport/src -I. -o moc_serialport.o moc_serialport.cpp
    moc_serialport.cpp:55:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:56:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:57:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:58:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:59:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:60:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:61:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:62:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:63:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:64:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:65:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:66:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:67:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:68:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:69:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:70:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:71:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:72:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:73:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:74:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:75:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:76:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:77:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:78:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:79:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:80:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:81:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:82:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:83:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:84:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:85:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:86:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:87:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:88:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:89:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:90:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:91:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:92:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:93:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:94:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:95:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:96:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:97:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:98:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:99:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:100:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:101:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:102:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:103:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:104:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:105:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:106:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:107:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:108:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:109:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:110:16: error: ‘SerialPort’ was not declared in this scope
    moc_serialport.cpp:142:19: error: ‘SerialPort’ has not been declared
    moc_serialport.cpp:151:20: error: ‘SerialPort’ has not been declared
    moc_serialport.cpp:151:45: error: non-member function ‘const QMetaObject* metaObject()’ cannot have cv-qualifier
    /usr/include/QtCore/qobject.h: In function ‘const QMetaObject* metaObject()’:
    /usr/include/QtCore/qobject.h:296:33: error: ‘QScopedPointer<QObjectData> QObject::d_ptr’ is protected
    ...
    ...
    ...
    @



  • Fixed... Compiled in manual way... testing...



  • I'm still having the same problems:

    “Undefined reference to ‘QtAddOn::SerialPort::SerialPortInfo::avaliablePorts()’”
    ....
    ...



  • I do not know what you did - but I have everything working well.

    1.To start, try to remove all the headers, libraries, etc. QtSerialPort of the your *nix OS.

    1. Download the latest version of the library
    2. Build and install library to the system step-by-step, see an new updated manual in the Wiki.
    3. Create a new blank project and include the library as stated in the Wiki

    More anything, I can not help you, because I can not control all of your "curves" action.



  • Sorry guys... to many posts here about this problem but:

    Now I got another error:

    #include "qglobal.h"
    "qglobal.h not such file or directory

    • I post it before you answer me kuzulis


  • Well... I will try once again...
    Thanks anyway!



  • You may want to have a look at "libusb-win32":http://sourceforge.net/apps/trac/libusb-win32/wiki. It depens wether you are using ftdi chips for the µC side, or want to build your usb-client on the controller yourself. For attaching a device very simple try to use the ftdi232 with either vcp or d2xx usage. I.e. "ftdi-link":http://www.ftdichip.com/Products/ICs/FT231X.html
    .. frank



  • My client is using the µC "NXP LPC2366", I have the driver for him!
    I need to build a app which will run at on windows, linux and Mac OS.

    That the way I'm trying to use the QtSerialPort!

    I'm doing something wrong in the conception off app?



  • The "chips":http://www.ftdichip.com/Drivers/VCP.htm do have drivers for several os. Using your own driver has to supply your own usb VID. Which library you use may depend on the way you want to build it and if you want to use polling or event driven mode to receive data. However, I've used QExtSerialport for Windows and it works fine using a QThread polling the data once a msec.



  • bq. My client is using the µC “NXP LPC2366”, I have the driver for him!

    I have questions:

    1. NXP LPC2366 It's ARM MCU?
    2. The client uses the "native" serial interface of MCU (USART), or emulation via the USB interface of MCU?
    3. If the emulation, then it serial port correct whether is determined by SerialPortInfo::availablePorts() (QtSerialPort) ? If incorrectly - that let me know.

    bq. However, I’ve used QExtSerialport for Windows and it works fine using a QThread polling the data once a msec.

    Polling to use threads - this is redundant and inefficient, and I do not believe that you get exactly 1 ms. But this is offtopic.



  • Well kuzulis, you make some technical questions that in the moment I cannot answer you!
    I GUESS that my client is using the "native" serial interface of ARM, he sends to me the Windows Driver (.INF), it can help me for something?

    I have build another time the QtSerialPort using the QtCreator, and now I have some others files:

    @
    QtAddOnSerialPort/
    QtAddOnSerialPortVersion
    serialport-global.h
    serialportinfo.h
    headers.pri
    qtaddonserialportversion.h
    serialport.h
    1.0.0/
    QtAddOnSerialPort/
    private/
    qringbuffer_p.h
    serialportengine_symbian_p.h
    serialportinfo_p.h
    qwineventnotifier_p.h
    serialportengine_unix_p.h
    serialport_p.h
    serialportengine_p.h
    serialportengine_win_p.h
    ttylocker_unix_p.h
    @

    This is correct?
    Missing something?
    Thanks!



  • bq. I GUESS that my client is using the “native” serial interface of ARM, he sends to me the Windows Driver (.INF),

    If the driver, so it's not "native" USART, I guess it emulates in the MCU via USB. For native USART of MCU driver is not needed.

    bq. it can help me for something?

    Probably. You can here show this *.inf file?

    bq. This is correct? Missing something?

    Most likely you have build a library for Qt5. For Qt5 is correct.
    After build on Qt5, the QtSerialPort libraries (debug and release) is automatically copied to Qt5/qtbase/bin and Qt5/qtbase/lib, then you need to run "make install" (or nmake install) and these header files are also copied to the Qt5/include



  • Follow the .inf file:

    @
    [Version]
    Signature="$Windows NT$"
    Class=Ports
    ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318}
    Provider=%SEVA%
    DriverVer=03/21/2012,1.0.1

    [SourceDisksFiles]

    [SourceDisksNames]

    [Manufacturer]
    %SEVA%=SEVA_, NTx86, NTamd64

    [SEVA_]
    %SEVA_CDC&PID_FAFC%=SevaVirCOM,USB\VID_0471&PID_FAFC

    [SEVA_.NTx86]
    %SEVA_CDC&PID_FAFC%=SevaVirCOM,USB\VID_0471&PID_FAFC

    [SEVA_.NTamd64]
    %SEVA_CDC&PID_FAFC%=SevaVirCOM,USB\VID_0471&PID_FAFC

    ;**************************************************
    ;* Windows NT family *
    ;**************************************************
    [SevaVirCOM.NT]
    include=mdmcpq.inf
    CopyFiles=FakeModemCopyFileSection
    AddReg=SevaVirCOM.NT.AddReg

    [SevaVirCOM.NT.AddReg]
    HKR,,DevLoader,,*ntkern
    HKR,,NTMPDriver,,usbser.sys
    HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

    [SevaVirCOM.NTx86]
    include=mdmcpq.inf
    CopyFiles=FakeModemCopyFileSection
    AddReg=SevaVirCOM.NT.AddReg

    [SevaVirCOM.NTx86.Services]
    AddService=usbser, 0x00000002,SevaVirCOMService_Inst

    [SevaVirCOM.NTamd64]
    include=mdmcpq.inf
    CopyFiles=FakeModemCopyFileSection
    AddReg=SevaVirCOM.NT.AddReg

    [SevaVirCOM.NTamd64.Services]
    AddService=usbser, 0x00000002,SevaVirCOMService_Inst

    [SevaVirCOMService_Inst]
    DisplayName=%SevaVirCOM.SvcDesc%
    ServiceType=1
    StartType=3
    ErrorControl=1
    ServiceBinary=%\usbser.sys
    LoadOrderGroup=Base

    ;**************************************************
    ;* Strings *
    ;**************************************************
    [Strings]
    SEVA="SEVA Engenharia"
    SEVA_CDC&PID_FAFC="SEVA Virtual COM port, SEVA BDV"
    SevaVirCOM.SvcDesc="SEVA Virtual COM port"
    @

    bq.
    Most likely you have build a library for Qt5. For Qt5 is correct.
    After build on Qt5, the QtSerialPort libraries (debug and release) is automatically copied to Qt5/qtbase/bin and Qt5/qtbase/lib, then you need to run “make install” (or nmake install) and these header files are also copied to the Qt5/include
    bq.

    I have compiled using Qt Creator 4 (4.8) it will woks anyway?



  • Yes, Qt4.8 also supported.
    But the resulting output files (headers, features, library) in the case of build QtSerialPort for Qt4 are different from case of build for Qt5.



  • I try to use the http://code.google.com/p/qextserialport/ and know I Could list the serial port on my PC.
    But I would like to use the QtSerialPort, but need be easer to use!

    I will keep trying to use QtSerialPort. Thanks.



  • I have just downloaded QtSerialport and am attempting to compile it on Fedora 17 with gcc and I get a

    'QFile' was not declared in this scope error.

    I have libudev installed.

    In fact as far as I can see the error is correct as the error is in
    @
    bool SerialPortInfo::isValid() const
    {
    QFile f(systemLocation());
    return f.exists();
    }
    @
    and qfile.h is in the other part of the code. If I copy the qfile.h include to just outside the extern C section it compiles OK.
    @
    extern "C"
    {
    #include <libudev.h>
    }
    #else
    #include <QtCore/qdir.h>
    #include <QtCore/qstringlist.h>
    #include <QtCore/qfile.h>
    #endif
    @
    Not certain if this is a bug or someting in my system but thought it was worth reporting..

    [edit: code tags added, koahnig]



  • 2 simonmeaden

    It already seems to be fixed.



  • Yes it may be a problem with my setup. I am writing an application on Windows XP and Linux using Qt 4.8.1 and I am having different problems with each. The above problem with Linux and the, ‘SerialPort’ was not declared in this scope, problem with moc_serialport.cpp that was reported earlier. I have tried manually making the library as you suggested earlier and also using QtCreator with the same result.

    I have also tried compiling on XP using MinGW and on Linux using MinGW with the same result. Still working on it.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.