Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Piknik от Декабря 02, 2011, 11:25



Название: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 02, 2011, 11:25
Здравствуйте. Проблемка такая...принимаю по ком-порту 6 байт данных раз в 4 сек. Если использую режим ReadOnly или AbstractSerial::ReadOnly| AbstractSerial::Unbuffered посылка приходит частями, те:
Код:
Bytes_Available: 3 
Bytes_Available: 3

или
Код:
Bytes_Available: 2 
Bytes_Available: 4

 Любые игры с "setCharIntervalTimeout(10)"  не помогают... Почему сообщение разделяется на куски?

Код:
MyMainWindow::MyMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MyMainWindow)
{
    ui->setupUi(this);
...
serialPort->open(AbstractSerial::ReadOnly| AbstractSerial::Unbuffered);
...
serialPort->setCharIntervalTimeout(10);  
connect(serialPort, SIGNAL(readyRead()), this, SLOT(serialDataReady()));
}

void MyMainWindow::serialDataReady()
{
    uint8_t num = serialPort->bytesAvailable();    // сколько байт в буфере
    qDebug() << "Bytes_Available:" << num;
    QByteArray ba;


     if ((serialPort->bytesAvailable() > 0))
     {
          ba.clear();
          ba = serialPort->read(num);
          qDebug() << "Readed is : " << ba.size() << " bytes";
     }

    serialPort->reset();


}


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 02, 2011, 13:22
Цитировать
Любые игры с "setCharIntervalTimeout(10)"  не помогают...
Потому, что надо играться с setTotalReadConstantTimeout(),
а про setCharIntervalTimeout() нужно забыть.






Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 02, 2011, 13:48
Тоже не помогает...


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 02, 2011, 14:17
Какую версию библиотеки используете и какая ОС?

Код
C++ (Qt)
#if defined (Q_OS_UNIX)
       // Method setTotalReadConstantTimeout() not supported in *.nix.
       if (port->openMode() & AbstractSerial::Unbuffered)
           port->setCharIntervalTimeout(5000);//5 msec
#elif defined (Q_OS_WIN)
       if (port->openMode() & AbstractSerial::Unbuffered)
           port->setTotalReadConstantTimeout(100); //100 msec
#endif
 

А вообще, пора уже переходить на новье - ветку 2.0.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 02, 2011, 14:23
Там где 2 библ qserialdevice и qserialdeviceenumerator . Вторую не крепил, не критично? Где посмотреть версию? ОС: Windows XP


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 02, 2011, 14:26
Цитировать
Где посмотреть версию?

