Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: rukudias от Май 07, 2009, 21:21



Название: QextSerialPort проблемы с чтением
Отправлено: rukudias от Май 07, 2009, 21:21
Привет Всем!
Использую обвертку для  QextSerialPort
Смысл обвертки в обдельном потоке слушать сом порт и вслучае прихода данных
слелать emit сигнал в класс обвертку

Код:
threadReceive = new ThreadReceive(extSerialPort);//объект обвертки сом порта
bool fl=QObject::connect(threadReceive, SIGNAL(newDataReceived(const QByteArray &)), this, SIGNAL(newDataReceived(const QByteArray &)));
receivingEnabled = true;


fl=false те соеденения не произошло
что может быть причиной?


Название: Re: QextSerialPort проблемы с чтением
Отправлено: lit-uriy от Май 07, 2009, 21:24
а ты консольку выведи и Qt сама тебе всё расскажет.


Название: Re: QextSerialPort проблемы с чтением
Отправлено: rukudias от Май 07, 2009, 21:42
Сори этокак консольку? ???


Название: Re: QextSerialPort проблемы с чтением
Отправлено: lit-uriy от Май 07, 2009, 21:47
в файл проекта добавь строку:
CONFIG += console


Название: Re: QextSerialPort проблемы с чтением
Отправлено: pastor от Май 08, 2009, 00:10
Если используешь студию, смотри с Output при запуске программы. Весь вывод осуществляется туда.

ЗЫ: Былобы неплохо увидеть больше кода, например ThreadReceive.h


Название: Re: QextSerialPort проблемы с чтением
Отправлено: -QT- от Май 08, 2009, 08:17
Привет Всем!
Использую обвертку для  QextSerialPort
Смысл обвертки в обдельном потоке слушать сом порт и вслучае прихода данных
слелать emit сигнал в класс обвертку

Код:
threadReceive = new ThreadReceive(extSerialPort);//объект обвертки сом порта
bool fl=QObject::connect(threadReceive, SIGNAL(newDataReceived(const QByteArray &)), this, SIGNAL(newDataReceived(const QByteArray &)));
receivingEnabled = true;


fl=false те соеденения не произошло
что может быть причиной?


Если мне не изменяет память то QextSerialPort сам создает отдельный поток при открытии порта. И Ваш отдельный поток тут
может и не нужен вовсе.


Название: Re: QextSerialPort проблемы с чтением
Отправлено: pastor от Май 08, 2009, 11:34
Если мне не изменяет память то QextSerialPort сам создает отдельный поток при открытии порта.

Напверное память изменила ))) Такого функционала в QextSerialPort нет


Название: Re: QextSerialPort проблемы с чтением
Отправлено: -QT- от Май 08, 2009, 12:23
 ;D« Ответ #5 : Сегодня в 08:17:15 » ;D
Ага, улыбнуло, это я пораньше на работу приперся ...


Название: Re: QextSerialPort проблемы с чтением
Отправлено: kuzulis от Май 08, 2009, 13:36
Я вот решил сделать свой класс для работы с последовательными портами, на базе 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);
};

если кому надо - могу прислать исходники - только чур автора (т.е меня ) не переписывать и не менять! :)
 


Название: Re: QextSerialPort проблемы с чтением
Отправлено: kuzulis от Май 08, 2009, 13:39
и еще, в QextSerialPort  нельзя емиттить ничаво, т.к нету макроса   Q_OBJECT !!! работать не буит! :) (вроде)