Russian Qt Forum
Октябрь 16, 2024, 23:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QtSerialport. Проблема с приемом данных.  (Прочитано 5475 раз)
Voronar
Гость
« : Март 31, 2013, 17:07 »

Здравствуйте. Взял в помощь эту библиотеку, чтобы общаться с Arduino.
Моя проблема заключается в следующем:

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

Спасибо за внимание.
Записан
Bepec
Гость
« Ответ #1 : Март 31, 2013, 17:11 »

open?
Записан
Voronar
Гость
« Ответ #2 : Март 31, 2013, 17:19 »

Если бы я не использовал Open, то данные бы не приходили. Использую Open вот с таким параметром QSerialPort::ReadWrite.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #3 : Март 31, 2013, 19:35 »

Когда устанавливаешь параметры порта после открытия (Open) или до открытия?
Записан
Voronar
Гость
« Ответ #4 : Март 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");
    }
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Апрель 01, 2013, 08:40 »

Ч.Т.Д.

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

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

ArchLinux x86_64 / Win10 64 bit
Voronar
Гость
« Ответ #6 : Апрель 01, 2013, 18:50 »

Спасибо. Тема закрыта. Улыбающийся
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #7 : Апрель 02, 2013, 07:39 »

До открытия. Вот код:
Самая распространенная ошибка ) Код не смотрел.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.163 секунд. Запросов: 23.