тут (https://gitorious.org/qserialdevice/qserialdevice/trees/master),
справа внизу будут все доступные версии.

Если используете ту ветку что сейчас - то качайте master бранч,
если хотите самое новье - то 2.0 бранч.



Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 02, 2011, 14:32
ну судя по всему у меня и так мастер бранч...


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 02, 2011, 14:34
Значит напиши побольше в

Код
C++ (Qt)
port->setTotalReadConstantTimeout(100); //100 msec


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 02, 2011, 14:44
Да ощущение, что ему все равно...(( сколько не поставить..может я не так подцепляю библиотеку...


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 02, 2011, 15:10
Ну тогда - ХЗ, проверяй в отладчике.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 05, 2011, 12:13
С новой библиотекой 2.0 другой момент. Все вроде принимает "Bytes_Available: 6 ", но не генерирует сигнал "readyRead()" и не уходит в обработку слота. В чем может быть причина?
Код:
 MyMainWindow::MyMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MyMainWindow)
{
    ui->setupUi(this);
    QIODevice::OpenMode mode = QIODevice::ReadOnly;
    mode |= QIODevice::Unbuffered;

    if (!myPortCom->open(mode))                                                  // Открываем порт
    {
        QMessageBox::critical(this, QString::fromLocal8Bit("Com port"),
                              QString::fromLocal8Bit("Не могу открыть порт ")+ comPort, QMessageBox::Ok);
        ui->statusBar->showMessage(QString::fromLocal8Bit("Error opening COM port!"));
    }
    else                                                 
    {

        myPortCom->setRate(9600);                 
        myPortCom->setDataBits(SerialPort::Data8);
        myPortCom->setParity(SerialPort::NoParity);
        myPortCom->setStopBits(SerialPort::OneStop);
        myPortCom->setFlowControl(SerialPort::NoFlowControl);
        myPortCom->waitForReadyRead(5000);
   
        connect(myPortCom, SIGNAL(readyRead()), this, SLOT(serialDataReady()));
    }
    uint8_t num = myPortCom->bytesAvailable();                     // байт в буфере
    qDebug() << "Bytes_Available:" << num;

void MyMainWindow::serialDataReady()
{
     qDebug() << "Recieved";
}


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 05, 2011, 12:33
Потому, что connect делаешь после того, как отработает waitForReadyRead(), т.е. после того как сигнал уже излучился.
В винде такая есть особенность, что readyRead() срабатывает однажды при приеме символа. И если заранее не сделать
connect - то никакого сигнала не получишь.

Поэтому нужно делать connect сразу после создания объекта порта.

И непонятно зачем вообще использовал waitForReadyRead() + connect - это хрень собачья. Почитай
документацию Qt в плане того, в каких случаях необходимо использовать waitForReadyRead().

Так же в 2.0 не используй.
Код
C++ (Qt)
mode |= QIODevice::Unbuffered;
 

С версией 2.0 идут примеры /test/guiapp - вот там и проверь принимаются или нет твои 6 байт.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 05, 2011, 14:58
Спасибо за помошь. Убрал waitForReadyRead, снова делит пакет пополам...есть какой то аналог setTotalReadConstantTimeout() в этой библиотеке, не могу найти..ну или как выставить этот таймаут, чтоб пакет целиком прочелся...или же хотя бы читался по байту...ну не догоняю..


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 05, 2011, 15:41
Цитировать
есть какой то аналог setTotalReadConstantTimeout() в этой библиотеке

Нету. Он и не нужен. В этой новой версии чтение происходит "мгновенно",
без всяких таймаутов, т.е. не блокирующий режим.

Поэтому, при приеме сигнала readyRead() запускай QTimer::singleShot() с таймаутом, при котором гарантированно
придет весь твой пакет. Коннекть этот singleShot() на слот чтения данных и читай.
Т.е. singleShot() сработает с некоторой задержкой от момента первого поступления данных.

Вот тебе обсуждение: http://www.prog.org.ru/index.php?topic=9537.msg133030#msg133030
см. от поста №618 и ниже.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: BRE от Декабря 05, 2011, 15:58
Я вообще не могу понять в чем собственно проблема. :)
Пришел сигнал readyRead, проверил сколько байт доступно (bytesAvailable), если меньше требуемых 6, то просто выходим из слота и ждем пока приедет остальная часть пакета (снова вызовется readyRead).
Это абсолютно нормальный порядок работы при получении удаленных данных.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 06, 2011, 13:30
Ваши б слова, да пораньше)) Ну в итоге я так и сделал


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 06, 2011, 14:30
А по какой причине может резаться старший бит в байте? вместо FF (255) приходит 127. В настройках 8 бит данных стоит, как должно быть


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 06, 2011, 14:40
Проверь Free-Serial Port Monitor  (http://www.serial-port-monitor.com/)- ом. Он покажет что конкретно отправляется и принимается.
И если касячит библиотека - будем исправлять.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 06, 2011, 14:49
проверяю терминалом.(Terminal). На него приходит все как надо. Сейчас попробую вашей прогой. Но со старой библиотекой такая же песня, сейчас посмотрел... Какие еще есть варианты?


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 06, 2011, 14:53
Паритет, стоп биты, скорость, контроль потока.

Больше никаких вариантов нет.  :)


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 06, 2011, 16:06
Все, нашлось...нормально все принималось, выводил неправильно походу)


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 09, 2011, 08:07
Еще вопрос: есть ли возможность вызывать слот при поступлении одного байта в КОМ? Чтобы отслеживать идентификатор начала пакета? На данный момент при вызове слота доступен не один байт, а несколько...Среди них искать идентификатор не очень удобно.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 09, 2011, 09:42
Оно и так срабатывает при появлении первого байта.
Просто пока идет обработка - набегают еще байты.
Для того чтобы узнать что за значения буфере, не читая его  - используй метод peek().
(это что-то типа read() - только при peek(), при чтении, данные из буфера не будут удаляться.)

Но это в случае если не использовал Unbuffered и, наверное только для версии 2.0,
хотя насчет версии могу ошибаться.


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 09, 2011, 14:03
то есть чтобы искать идентифик начала пакета мне делать:
Код:
ba = peak(myPortCom->bytesAvailable());


