Задать вопрос
  • Почему сигнал ReadyRead() вызывается только один раз?

    @Ballantrae Автор вопроса
    Спасибо за развёрнутый ответ. Я подключил сигнал QSerialPort::errorOccurred и никаких ошибок он мне не выдаёт за время работы программы. Один раз в начале показывает NoError. Так же перед открытием порта я написал проверку, что все параметры устанавливаются без ошибок, как вы и сказали.

    По прежнему сигнал QSerialPort::readyRead вызывается один раз и больше вызываться даже не думает. Но после открытия и закрытия программы мониторинга порта моя программа начинает работать как надо.

    ComPort::ComPort(const QString &com_name, QObject *parent) 
    : QObject(parent),
    read_buffer_{}
    {
        serial_ = new QSerialPort(com_name);
        connect(serial_, SIGNAL(readyRead()), SLOT(HandleReadyRead()));
        connect(serial_, &QSerialPort::errorOccurred, this, &ComPort::handleError);
     
        bool is_set_b_rate    = false;
        bool is_set_d_bits    = false;
        bool is_set_parity    = false;
        bool is_set_st_bits   = false;
        bool is_set_f_control = false;
    
        serial_->setPortName(com_name);
        is_set_b_rate = serial_->setBaudRate(QSerialPort::Baud115200);
        is_set_d_bits = serial_->setDataBits(QSerialPort::Data8);
        is_set_parity = serial_->setParity(QSerialPort::NoParity);
        is_set_st_bits = serial_->setStopBits(QSerialPort::OneStop);
        is_set_f_control = serial_->setFlowControl(QSerialPort::NoFlowControl);
    
        if (is_set_b_rate && is_set_d_bits && is_set_parity && is_set_st_bits && is_set_f_control)
        {
            com_state_.is_open = serial_->open(QIODevice::ReadWrite);
        }
        else
        {
            handleError(QSerialPort::UnsupportedOperationError);
        }
    }


    В консоль получаю один раз QSerialPort::SerialPortError(NoError) и всё.

    Ещё заметил странность, когда запускаю и выключаю монитор ком порта, после него параметры порта становятся такие, какие и должны.


    Состояние устройства COM6:
    ---------------------------
    Скорость: 115200
    Четность: None
    Биты данных: 8
    Стоповые биты: 1
    Таймаут: ON
    XON/XOFF: OFF
    Синхронизация CTS: OFF
    Синхронизация DSR: OFF
    Чувствительность DSR: OFF
    Цепь DTR: OFF
    Цепь RTS: OFF


    А вот после запуска и выключения моей программы (пока она работает порт занят и посмотреть данные нельзя), параметры остаются такие


    Скорость: 19200
    Четность: None
    Биты данных: 8
    Стоповые биты: 1
    Таймаут: OFF
    XON/XOFF: OFF
    Синхронизация CTS: OFF
    Синхронизация DSR: OFF
    Чувствительность DSR: OFF
    Цепь DTR: ON
    Цепь RTS: ON


    Но, как я уже сказал, я записываю в переменные результаты выполнения функций по установке параметров, как вы и говорили, и они все возвращают true.
    Написано
  • Как устранить ошибку: LFS...failed to push?

    @Ballantrae Автор вопроса
    Сергей Кузнецов, всё же дело не в этом. Для теста я удалил из проекта protobuf и теперь вся папка весит 18мб, но проблема не ушла.
    Написано
  • Как устранить ошибку: LFS...failed to push?

    @Ballantrae Автор вопроса
    Сергей Кузнецов, возможно проблема в том, что у меня есть большие файлы. У меня проект содержит подпроект с protobuf, который весит 800 мб.
    Написано
  • Как устранить ошибку: LFS...failed to push?

    @Ballantrae Автор вопроса
    VoidVolker, я пробовал, он мне пишет, что клонировать нечего.
    Написано