1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00

fix macx macro missing

This commit is contained in:
tianduanrui 2017-10-16 18:03:10 +08:00
parent 1ddd6ac321
commit 64f03d3f34
24 changed files with 144 additions and 3412 deletions

View File

@ -3,6 +3,7 @@ CONFIG += ordered
SUBDIRS += \
src/qqt.pro \
examples/qqtframe \
examples/qqtframe2 \
# examples/animationframe \
# examples/cmdwidget \
# examples/qqtliveplayer \
@ -10,6 +11,6 @@ SUBDIRS += \
# examples/qqtftpclient \
# examples/qqthttpclient \
# examples/qqtwebkit
examples/qqtframe2
#include(src/qqt.pri)

View File

@ -18,11 +18,6 @@ QT += core gui network sql xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport serialport
greaterThan(QT_MAJOR_VERSION, 4): DEFINES += __QT5__
TARGET = QtBuildTool
TEMPLATE = app
macx {
CONFIG += app_bundle
}
QT_KIT = $$(QKIT)
message($${QT_KIT} Defined in $${TARGET})
@ -43,6 +38,12 @@ equals(QT_KIT, MIPS32) {
DEFINES += __ANDROID__
}
TARGET = QtBuildTool
TEMPLATE = app
equals(QT_KIT, macOS) {
CONFIG += app_bundle
}
CONFIG(debug, debug|release) {
} else {
DEFINES -= QT_NO_DEBUG_OUTPUT
@ -72,7 +73,7 @@ INCLUDEPATH += $$PWD \
$$PWD/../../src/frame
#include(../../src/qqt.pri)
macx {
equals(QT_KIT, macOS) {
LIBS += -F/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/MacOS/Release/src/bin
LIBS += -framework QQt
}
@ -97,7 +98,7 @@ can_install:equals(QT_KIT, MIPS32) {
target.path = /Application
INSTALLS += target
} else: unix {
macx{
equals(QT_KIT, macOS){
target.path = /Applications
INSTALLS += target
}

View File

@ -20,9 +20,6 @@ greaterThan(QT_MAJOR_VERSION, 4): DEFINES += __QT5__
TARGET = qqtframe2
TEMPLATE = app
macx {
CONFIG += app_bundle
}
QT_KIT = $$(QKIT)
message($${QT_KIT} Defined in $${TARGET})
@ -42,6 +39,9 @@ equals(QT_KIT, MIPS32) {
} else:equals(QT_KIT, Android) {
DEFINES += __ANDROID__
}
equals(QT_KIT, macOS) {
CONFIG += app_bundle
}
CONFIG(debug, debug|release) {
} else {
@ -72,7 +72,7 @@ INCLUDEPATH += $$PWD \
$$PWD/../../src/frame
#include(../../src/qqt.pri)
macx {
equals(QT_KIT, macOS) {
LIBS += -F/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/MacOS/Release/src/bin
LIBS += -framework QQt
}
@ -97,7 +97,7 @@ can_install:equals(QT_KIT, MIPS32) {
target.path = /Application
INSTALLS += target
} else: unix {
macx{
equals(QT_KIT, macOS){
target.path = /Applications
INSTALLS += target
}

View File

@ -49,7 +49,7 @@ HEADERS += $$PWD/qqtapp.h $$PWD/qqtwindow.h \
FORMS += $$PWD/qqtwindow.ui
unix {
macx{
equals(QT_KIT, macOS){
}
else{
INCLUDEPATH += /usr/include/x86_64-linux-gnu

View File

@ -10,9 +10,6 @@ greaterThan(QT_MAJOR_VERSION, 4): DEFINES += __QT5__
TARGET = qqtframe
TEMPLATE = app
macx {
CONFIG += app_bundle
}
QT_KIT = $$(QKIT)
message($${QT_KIT} Defined in qqtframe)
@ -22,15 +19,23 @@ equals(QT_KIT, MIPS32) {
} else:equals(QT_KIT, LINUX) {
DEFINES += __LINUX__
} else:equals(QT_KIT, LINUX64) {
DEFINES += __LINUX__
DEFINES += __LINUX64__
} else:equals(QT_KIT, WIN) {
DEFINES += __WIN__
} else:equals(QT_KIT, WIN64) {
DEFINES += __WIN__
DEFINES += __WIN64__
} else:equals(QT_KIT, macOS) {
DEFINES += __DARWIN__
} else:equals(QT_KIT, Android) {
DEFINES += __ANDROID__
} else:equals(QT_KIT, ANDROIDX86) {
DEFINES += __ANDROID__
DEFINES += __ANDROIDX86__
}
equals(QT_KIT, macOS) {
CONFIG += app_bundle
}
CONFIG(debug, debug|release) {
@ -62,12 +67,20 @@ INCLUDEPATH += $$PWD \
$$PWD/../../src/frame
#include(../../src/qqt.pri)
macx {
LIBS += -F/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/MacOS/Release/src/bin
LIBS += -framework QQt
}
equals(QT_KIT, Android) {
LIBS += -L/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/Android-arm/Release/src/bin
message(Link QQt to $${TARGET} $${QT_KIT} on $${QMAKE_HOST.os})
equals(QMAKE_HOST.os, Darwin) {
equals(QT_KIT, macOS) {
LIBS += -F/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/MacOS/Release/src/bin
LIBS += -framework QQt
} else: equals(QT_KIT, Android) {
LIBS += -L/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/Android/Release/src/bin
LIBS += -lQQt
} else: equals(QT_KIT, ANDROIDX86) {
LIBS += -L/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/Android_x86/Release/src/bin
LIBS += -lQQt
}
} else: equals(QMAKE_HOST.os, Linux) {
LIBS += -L/mnt/hgfs/abel/Develop/c0-buildstation/a0-qqtfoundation/Linux/Release/src/bin
LIBS += -lQQt
}
@ -87,7 +100,7 @@ can_install:equals(QT_KIT, MIPS32) {
target.path = /Application
INSTALLS += target
} else: unix {
macx{
equals(QT_KIT, macOS){
target.path = /Applications
INSTALLS += target
}

View File

@ -18,12 +18,6 @@ QT += core gui network sql xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport serialport
greaterThan(QT_MAJOR_VERSION, 4): DEFINES += __QT5__
TARGET = qqtframe2
TEMPLATE = app
macx {
CONFIG += app_bundle
}
QT_KIT = $$(QKIT)
message($${QT_KIT} Defined in $${TARGET})
equals(QT_KIT, MIPS32) {
@ -43,6 +37,13 @@ equals(QT_KIT, MIPS32) {
DEFINES += __ANDROID__
}
TARGET = qqtframe2
TEMPLATE = app
equals(QT_KIT, macOS) {
CONFIG += app_bundle
}
CONFIG(debug, debug|release) {
} else {
DEFINES -= QT_NO_DEBUG_OUTPUT
@ -72,12 +73,20 @@ INCLUDEPATH += $$PWD \
$$PWD/../../src/frame
#include(../../src/qqt.pri)
macx {
LIBS += -F/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/MacOS/Release/src/bin
LIBS += -framework QQt
}
equals(QT_KIT, Android) {
LIBS += -L/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/Android-arm/Release/src/bin
message(Link QQt to $${TARGET} $${QT_KIT} on $${QMAKE_HOST.os})
equals(QMAKE_HOST.os, Darwin) {
equals(QT_KIT, macOS) {
LIBS += -F/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/MacOS/Release/src/bin
LIBS += -framework QQt
} else: equals(QT_KIT, Android) {
LIBS += -L/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/Android/Release/src/bin
LIBS += -lQQt
} else: equals(QT_KIT, ANDROIDX86) {
LIBS += -L/Users/abel/Develop/c0-buildstation/a0-qqtfoundation/Android_x86/Release/src/bin
LIBS += -lQQt
}
} else: equals(QMAKE_HOST.os, Linux) {
LIBS += -L/mnt/hgfs/abel/Develop/c0-buildstation/a0-qqtfoundation/Linux/Release/src/bin
LIBS += -lQQt
}
@ -97,7 +106,7 @@ can_install:equals(QT_KIT, MIPS32) {
target.path = /Application
INSTALLS += target
} else: unix {
macx{
equals(QT_KIT, macOS) {
target.path = /Applications
INSTALLS += target
}

View File

@ -0,0 +1,6 @@
#include "qqtbluetoothmanager.h"
QQtBluetoothManager::QQtBluetoothManager(QObject *parent) : QObject(parent)
{
}

View File

@ -0,0 +1,17 @@
#ifndef QQTBLUETOOTHMANAGER_H
#define QQTBLUETOOTHMANAGER_H
#include <QObject>
class QQtBluetoothManager : public QObject
{
Q_OBJECT
public:
explicit QQtBluetoothManager(QObject *parent = nullptr);
signals:
public slots:
};
#endif // QQTBLUETOOTHMANAGER_H

View File

@ -11,7 +11,7 @@ unix:VERSION = 1.0.0
##Qt version
QT += core gui network sql xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport serialport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
#############
##definition
@ -34,17 +34,23 @@ equals(QT_KIT, MIPS32) {
} else:equals(QT_KIT, LINUX) {
DEFINES += __LINUX__
} else:equals(QT_KIT, LINUX64) {
DEFINES += __LINUX__
DEFINES += __LINUX64__
} else:equals(QT_KIT, WIN) {
DEFINES += __WIN__
} else:equals(QT_KIT, WIN64) {
DEFINES += __WIN__
DEFINES += __WIN64__
} else:equals(QT_KIT, macOS) {
DEFINES += __DARWIN__
} else:equals(QT_KIT, Android) {
DEFINES += __ANDROID__
#TODO:no customplot word printer
} else:equals(QT_KIT, ANDROIDX86) {
DEFINES += __ANDROID__
DEFINES += __ANDROIDX86__
#todo:no customplot word printer
}
CONFIG(debug, debug|release) {
} else {
DEFINES -= QT_NO_DEBUG_OUTPUT
@ -60,7 +66,7 @@ win32 {
win32 {
LIBS += -luser32
}else: unix {
macx {
equals(QT_KIT, macOS) {
#min macosx target
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9
#deperated
@ -87,7 +93,6 @@ DESTDIR = bin
##include directories
###########################
INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/serialport
INCLUDEPATH += $$PWD/core
INCLUDEPATH += $$PWD/customplot
INCLUDEPATH += $$PWD/dmmu
@ -95,6 +100,7 @@ INCLUDEPATH += $$PWD/frame
INCLUDEPATH += $$PWD/gui
INCLUDEPATH += $$PWD/multimedia
INCLUDEPATH += $$PWD/network
INCLUDEPATH += $$PWD/network/qextserialport
INCLUDEPATH += $$PWD/pluginwatcher
INCLUDEPATH += $$PWD/printsupport
INCLUDEPATH += $$PWD/sql
@ -106,7 +112,7 @@ win32 {
HEADERS += $$PWD/qqtwin.h
}
unix {
macx {
equals(QT_KIT, macOS) {
HEADERS += $$PWD/qqtdarwin.h
} else {
HEADERS += $$PWD/qqtlinux.h
@ -118,13 +124,48 @@ HEADERS += $$PWD/qqt.h \
$$PWD/qqt-qt.h
#serialport
#network
equals(QT_KIT, MIPS32) {
SOURCES += $$PWD/network/qqtethenetmanager.cpp
HEADERS += $$PWD/network/qqtethenetmanager.h
}
##websocket
SOURCES += $$PWD/network/qqtwebclient.cpp \
$$PWD/network/qqtftpprotocol.cpp \
$$PWD/network/qqthttpprotocol.cpp \
$$PWD/network/qqtwebprotocol.cpp
HEADERS += $$PWD/network/qqtwebclient.h \
$$PWD/network/qqtftpprotocol.h \
$$PWD/network/qqthttpprotocol.h \
$$PWD/network/qqtwebprotocol.h
#tcpsocket
SOURCES += \
$$PWD/network/qqtclient.cpp \
$$PWD/network/qqtserialport.cpp \
$$PWD/network/qqtserver.cpp \
$$PWD/network/qqtmessage.cpp \
$$PWD/network/qqtprotocol.cpp \
$$PWD/network/qqtnetwork.cpp
HEADERS += \
$$PWD/network/qqtclient.h \
$$PWD/network/qqtserialport.h \
$$PWD/network/qqtserver.h \
$$PWD/network/qqtmessage.h \
$$PWD/network/qqtprotocol.h \
$$PWD/network/qqtnetwork.h
#bluetooth
SOURCES += \
$$PWD/network/qqtbluetoothmanager.cpp
HEADERS += \
$$PWD/network/qqtbluetoothmanager.h
#qserialport
#USE QEXTSERIALPORT
#DEFINES += __QTEXTSERIALPORT__
contains (DEFINES, __QTEXTSERIALPORT__) {
message ( __QTEXTSERIALPORT__ defined in qqtfoundation)
include ( $$PWD/serialport/qextserialport.pri )
message ( __QTEXTSERIALPORT__ Defined in qqtfoundation)
include ( $$PWD/network/qextserialport/qextserialport.pri )
} else {
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
lessThan(QT_MAJOR_VERSION, 5): CONFIG += serialport
unix {
DEFINES += _TTY_POSIX_
@ -232,37 +273,6 @@ HEADERS += \
SOURCES += $$PWD/multimedia/qqtmplayer.cpp
HEADERS += $$PWD/multimedia/qqtmplayer.h
#network
equals(QT_KIT, MIPS32) {
SOURCES += $$PWD/network/qqtethenetmanager.cpp
HEADERS += $$PWD/network/qqtethenetmanager.h
}
##websocket
SOURCES += $$PWD/network/qqtwebclient.cpp \
$$PWD/network/qqtftpprotocol.cpp \
$$PWD/network/qqthttpprotocol.cpp \
$$PWD/network/qqtwebprotocol.cpp
HEADERS += $$PWD/network/qqtwebclient.h \
$$PWD/network/qqtftpprotocol.h \
$$PWD/network/qqthttpprotocol.h \
$$PWD/network/qqtwebprotocol.h
#tcpsocket
SOURCES += \
$$PWD/network/qqtclient.cpp \
$$PWD/network/qqtserialport.cpp \
$$PWD/network/qqtserver.cpp \
$$PWD/network/qqtmessage.cpp \
$$PWD/network/qqtprotocol.cpp \
$$PWD/network/qqtnetwork.cpp
HEADERS += \
$$PWD/network/qqtclient.h \
$$PWD/network/qqtserialport.h \
$$PWD/network/qqtserver.h \
$$PWD/network/qqtmessage.h \
$$PWD/network/qqtprotocol.h \
$$PWD/network/qqtnetwork.h
#pluginwatcher
contains (DEFINES, QQT_LIBRARY) {
DEFINES += BUILD_QDEVICEWATCHER_LIB
@ -272,7 +282,7 @@ win32 {
else: SOURCES += $$PWD/pluginwatcher/qdevicewatcher_win32.cpp
}
unix {
macx {
equals(QT_KIT, macOS) {
SOURCES += $$PWD/pluginwatcher/qdevicewatcher_mac.cpp
} else {
SOURCES += $$PWD/pluginwatcher/qdevicewatcher_linux.cpp

View File

@ -5,10 +5,6 @@
#-------------------------------------------------
TARGET = QQt
TEMPLATE = lib
CONFIG += dll
macx {
CONFIG += lib_bundle
}
#QQT LIBRARY (DLL)
#DEFINES += QQT_LIBRARY
@ -17,12 +13,18 @@ DEFINES += QQT_LIBRARY
include ($$PWD/qqt.pri)
equals(QT_KIT, macOS) {
message (build $${TARGET} $${QT_KIT} bundle)
CONFIG += dll
CONFIG += lib_bundle
}
############
##install
############
#CONFIG += can_install
can_install:macx {
can_install:equals(QT_KIT, macOS) {
###if install product to same path,use this.
target.path = /System/Library/Frameworks
INSTALLS += target

File diff suppressed because it is too large Load Diff

View File

@ -1,63 +0,0 @@
#ifndef _POSIX_QEXTSERIALPORT_H_
#define _POSIX_QEXTSERIALPORT_H_
#include <stdio.h>
#include <termios.h>
#include <errno.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include "qextserialbase.h"
class Posix_QextSerialPort:public QextSerialBase
{
private:
/*!
* This method is a part of constructor.
*/
void init();
protected:
QFile* Posix_File;
struct termios Posix_CommConfig;
struct timeval Posix_Timeout;
struct timeval Posix_Copy_Timeout;
virtual qint64 readData(char * data, qint64 maxSize);
virtual qint64 writeData(const char * data, qint64 maxSize);
public:
Posix_QextSerialPort();
Posix_QextSerialPort(const Posix_QextSerialPort& s);
Posix_QextSerialPort(const QString & name, QextSerialBase::QueryMode mode = QextSerialBase::Polling);
Posix_QextSerialPort(const PortSettings& settings, QextSerialBase::QueryMode mode = QextSerialBase::Polling);
Posix_QextSerialPort(const QString & name, const PortSettings& settings, QextSerialBase::QueryMode mode = QextSerialBase::Polling);
Posix_QextSerialPort& operator=(const Posix_QextSerialPort& s);
virtual ~Posix_QextSerialPort();
virtual void setBaudRate(BaudRateType);
virtual void setDataBits(DataBitsType);
virtual void setParity(ParityType);
virtual void setStopBits(StopBitsType);
virtual void setFlowControl(FlowType);
virtual void setTimeout(long);
virtual bool open(OpenMode mode);
virtual void close();
virtual void flush();
virtual qint64 size() const;
virtual qint64 bytesAvailable();
virtual void ungetChar(char c);
virtual void translateError(ulong error);
virtual void setDtr(bool set=true);
virtual void setRts(bool set=true);
virtual ulong lineStatus();
};
#endif

View File

@ -1,226 +0,0 @@
#include "qextserialbase.h"
/*!
\fn QextSerialBase::QextSerialBase()
Default constructor.
*/
QextSerialBase::QextSerialBase()
: QIODevice()
{
#ifdef _TTY_WIN_
setPortName("COM1");
#elif defined(_TTY_IRIX_)
setPortName("/dev/ttyf1");
#elif defined(_TTY_HPUX_)
setPortName("/dev/tty1p0");
#elif defined(_TTY_SUN_)
setPortName("/dev/ttya");
#elif defined(_TTY_DIGITAL_)
setPortName("/dev/tty01");
#elif defined(_TTY_FREEBSD_)
setPortName("/dev/ttyd1");
#else
setPortName("/dev/ttyS0");
#endif
construct();
}
/*!
\fn QextSerialBase::QextSerialBase(const QString & name)
Construct a port and assign it to the device specified by the name parameter.
*/
QextSerialBase::QextSerialBase(const QString & name)
: QIODevice()
{
setPortName(name);
construct();
}
/*!
\fn QextSerialBase::~QextSerialBase()
Standard destructor.
*/
QextSerialBase::~QextSerialBase()
{
delete mutex;
}
/*!
\fn void QextSerialBase::construct()
Common constructor function for setting up default port settings.
(115200 Baud, 8N1, Hardware flow control where supported, otherwise no flow control, and 0 ms timeout).
*/
void QextSerialBase::construct()
{
Settings.BaudRate=BAUD115200;
Settings.DataBits=DATA_8;
Settings.Parity=PAR_NONE;
Settings.StopBits=STOP_1;
Settings.FlowControl=FLOW_HARDWARE;
Settings.Timeout_Millisec=500;
mutex = new QMutex( QMutex::Recursive );
setOpenMode(QIODevice::NotOpen);
}
void QextSerialBase::setQueryMode(QueryMode mechanism)
{
_queryMode = mechanism;
}
/*!
\fn void QextSerialBase::setPortName(const QString & name)
Sets the name of the device associated with the object, e.g. "COM1", or "/dev/ttyS0".
*/
void QextSerialBase::setPortName(const QString & name)
{
port = name;
}
/*!
\fn QString QextSerialBase::portName() const
Returns the name set by setPortName().
*/
QString QextSerialBase::portName() const
{
return port;
}
/*!
\fn BaudRateType QextSerialBase::baudRate(void) const
Returns the baud rate of the serial port. For a list of possible return values see
the definition of the enum BaudRateType.
*/
BaudRateType QextSerialBase::baudRate(void) const
{
return Settings.BaudRate;
}
/*!
\fn DataBitsType QextSerialBase::dataBits() const
Returns the number of data bits used by the port. For a list of possible values returned by
this function, see the definition of the enum DataBitsType.
*/
DataBitsType QextSerialBase::dataBits() const
{
return Settings.DataBits;
}
/*!
\fn ParityType QextSerialBase::parity() const
Returns the type of parity used by the port. For a list of possible values returned by
this function, see the definition of the enum ParityType.
*/
ParityType QextSerialBase::parity() const
{
return Settings.Parity;
}
/*!
\fn StopBitsType QextSerialBase::stopBits() const
Returns the number of stop bits used by the port. For a list of possible return values, see
the definition of the enum StopBitsType.
*/
StopBitsType QextSerialBase::stopBits() const
{
return Settings.StopBits;
}
/*!
\fn FlowType QextSerialBase::flowControl() const
Returns the type of flow control used by the port. For a list of possible values returned
by this function, see the definition of the enum FlowType.
*/
FlowType QextSerialBase::flowControl() const
{
return Settings.FlowControl;
}
/*!
\fn bool QextSerialBase::isSequential() const
Returns true if device is sequential, otherwise returns false. Serial port is sequential device
so this function always returns true. Check QIODevice::isSequential() documentation for more
information.
*/
bool QextSerialBase::isSequential() const
{
return true;
}
/*!
\fn bool QextSerialBase::atEnd() const
This function will return true if the input buffer is empty (or on error), and false otherwise.
Call QextSerialBase::lastError() for error information.
*/
bool QextSerialBase::atEnd() const
{
if (size()) {
return true;
}
return false;
}
/*!
\fn qint64 QextSerialBase::readLine(char * data, qint64 maxSize)
This function will read a line of buffered input from the port, stopping when either maxSize bytes
have been read, the port has no more data available, or a newline is encountered.
The value returned is the length of the string that was read.
*/
qint64 QextSerialBase::readLine(char * data, qint64 maxSize)
{
qint64 numBytes = bytesAvailable();
char* pData = data;
if (maxSize < 2) //maxSize must be larger than 1
return -1;
/*read a byte at a time for MIN(bytesAvail, maxSize - 1) iterations, or until a newline*/
while (pData<(data+numBytes) && --maxSize) {
readData(pData, 1);
if (*pData++ == '\n') {
break;
}
}
*pData='\0';
/*return size of data read*/
return (pData-data);
}
/*!
\fn ulong QextSerialBase::lastError() const
Returns the code for the last error encountered by the port, or E_NO_ERROR if the last port
operation was successful. Possible error codes are:
\verbatim
Error Explanation
--------------------------- -------------------------------------------------------------
E_NO_ERROR No Error has occured
E_INVALID_FD Invalid file descriptor (port was not opened correctly)
E_NO_MEMORY Unable to allocate memory tables (POSIX)
E_CAUGHT_NON_BLOCKED_SIGNAL Caught a non-blocked signal (POSIX)
E_PORT_TIMEOUT Operation timed out (POSIX)
E_INVALID_DEVICE The file opened by the port is not a character device (POSIX)
E_BREAK_CONDITION The port detected a break condition
E_FRAMING_ERROR The port detected a framing error
(usually caused by incorrect baud rate settings)
E_IO_ERROR There was an I/O error while communicating with the port
E_BUFFER_OVERRUN Character buffer overrun
E_RECEIVE_OVERFLOW Receive buffer overflow
E_RECEIVE_PARITY_ERROR The port detected a parity error in the received data
E_TRANSMIT_OVERFLOW Transmit buffer overflow
E_READ_FAILED General read operation failure
E_WRITE_FAILED General write operation failure
\endverbatim
*/
ulong QextSerialBase::lastError() const
{
return lastErr;
}

View File

@ -1,258 +0,0 @@
#ifndef _QEXTSERIALBASE_H_
#define _QEXTSERIALBASE_H_
#include <QIODevice>
#include <QFile>
#include <QThread>
#include <QMutex>
/*if all warning messages are turned off, flag portability warnings to be turned off as well*/
#ifdef _TTY_NOWARN_
#define _TTY_NOWARN_PORT_
#endif
/*macros for thread support*/
#define LOCK_MUTEX() mutex->lock()
#define UNLOCK_MUTEX() mutex->unlock()
/*macros for warning and debug messages*/
#ifdef _TTY_NOWARN_PORT_
#define TTY_PORTABILITY_WARNING(s)
#else
#define TTY_PORTABILITY_WARNING(s) qWarning(s)
#endif /*_TTY_NOWARN_PORT_*/
#ifdef _TTY_NOWARN_
#define TTY_WARNING(s)
#else
#define TTY_WARNING(s) qWarning(s)
#endif /*_TTY_NOWARN_*/
/*line status constants*/
#define LS_CTS 0x01
#define LS_DSR 0x02
#define LS_DCD 0x04
#define LS_RI 0x08
#define LS_RTS 0x10
#define LS_DTR 0x20
#define LS_ST 0x40
#define LS_SR 0x80
/*error constants*/
#define E_NO_ERROR 0
#define E_INVALID_FD 1
#define E_NO_MEMORY 2
#define E_CAUGHT_NON_BLOCKED_SIGNAL 3
#define E_PORT_TIMEOUT 4
#define E_INVALID_DEVICE 5
#define E_BREAK_CONDITION 6
#define E_FRAMING_ERROR 7
#define E_IO_ERROR 8
#define E_BUFFER_OVERRUN 9
#define E_RECEIVE_OVERFLOW 10
#define E_RECEIVE_PARITY_ERROR 11
#define E_TRANSMIT_OVERFLOW 12
#define E_READ_FAILED 13
#define E_WRITE_FAILED 14
/*!
* Enums for port settings.
*/
enum NamingConvention
{
WIN_NAMES,
IRIX_NAMES,
HPUX_NAMES,
SUN_NAMES,
DIGITAL_NAMES,
FREEBSD_NAMES,
LINUX_NAMES
};
enum BaudRateType
{
BAUD50, //POSIX ONLY
BAUD75, //POSIX ONLY
BAUD110,
BAUD134, //POSIX ONLY
BAUD150, //POSIX ONLY
BAUD200, //POSIX ONLY
BAUD300,
BAUD600,
BAUD1200,
BAUD1800, //POSIX ONLY
BAUD2400,
BAUD4800,
BAUD9600,
BAUD14400, //WINDOWS ONLY
BAUD19200,
BAUD38400,
BAUD56000, //WINDOWS ONLY
BAUD57600,
BAUD76800, //POSIX ONLY
BAUD115200,
BAUD128000, //WINDOWS ONLY
BAUD256000 //WINDOWS ONLY
};
enum DataBitsType
{
DATA_5,
DATA_6,
DATA_7,
DATA_8
};
enum ParityType
{
PAR_NONE,
PAR_ODD,
PAR_EVEN,
PAR_MARK, //WINDOWS ONLY
PAR_SPACE
};
enum StopBitsType
{
STOP_1,
STOP_1_5, //WINDOWS ONLY
STOP_2
};
enum FlowType
{
FLOW_OFF,
FLOW_HARDWARE,
FLOW_XONXOFF
};
/**
* structure to contain port settings
*/
struct PortSettings
{
BaudRateType BaudRate;
DataBitsType DataBits;
ParityType Parity;
StopBitsType StopBits;
FlowType FlowControl;
long Timeout_Millisec;
};
/*!
* \author Stefan Sander
* \author Michal Policht
*
* A common base class for Win_QextSerialBase, Posix_QextSerialBase and QextSerialPort.
*/
class QextSerialBase : public QIODevice
{
Q_OBJECT
public:
enum QueryMode {
Polling,
EventDriven
};
protected:
QMutex* mutex;
QString port;
PortSettings Settings;
ulong lastErr;
QextSerialBase::QueryMode _queryMode;
virtual qint64 readData(char * data, qint64 maxSize)=0;
virtual qint64 writeData(const char * data, qint64 maxSize)=0;
public:
QextSerialBase();
QextSerialBase(const QString & name);
virtual ~QextSerialBase();
virtual void construct();
virtual void setPortName(const QString & name);
virtual QString portName() const;
/**!
* Get query mode.
* \return query mode.
*/
inline QextSerialBase::QueryMode queryMode() const { return _queryMode; };
/*!
* Set desired serial communication handling style. You may choose from polling
* or event driven approach. This function does nothing when port is open; to
* apply changes port must be reopened.
*
* In event driven approach read() and write() functions are acting
* asynchronously. They return immediately and the operation is performed in
* the background, so they doesn't freeze the calling thread.
* To determine when operation is finished, QextSerialPort runs separate thread
* and monitors serial port events. Whenever the event occurs, adequate signal
* is emitted.
*
* When polling is set, read() and write() are acting synchronously. Signals are
* not working in this mode and some functions may not be available. The advantage
* of polling is that it generates less overhead due to lack of signals emissions
* and it doesn't start separate thread to monitor events.
*
* Generally event driven approach is more capable and friendly, although some
* applications may need as low overhead as possible and then polling comes.
*
* \param mode query mode.
*/
virtual void setQueryMode(QueryMode mode);
// virtual void setBlockingRead(bool block) = 0; ///< @todo implement.
virtual void setBaudRate(BaudRateType)=0;
virtual BaudRateType baudRate() const;
virtual void setDataBits(DataBitsType)=0;
virtual DataBitsType dataBits() const;
virtual void setParity(ParityType)=0;
virtual ParityType parity() const;
virtual void setStopBits(StopBitsType)=0;
virtual StopBitsType stopBits() const;
virtual void setFlowControl(FlowType)=0;
virtual FlowType flowControl() const;
virtual void setTimeout(long)=0;
virtual bool open(OpenMode mode)=0;
virtual bool isSequential() const;
virtual void close()=0;
virtual void flush()=0;
virtual qint64 size() const=0;
virtual qint64 bytesAvailable()=0;
virtual bool atEnd() const;
virtual void ungetChar(char c)=0;
virtual qint64 readLine(char * data, qint64 maxSize);
virtual ulong lastError() const;
virtual void translateError(ulong error)=0;
virtual void setDtr(bool set=true)=0;
virtual void setRts(bool set=true)=0;
virtual ulong lineStatus()=0;
signals:
/**
* This signal is emitted whenever port settings are updated.
* \param valid \p true if settings are valid, \p false otherwise.
*
* @todo implement.
*/
// void validSettings(bool valid);
/*!
* This signal is emitted whenever dsr line has changed its state. You may
* use this signal to check if device is connected.
* \param status \p true when DSR signal is on, \p false otherwise.
*
* \see lineStatus().
*/
void dsrChanged(bool status);
};
#endif

View File

@ -1,158 +0,0 @@
/**
* @file qextserialenumerator.cpp
* @author Michał Policht
* @see QextSerialEnumerator
*/
#include "qextserialenumerator.h"
#if defined ( _TTY_WIN_ )
#include <objbase.h>
#include <initguid.h>
#endif
#ifdef _TTY_WIN_
//this is serial port GUID
#ifndef GUID_CLASS_COMPORT
DEFINE_GUID(GUID_CLASS_COMPORT, 0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73);
#endif
/* Gordon Schumacher's macros for TCHAR -> QString conversions and vice versa */
#ifdef UNICODE
#define QStringToTCHAR(x) (wchar_t*) x.utf16()
#define PQStringToTCHAR(x) (wchar_t*) x->utf16()
#define TCHARToQString(x) QString::fromUtf16((ushort*)(x))
#define TCHARToQStringN(x,y) QString::fromUtf16((ushort*)(x),(y))
#else
#define QStringToTCHAR(x) x.local8Bit().constData()
#define PQStringToTCHAR(x) x->local8Bit().constData()
#define TCHARToQString(x) QString::fromLocal8Bit((x))
#define TCHARToQStringN(x,y) QString::fromLocal8Bit((x),(y))
#endif /*UNICODE*/
//static
QString QextSerialEnumerator::getRegKeyValue(HKEY key, LPCTSTR property)
{
DWORD size = 0;
RegQueryValueEx(key, property, NULL, NULL, NULL, & size);
BYTE * buff = new BYTE[size];
if (RegQueryValueEx(key, property, NULL, NULL, buff, & size) == ERROR_SUCCESS) {
return TCHARToQStringN(buff, size);
delete [] buff;
} else {
qWarning("QextSerialEnumerator::getRegKeyValue: can not obtain value from registry");
delete [] buff;
return QString();
}
}
//static
QString QextSerialEnumerator::getDeviceProperty(HDEVINFO devInfo, PSP_DEVINFO_DATA devData, DWORD property)
{
DWORD buffSize = 0;
SetupDiGetDeviceRegistryProperty(devInfo, devData, property, NULL, NULL, 0, & buffSize);
BYTE * buff = new BYTE[buffSize];
if (!SetupDiGetDeviceRegistryProperty(devInfo, devData, property, NULL, buff, buffSize, NULL))
qCritical("Can not obtain property: %ld from registry", property);
QString result = TCHARToQString(buff);
delete [] buff;
return result;
}
//static
void QextSerialEnumerator::setupAPIScan(QList<QextPortInfo> & infoList)
{
HDEVINFO devInfo = INVALID_HANDLE_VALUE;
GUID * guidDev = (GUID *) & GUID_CLASS_COMPORT;
devInfo = SetupDiGetClassDevs(guidDev, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
if(devInfo == INVALID_HANDLE_VALUE) {
qCritical("SetupDiGetClassDevs failed. Error code: %ld", GetLastError());
return;
}
//enumerate the devices
bool ok = true;
SP_DEVICE_INTERFACE_DATA ifcData;
ifcData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
SP_DEVICE_INTERFACE_DETAIL_DATA * detData = NULL;
DWORD detDataSize = 0;
DWORD oldDetDataSize = 0;
for (DWORD i = 0; ok; i++) {
ok = SetupDiEnumDeviceInterfaces(devInfo, NULL, guidDev, i, &ifcData);
if (ok) {
SP_DEVINFO_DATA devData = {sizeof(SP_DEVINFO_DATA)};
//check for required detData size
SetupDiGetDeviceInterfaceDetail(devInfo, & ifcData, NULL, 0, & detDataSize, & devData);
//if larger than old detData size then reallocate the buffer
if (detDataSize > oldDetDataSize) {
delete [] detData;
detData = (SP_DEVICE_INTERFACE_DETAIL_DATA *) new char[detDataSize];
detData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
oldDetDataSize = detDataSize;
}
//check the details
if (SetupDiGetDeviceInterfaceDetail(devInfo, & ifcData, detData, detDataSize,
NULL, & devData)) {
// Got a device. Get the details.
QextPortInfo info;
info.friendName = getDeviceProperty(devInfo, & devData, SPDRP_FRIENDLYNAME);
info.physName = getDeviceProperty(devInfo, & devData, SPDRP_PHYSICAL_DEVICE_OBJECT_NAME);
info.enumName = getDeviceProperty(devInfo, & devData, SPDRP_ENUMERATOR_NAME);
//anyway, to get the port name we must still open registry directly :( ???
//Eh...
HKEY devKey = SetupDiOpenDevRegKey(devInfo, & devData, DICS_FLAG_GLOBAL, 0,
DIREG_DEV, KEY_READ);
info.portName = getRegKeyValue(devKey, TEXT("PortName"));
RegCloseKey(devKey);
infoList.append(info);
} else {
qCritical("SetupDiGetDeviceInterfaceDetail failed. Error code: %ld", GetLastError());
delete [] detData;
return;
}
} else {
if (GetLastError() != ERROR_NO_MORE_ITEMS) {
delete [] detData;
qCritical("SetupDiEnumDeviceInterfaces failed. Error code: %ld", GetLastError());
return;
}
}
}
delete [] detData;
}
#endif /*_TTY_WIN_*/
//static
QList<QextPortInfo> QextSerialEnumerator::getPorts()
{
QList<QextPortInfo> ports;
#ifdef _TTY_WIN_
OSVERSIONINFO vi;
vi.dwOSVersionInfoSize = sizeof(vi);
if (!::GetVersionEx(&vi)) {
qCritical("Could not get OS version.");
return ports;
}
// Handle windows 9x and NT4 specially
if (vi.dwMajorVersion < 5) {
qCritical("Enumeration for this version of Windows is not implemented yet");
/* if (vi.dwPlatformId == VER_PLATFORM_WIN32_NT)
EnumPortsWNt4(ports);
else
EnumPortsW9x(ports);*/
} else //w2k or later
setupAPIScan(ports);
#endif /*_TTY_WIN_*/
#ifdef _TTY_POSIX_
qCritical("Enumeration for POSIX systems is not implemented yet.");
#endif /*_TTY_POSIX_*/
return ports;
}

View File

@ -1,75 +0,0 @@
/*!
* \file qextserialenumerator.h
* \author Michal Policht
* \see QextSerialEnumerator
*/
#ifndef _QEXTSERIALENUMERATOR_H_
#define _QEXTSERIALENUMERATOR_H_
#include <QString>
#include <QList>
#ifdef _TTY_WIN_
#include <windows.h>
#include <setupapi.h>
#endif /*_TTY_WIN_*/
/*!
* Structure containing port information.
*/
struct QextPortInfo {
QString portName; ///< Port name.
QString physName; ///< Physical name.
QString friendName; ///< Friendly name.
QString enumName; ///< Enumerator name.
};
/*!
* Serial port enumerator. This class provides list of ports available in the system.
*
* Windows implementation is based on Zach Gorman's work from
* <a href="http://www.codeproject.com">The Code Project</a> (http://www.codeproject.com/system/setupdi.asp).
*/
class QextSerialEnumerator
{
private:
#ifdef _TTY_WIN_
/*!
* Get value of specified property from the registry.
* \param key handle to an open key.
* \param property property name.
* \return property value.
*/
static QString getRegKeyValue(HKEY key, LPCTSTR property);
/*!
* Get specific property from registry.
* \param devInfo pointer to the device information set that contains the interface
* and its underlying device. Returned by SetupDiGetClassDevs() function.
* \param devData pointer to an SP_DEVINFO_DATA structure that defines the device instance.
* this is returned by SetupDiGetDeviceInterfaceDetail() function.
* \param property registry property. One of defined SPDRP_* constants.
* \return property string.
*/
static QString getDeviceProperty(HDEVINFO devInfo, PSP_DEVINFO_DATA devData, DWORD property);
/*!
* Search for serial ports using setupapi.
* \param infoList list with result.
*/
static void setupAPIScan(QList<QextPortInfo> & infoList);
#endif /*_TTY_WIN_*/
public:
/*!
* Get list of ports.
* \return list of ports currently available in the system.
*/
static QList<QextPortInfo> getPorts();
};
#endif /*_QEXTSERIALENUMERATOR_H_*/

View File

@ -1,106 +0,0 @@
/*!
\class QextSerialPort
\author Stefan Sander
\author Michal Policht
A cross-platform serial port class.
This class encapsulates a serial port on both POSIX and Windows systems. The user will be
notified of errors and possible portability conflicts at run-time by default - this behavior can
be turned off by defining _TTY_NOWARN_ (to turn off all warnings) or _TTY_NOWARN_PORT_ (to turn
off portability warnings) in the project.
You may choose from polling or event driven API. For details check setQueryMode() documentation.
\note
On Windows NT/2000/XP this class uses Win32 serial port functions by default. The user may
select POSIX behavior under NT, 2000, or XP ONLY by defining _TTY_POSIX_ in the project. I can
make no guarantees as to the quality of POSIX support under NT/2000 however.
*/
#include <stdio.h>
#include "qextserialport.h"
/*!
Default constructor. Note that the naming convention used by a QextSerialPort constructed with
this constructor will be determined by #defined constants, or lack thereof - the default behavior
is the same as _TTY_LINUX_. Possible naming conventions and their associated constants are:
\verbatim
Constant Used By Naming Convention
---------- ------------- ------------------------
_TTY_WIN_ Windows COM1, COM2
_TTY_IRIX_ SGI/IRIX /dev/ttyf1, /dev/ttyf2
_TTY_HPUX_ HP-UX /dev/tty1p0, /dev/tty2p0
_TTY_SUN_ SunOS/Solaris /dev/ttya, /dev/ttyb
_TTY_DIGITAL_ Digital UNIX /dev/tty01, /dev/tty02
_TTY_FREEBSD_ FreeBSD /dev/ttyd0, /dev/ttyd1
_TTY_LINUX_ Linux /dev/ttyS0, /dev/ttyS1
<none> Linux /dev/ttyS0, /dev/ttyS1
\endverbatim
The object will be associated with the first port in the system, e.g. COM1 on Windows systems.
See the other constructors if you need to use a port other than the first.
*/
QextSerialPort::QextSerialPort()
: QextBaseType()
{}
/*!
Constructs a serial port attached to the port specified by name.
name is the name of the device, which is windowsystem-specific,
e.g."COM1" or "/dev/ttyS0".
\see setQueryMode().
*/
QextSerialPort::QextSerialPort(const QString & name, QueryMode mode)
: QextBaseType(name, mode)
{
}
/*!
Constructs a port with default name and settings specified by the settings parameter.
\see setQueryMode().
*/
QextSerialPort::QextSerialPort(PortSettings const& settings, QueryMode mode)
: QextBaseType(settings, mode)
{}
/*!
Constructs a port with the name and settings specified.
\see setQueryMode().
*/
QextSerialPort::QextSerialPort(const QString & name, PortSettings const& settings, QueryMode mode)
: QextBaseType(name, settings, mode)
{}
/*!
Copy constructor.
\deprecated
*/
QextSerialPort::QextSerialPort(const QextSerialPort& s)
: QextBaseType(s)
{}
/*!
\fn QextSerialPort& QextSerialPort::operator=(const QextSerialPort& s)
Overrides the = operator.
\deprecated
*/
QextSerialPort& QextSerialPort::operator=(const QextSerialPort& s)
{
return (QextSerialPort&)QextBaseType::operator=(s);
}
/*!
\fn QextSerialPort::~QextSerialPort()
Standard destructor.
*/
QextSerialPort::~QextSerialPort()
{}

View File

@ -1,33 +0,0 @@
#ifndef _QEXTSERIALPORT_H_
#define _QEXTSERIALPORT_H_
/*POSIX CODE*/
#ifdef _TTY_POSIX_
#include "posix_qextserialport.h"
#define QextBaseType Posix_QextSerialPort
/*MS WINDOWS CODE*/
#else
#include "win_qextserialport.h"
#define QextBaseType Win_QextSerialPort
#endif
class QextSerialPort: public QextBaseType
{
Q_OBJECT
public:
typedef QextSerialBase::QueryMode QueryMode;
QextSerialPort();
QextSerialPort(const QString & name, QueryMode mode = QextSerialPort::Polling);
QextSerialPort(PortSettings const& s, QueryMode mode = QextSerialPort::Polling);
QextSerialPort(const QString & name, PortSettings const& s, QueryMode mode = QextSerialPort::Polling);
QextSerialPort(const QextSerialPort& s);
QextSerialPort& operator=(const QextSerialPort&);
virtual ~QextSerialPort();
};
#endif

View File

@ -1,33 +0,0 @@
CONFIG += debug_and_release
CONFIG += qt
CONFIG += warn_on
CONFIG += thread
OBJECTS_DIR = obj
MOC_DIR = obj/moc.cpp
UI_DIR = obj/ui.h
RCC_DIR = qrc
#user directory
DESTDIR = bin
DEPENDPATH += $$PWD
INCLUDEPATH += $$PWD
HEADERS += $$PWD/qextserialbase.h \
$$PWD/qextserialport.h \
$$PWD/qextserialenumerator.h
SOURCES += $$PWD/qextserialbase.cpp \
$$PWD/qextserialport.cpp \
$$PWD/qextserialenumerator.cpp
unix:HEADERS += $$PWD/posix_qextserialport.h
unix:SOURCES += $$PWD/posix_qextserialport.cpp
unix:DEFINES += _TTY_POSIX_
win32:HEADERS += $$PWD/win_qextserialport.h
win32:SOURCES += $$PWD/win_qextserialport.cpp
win32:DEFINES += _TTY_WIN_
win32:LIBS += -lsetupapi

View File

@ -1,49 +0,0 @@
PROJECT = qextserialport
TEMPLATE = lib
CONFIG += debug_and_release
CONFIG += qt
CONFIG += warn_on
CONFIG += thread
CONFIG += dll
#CONFIG += staticlib
QT -= gui
OBJECTS_DIR = build/obj
MOC_DIR = build/moc
DEPENDDIR = .
INCLUDEDIR = .
HEADERS = qextserialbase.h \
qextserialport.h \
qextserialenumerator.h
SOURCES = qextserialbase.cpp \
qextserialport.cpp \
qextserialenumerator.cpp
unix:HEADERS += posix_qextserialport.h
unix:SOURCES += posix_qextserialport.cpp
unix:DEFINES += _TTY_POSIX_
win32:HEADERS += win_qextserialport.h
win32:SOURCES += win_qextserialport.cpp
win32:DEFINES += _TTY_WIN_
win32:LIBS += -lsetupapi
DESTDIR = build
#DESTDIR = examples/enumerator/debug
#DESTDIR = examples/qespta/debug
#DESTDIR = examples/event/debug
CONFIG(debug, debug|release) {
TARGET = qextserialportd
} else {
TARGET = qextserialport
}
unix:VERSION = 1.2.0

File diff suppressed because it is too large Load Diff

View File

@ -1,137 +0,0 @@
#ifndef _WIN_QEXTSERIALPORT_H_
#define _WIN_QEXTSERIALPORT_H_
#include "qextserialbase.h"
#include <windows.h>
#include <QThread>
/*if all warning messages are turned off, flag portability warnings to be turned off as well*/
#ifdef _TTY_NOWARN_
#define _TTY_NOWARN_PORT_
#endif
class QReadWriteLock;
class Win_QextSerialThread;
/*!
\author Stefan Sander
\author Michal Policht
A cross-platform serial port class.
This class encapsulates the Windows portion of QextSerialPort. The user will be notified of
errors and possible portability conflicts at run-time by default - this behavior can be turned
off by defining _TTY_NOWARN_ (to turn off all warnings) or _TTY_NOWARN_PORT_ (to turn off
portability warnings) in the project. Note that defining _TTY_NOWARN_ also defines
_TTY_NOWARN_PORT_.
\note
On Windows NT/2000/XP this class uses Win32 serial port functions by default. The user may
select POSIX behavior under NT, 2000, or XP ONLY by defining _TTY_POSIX_ in the project. I can
make no guarantees as to the quality of POSIX support under NT/2000 however.
\todo remove copy constructor and assign operator.
*/
class Win_QextSerialPort: public QextSerialBase
{
Q_OBJECT
friend class Win_QextSerialThread;
private:
/*!
* This method is a part of constructor.
*/
void init();
protected:
HANDLE Win_Handle;
HANDLE threadStartEvent;
HANDLE threadTerminateEvent;
OVERLAPPED overlap;
OVERLAPPED overlapWrite;
COMMCONFIG Win_CommConfig;
COMMTIMEOUTS Win_CommTimeouts;
QReadWriteLock * bytesToWriteLock; ///< @todo maybe move to QextSerialBase.
qint64 _bytesToWrite; ///< @todo maybe move to QextSerialBase (and implement in POSIX).
Win_QextSerialThread * overlapThread; ///< @todo maybe move to QextSerialBase (and implement in POSIX).
void monitorCommEvent();
void terminateCommWait();
virtual qint64 readData(char *data, qint64 maxSize);
virtual qint64 writeData(const char *data, qint64 maxSize);
public:
Win_QextSerialPort();
Win_QextSerialPort(Win_QextSerialPort const& s);
Win_QextSerialPort(const QString & name, QextSerialBase::QueryMode mode = QextSerialBase::Polling);
Win_QextSerialPort(const PortSettings& settings, QextSerialBase::QueryMode mode = QextSerialBase::Polling);
Win_QextSerialPort(const QString & name, const PortSettings& settings, QextSerialBase::QueryMode mode = QextSerialBase::Polling);
Win_QextSerialPort& operator=(const Win_QextSerialPort& s);
virtual ~Win_QextSerialPort();
virtual bool open(OpenMode mode);
virtual void close();
virtual void flush();
virtual qint64 size() const;
virtual void ungetChar(char c);
virtual void setFlowControl(FlowType);
virtual void setParity(ParityType);
virtual void setDataBits(DataBitsType);
virtual void setStopBits(StopBitsType);
virtual void setBaudRate(BaudRateType);
virtual void setDtr(bool set=true);
virtual void setRts(bool set=true);
virtual ulong lineStatus(void);
virtual qint64 bytesAvailable();
virtual void translateError(ulong);
virtual void setTimeout(long);
/*!
* Return number of bytes waiting in the buffer. Currently this shows number
* of bytes queued within write() and before the TX_EMPTY event occured. TX_EMPTY
* event is created whenever last character in the system buffer was sent.
*
* \return number of bytes queued within write(), before the first TX_EMPTY
* event occur.
*
* \warning this function may not give you expected results since TX_EMPTY may occur
* while writing data to the buffer. Eventually some TX_EMPTY events may not be
* catched.
*
* \note this function always returns 0 in polling mode.
*
* \see flush().
*/
virtual qint64 bytesToWrite() const;
virtual bool waitForReadyRead(int msecs); ///< @todo implement.
};
/*!
* This thread monitors communication events.
*/
class Win_QextSerialThread: public QThread
{
Win_QextSerialPort * qesp;
bool terminate;
public:
/*!
* Constructor.
*
* \param qesp valid serial port object.
*/
Win_QextSerialThread(Win_QextSerialPort * qesp);
/*!
* Stop the thread.
*/
void stop();
protected:
//overriden
virtual void run();
};
#endif

View File

@ -11,16 +11,8 @@
#include <QTranslator>
#include <QFontDatabase>
QQtApplication::QQtApplication(int &argc, char **argv
#ifndef Q_QDOC
, int flags
#endif
) :
QApplication(argc, argv
#ifndef Q_QDOC
, flags
#endif
),
QQtApplication::QQtApplication(int &argc, char **argv) :
QApplication(argc, argv),
bUPanAutoRun(false)
{
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)

View File

@ -9,11 +9,7 @@ class QQTSHARED_EXPORT QQtApplication : public QApplication
Q_OBJECT
public:
public:
explicit QQtApplication(int &argc, char **argv
#ifndef Q_QDOC
, int = ApplicationFlags
#endif
);
explicit QQtApplication(int &argc, char **argv);
void setLanguage(QString qmfile = "./lang/zh_CN.qm");
//palette