Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Voronar от Март 31, 2013, 17:07



Название: QtSerialport. Проблема с приемом данных.
Отправлено: Voronar от Март 31, 2013, 17:07
Здравствуйте. Взял в помощь эту библиотеку, чтобы общаться с Arduino.
Моя проблема заключается в следующем:

Написал прогу по приему данных с Arduino, но прием и отображение данных происходит не сразу. Сначала приходится через Arduino IDE помониторить порт(послать какой-то сигнал готовности), а после этого уже приходят желанные данные по сигналу readyRead() в соответствующий слот моей программы. Я так понимаю, что в моей программе не хватает какого-то метода, который говорит порту: "Я готов принимать от тебя данные, давай!". Не подскажите как называется этот метод?

Спасибо за внимание.


Название: Re: QtSerialport. Проблема с приемом данных.
Отправлено: Bepec от Март 31, 2013, 17:11
open?


Название: Re: QtSerialport. Проблема с приемом данных.
Отправлено: Voronar от Март 31, 2013, 17:19
Если бы я не использовал Open, то данные бы не приходили. Использую Open вот с таким параметром QSerialPort::ReadWrite.


Название: Re: QtSerialport. Проблема с приемом данных.
Отправлено: Mikhail от Март 31, 2013, 19:35
Когда устанавливаешь параметры порта после открытия (Open) или до открытия?


Название: Re: QtSerialport. Проблема с приемом данных.
Отправлено: Voronar от Март 31, 2013, 21:49
До открытия. Вот код:
Код:
if(arduinoPort != "none")
    {
        if(!arduino->isOpen())
        {
            arduino->setPortName(arduinoPort);
            arduino->setBaudRate(QSerialPort::Baud115200);
            arduino->setStopBits(QSerialPort::OneStop);
            arduino->setParity(QSerialPort::NoParity);
            arduino->setDataBits(QSerialPort::Data8);

            if(arduino->open(QSerialPort::ReadWrite))
            {
                ui->console->insertPlainText("Подключение к " + arduino->portName() + " прошло успешно.\n");
                connect(arduino, SIGNAL(readyRead()), this, SLOT(recieveData()));
                ui->beginWriteButton->setEnabled(true);
                ui->stopWriteButton->setEnabled(true);
                ui->beginBDWriteButton->setEnabled(true);
                ui->stopBDWriteButton->setEnabled(true);
            }
            else
            {
                ui->console->insertPlainText("Ошибка при подключении к " + arduinoPort + "\n");
            }
        }
        else
        {
            ui->console->insertPlainText("Соединение занято устройтством " + arduino->portName() + ".\n");
        }
    }
    else
    {
        ui->console->insertPlainText("Не выбран COM порт.\n");
    }


Название: Re: QtSerialport. Проблема с приемом данных.
Отправлено: kuzulis от Апрель 01, 2013, 08:40
Ч.Т.Д.

Ты делаешь все неправильно. См. примеры, читай документацию.

ЗЫ: Ты хотя бы проверил возвращаемые значения у setXYZ()!


Название: Re: QtSerialport. Проблема с приемом данных.
Отправлено: Voronar от Апрель 01, 2013, 18:50
Спасибо. Тема закрыта. :)


Название: Re: QtSerialport. Проблема с приемом данных.
Отправлено: Kurles от Апрель 02, 2013, 07:39
До открытия. Вот код:
Самая распространенная ошибка ) Код не смотрел.