и потом в буфере ba искать этот индентификатор? по одному байту никак не анализируется?


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Декабря 09, 2011, 14:39
Цитировать
и потом в буфере ba искать этот индентификатор? по одному байту никак не анализируется?
зачем ba?
вот по одному:
Код
C++ (Qt)
char c;
int ret = port->peek(&c, 1);
 

Хотя, можно было бы для перемещения по буферу использовать seek(), но он не работает для sequential устройств.

Поэтому, ИМХО, только peek() с целым массивом или же
делай
Код
C++ (Qt)
char c;
int ret = port->read(&c, 1);
 
или
Код
C++ (Qt)
char c;
bool ret= port->getChar(&c);
 
по одному байту пока не найдешь начало своей метки (или что-там у тебя).


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Декабря 09, 2011, 14:49
Благодарю!


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Марта 27, 2012, 12:46
Добрый день! Возникла такая проблема: прога должна по нажатию кнопки отправлять номер устройства через ком-порт. Устройство по получении этой посылки отправляет ее обратно на ПК, вот в момент прихода этой посылки на ПК прога грузит проц почти на 100%. Если из функции убрать readAll, то все Ок, а если производить чтение пришедших байт, то такая байда...Закрытие проги не удаляет ее из процессов, приходится вручную удалять. Что может быть не так?

Код:
MyMainWindow::MyMainWindow(QWidget *parent) :
    QMainWindow(parent),       
    ui(new Ui::MyMainWindow)
{
        ui->setupUi(this);

        /* Serial Port */
        myPortCom = new SerialPort(this);             

        connect(ui->openPortButton, SIGNAL(clicked()), this,  SLOT(openPort()));
}

void MyMainWindow::openPort()
{
    ....выбор порта "comPort"....
   
    myPortCom->setPort(comPort);                   

    QIODevice::OpenMode mode = QIODevice::ReadWrite;// ReadOnly;

    if (!myPortCom->open(mode))                     // Открываем порт, если не получается открыть КОМ порт:
    {
        QMessageBox::critical(this, QString::fromLocal8Bit("Com port"),
        QString::fromLocal8Bit("Не могу открыть порт ")+ comPort, QMessageBox::Ok);
        ui->statusBar->showMessage(QString::fromLocal8Bit("Error opening COM port!"));
    }
    else                                                 // КОМ порт открыт:
    {
        myPortCom->setRate(9600);                       
        myPortCom->setDataBits(SerialPort::Data8);
        myPortCom->setParity(SerialPort::NoParity);
        myPortCom->setStopBits(SerialPort::OneStop);
        myPortCom->setFlowControl(SerialPort::NoFlowControl);       

        connect(ui->SendButton, SIGNAL(clicked()),   this, SLOT(dataSendToAM()));  // Кнопка "Отправить данные"
        connect(myPortCom,       SIGNAL(readyRead()), this, SLOT(serialDataReady()));
   }
}

void MyMainWindow::serialDataReady()
{
    char  read_c;

    uint8_t bytes_avail = myPortCom->bytesAvailable();      // смотрит сколько байт в буфере

    qDebug() << "Bytes_Available:" << bytes_avail;
    myPortCom->readAll(); //&read_c,1);
  .... остальное убрал для отладки....

}


void MyMainWindow::dataSendToAM()
{
    data_send = ui->Device_num_lineEdit->text();
    format = QString("$A,%1\r\n").arg(data_send,4,'0');
                                 // Шлем посылку с номером устройства 
    sendLetter(&format);
}

void MyMainWindow::sendLetter(QString *app)
{
    letter.clear();
    letter.append(*app);
qDebug() << "Letter:" << letter;
    myPortCom->write(letter); 
}


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 27, 2012, 14:20
Не знаю. Проблем быть не должно.

Попробуй тоже самое сделать (послать/принять) с
использованием /test/guiapp (или как там его).

Будет ли там такое же поведение?
И какая ОС?


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Марта 27, 2012, 16:08
Не знаю. Проблем быть не должно.

Попробуй тоже самое сделать (послать/принять) с
использованием /test/guiapp (или как там его).

Будет ли там такое же поведение?
И какая ОС?

Я уже запутался кстати, библиотека QSerialPort новее SerialDevice-а? ОС Win XP. Не могу найти пока этот пример. Что странно: прийти должно 10 байт, если функция readAll() присутствует, то приходят по частям, но не все 10 байт. А если функцию закомментить, то byteAvaliable показывает, что  все 10 байт пришли.(так же по частям)


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 27, 2012, 17:26
Цитировать
Я уже запутался кстати, библиотека QSerialPort новее SerialDevice-а?
Почитай тут http://qt-project.org/wiki/QtSerialPort_Russian

