Я вот решил сделать свой класс для работы с последовательными портами, на базе QextSerialPort
!
И там, (вQextSerialPort ) для Windows куска НЕ РЕАЛИЗОВАН режим прослушки!!! И вообще порт работает не в асинхронном режиме!!! т.е как вы его прослушиваете в таком случае ?
Там только "тупо" перед чтением проверяется наличие данных в приемном буфере!
А я вот уже почти реализовал прослушку (в части win32 куска кода) и т.п. используя объекты ядра Win32, только у меня пока что небольшая проблема возникает при попытках закрыть порт
но эт не важно, разберусь!
моя шапка (для Win куска) выглядит так:
class TWinSerialDevice:public TBaseSerialDevice {
Q_OBJECT
public:
TWinSerialDevice();
TWinSerialDevice(const QString & deviceName); //+
virtual ~TWinSerialDevice();
//параметры
bool setBaudRate(TBaudRate);
bool setDataBits(TDataBits);
bool setParity(TParity);
bool setStopBits(TStopBits);
bool setFlowControl(TFlow);
//таймауты
bool setCharTimeout(ulong, ulong);
bool open(OpenMode mode=0);
void close();
virtual qint64 bytesAvailable();
//управление линиями
bool setDtr(bool set=true);
bool setRts(bool set=true);
ulong lineStatus(void);
virtual bool waitForReadyRead (int msecs);
virtual bool waitForBytesWritten(int msecs);
private:
HANDLE hd;
COMMCONFIG cc, oldcc;
COMMTIMEOUTS ct; //, oldct;
virtual qint64 readData(char *data, qint64 maxSize);
virtual qint64 writeData(const char *data, qint64 maxSize);
};
если кому надо - могу прислать исходники - только чур автора (т.е меня ) не переписывать и не менять!