QT подключение и чтение serialPort

Рейтинг: 0Ответов: 0Опубликовано: 13.05.2023

Подключаюсь к порту , читаю данные всё норм, Но есть 2 момента не приятных:

  1. Если происходит отключение от порта отлавливаю SerialPortError получаю ошибку и все, при повторном коннекте ничего не происходит, данную проблему пока решил циклом while:
    void MySerialPort::openDefault()
    {
        serial.setBaudRate(QSerialPort::Baud115200);
        serial.setDataBits(QSerialPort::Data8);
        serial.setParity(QSerialPort::NoParity);
        serial.setStopBits(QSerialPort::OneStop);
        serial.setFlowControl(QSerialPort::NoFlowControl);
        serial.setPortName("COM3");
        serial.open (QIODevice::ReadOnly);
    }
    
    void MySerialPort::handleError(QSerialPort::SerialPortError error)
    {
        if ((serial.isOpen()) && (error == QSerialPort::DeviceNotFoundError ||
                                  error == QSerialPort::PermissionError ||
                                  error == QSerialPort::ResourceError))
        {
            emit disconnected();
            serial.close();
            while (!serial.isOpen())
            {
                openDefault();
            }
        }
    }
    
    но окно программы тогда зависает пока не подключиться к порту, как это исправить?
  2. Если программа уже запущена и я во время её работы подсоединяю USB, чтение данных не происходит, как начать читать данные, после подсоединения к USB ?

Ответы

Ответов пока нет.