SerialDevice (ветка 2.0) самая новая и последняя версия (вообще), далее вместо неё будет QtSerialPort.

Цитировать
Не могу найти пока этот пример
http://gitorious.org/qserialdevice/qserialdevice/trees/2.0/tests/guiapp

Цитировать
Что странно: прийти должно 10 байт, если функция readAll() присутствует, то приходят по частям, но не все 10 байт. А если функцию закомментить, то byteAvaliable показывает, что  все 10 байт пришли.(так же по частям)
Это не странно. Так и должно работать (по частям) в не зависимости от того присутствует ли какие нить функции или нет. :)
Вот тут пример как целиком прочитать https://qt-project.org/forums/viewreply/71427/





Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Марта 28, 2012, 08:04
Нет, странно не то, что по частям, а то, что полностью не доходит пакет, если добавить функцию чтения readAll().

Попробовал прогой guiapp. Тупо шлю ей посылки в 10байт. Если слать с интервалом в 4 сек, то приложение Гуиапп грузит проц на 99 % периодически, если слать быстрее с интервалом в 20мс, то максимум на 78 %. Это нормально?


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 28, 2012, 09:46
Цитировать
Это нормально?
А я и сам не знаю. Надо тестировать и т.п.
В QSerialDevice 2.0 не очень хорошо реализована подсистема I/O,
планирую ее подрихтовать в QtSerialPort.
Но сейчас на это пока нет времени.

На крайняк используй то что есть, или QextSerialPort от Debao (имя китайца,
который тоже немного подрихтовал QextSerialPort ). Там, на гуглокоде найдешь. :)


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Марта 28, 2012, 10:18
Попробовал тестовую прогу "uartassistant"  на QextSerial... не более 10% грузит...


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 28, 2012, 16:48
Вроде разобрался в чем было дело.

Касяк появляется всегда просто после закрытия порта (например просто открыли, а потом закрыли).
После закрытия загрузка CPU растет до 33%.

Для временного решения необходимо в serialportengine_win.cpp в конструкторе
WinSerialPortEngine написать:
Код
C++ (Qt)
   , m_currentMask(0)
   , m_desiredMask(0)
 

Но при этом, не будут работать политики (да они в принципе и не нужны для обычного использования).

После этого у меня все работает с загрузкой CPU = 0% :)


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Марта 29, 2012, 08:44
У меня есть только файл "serialportengine_p_win.cpp" . Имелся ввиду он?
Вот конструктор, добавил. m_currentMask(0) там было до меня. А m_desiredMask(0), где объявлена? не находит...
Код:
WinSerialPortEngine::WinSerialPortEngine(SerialPortPrivate *parent)
    : m_descriptor(INVALID_HANDLE_VALUE)
    , m_flagErrorFromCommEvent(false)
    , m_currentMask(0)
    , m_desiredMask(0)
    , m_setMask(EV_ERR)
    #if defined (Q_OS_WINCE)
    , m_running(true)
    #endif
{
    Q_ASSERT(parent);
    m_parent = parent;

И еще, загрузка проца у меня происходит не только при закрытии...а и при приеме..


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 29, 2012, 09:53
Цитировать
Имелся ввиду он?
Да

Цитировать
А m_desiredMask(0), где объявлена?
Упс, я уже в QtSerialPort поменял названия переменных.

В QSerialDevice эта переменная называется m_setMask и нужно писать
Код
C++ (Qt)
m_setMask(0)

Цитировать
И еще, загрузка проца у меня происходит не только при закрытии...а и при приеме..
Ну, может быть все по той же причине. Попробуй исправь как я предлагаю, и посмотри что получится :)

UPD: Хотя я проверял на Qt5 для QtSerialPort .


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Марта 29, 2012, 10:01
Нашел какой момент грузит так сильно проц, у меня посылка не доходит целиком. То есть пришла часть, делаешь запрос второй посылки, приходит оставшаяся (от предыдущей) и новая... Попробовал сделать через QTimer. В таком случае все отлично, проц не грузится совсем, но подскажите, как убрать вот это:
Код:
void MyMainWindow::receiveLetter()
{
    uint8_t num = myPortCom->bytesAvailable();     
    qDebug() << "Bytes_Available:" << num;
    myPortCom->readAll();
}

void MyMainWindow::serialDataReady()
{       
        timer.singleShot(2000,this,SLOT(receiveLetter()));
}

В дебаге:
Код:
Bytes_Available: 10 
Bytes_Available: 0
Bytes_Available: 0
Bytes_Available: 0
Bytes_Available: 0
Bytes_Available: 0
Bytes_Available: 0
Bytes_Available: 0
Bytes_Available: 0
Bytes_Available: 0
те, чтобы заходил в :receiveLetter() один раз, а не 10. Пробовал флаг выставлять..не помогло что-то..

ПС. изменения в конструкторе похоже ни к чему не привели


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 29, 2012, 10:16
Цитировать
те, чтобы заходил в :receiveLetter() один раз, а не 10. Пробовал флаг выставлять..не помогло что-то..

Я тебе выше дал ссылку где показано как принимать данные.

Цитировать
ПС. изменения в конструкторе похоже ни к чему не привели
Ну неправда же :)


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: Piknik от Марта 29, 2012, 10:29
Пример нашел кажись)  Кстати , пробовал менять readAll() на read(num), в таком случае все данные одной посылки приходят только в ней...но как и прежде в ждущем режиме(т.е. когда ничего не шлется-не принимается) загрузка почти 99% и прога из процессов только вручную удаляется.  Странно, хотелось с этим разобраться...но похоже придется через таймер делать..


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 29, 2012, 10:39
У меня ничего не грузится на 90% без таймеров и пр...
везде 0%

Win7 x64, Qt5, QtSerialPort  :)


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: bekor от Марта 29, 2012, 10:57
У меня такая проблема с этой библиотекой
программа посылает запрос на устройство через RS232 а устройство
отвечает пакетом данный 15-20 байт.
Устройство это принимает все пакеты нормально но port1.read(port1.bytesAvailable());
иногда (точнее очень часто, скажем 35 пакетов из 100 не принимаются) не читает ответный пакет и данные часто теряются
(устройство 100 процентно отвечает проверено)

Код:
dn=ui->PortSelect->currentText();
        port1.setDeviceName(dn);
        if(!port1.open(AbstractSerial::ReadWrite | AbstractSerial::Unbuffered))
            ui->portmsglabel->setText("Error opening port !");
        else
        {
            port1.setBaudRate(AbstractSerial::BaudRate115200);
            port1.setDataBits(AbstractSerial::DataBits8);
            port1.setParity(AbstractSerial::ParityNone);
            port1.setStopBits(AbstractSerial::StopBits1);
            port1.setFlowControl(AbstractSerial::FlowControlOff);
            //port1.setTotalReadConstantTimeout(500);
            //port1.setCharIntervalTimeout(50000);
            ui->portmsglabel->setText("Port successfully opened");
        }

Код:
if(port1.waitForReadyRead(25))
          {
              buff_q=port1.read(port1.bytesAvailable());
              receivedBytesCount=buff_q.size();
          }
          else
{
    ....
}


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 29, 2012, 11:12
2 bekor,

1. используй версию 2.0. http://qt-apps.org/content/show.php/QSerialDevice?content=112039
2. не используй waitForReadyRead(), используй сигналы.
3. как принимать данные я дал ссылку выше!  >:(


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: bekor от Марта 29, 2012, 15:16
перешел на версию 2.0
в место waitForReadyRead() сделал так
Код:
connect(&port1,SIGNAL(readyRead()),this,SLOT(checkAvailable()));
ситуация не изменилась
порт просто напросто не принимает пакеты иногда,
вот сканировал комуникацию прогой Advanced Serial Port Monitor
желтые поля запрос от qt приложения а белые поля ответ от ведомого устройства.
там хорошо видно что после 7-мого запроса не принят ответный пакет и дак далее


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: kuzulis от Марта 29, 2012, 15:56
Вообще-то это твое у-во после 7-го запроса не ответило, а не библиотека не приняла ответ!

Если бы у-во ответило, то оно отправило бы по-любому пакет данных в приемный буфер
драйвера порта и по-любому Advanced Serial Port Monitor показал бы тебе эти данные.

Но раз данных от у-ва нет - то их и не было!


Название: Re: Трудность с библиотекой QSerialDevice
Отправлено: bekor от Марта 29, 2012, 18:30
Проблема решена :)
причина была в переходнике USB->RS232, китайский дешевый кабель косячил,
поменял на более качественный переходник и теперь ни один запрос не остается без ответа.
Библиотека версии 2.0 однозначно работает лучше чем прежние версии !

Спасибо !!!!!