Отправить сигнал, когда последовательный USB-кабель отключен

Есть ли способ отправить сигнал или любой другой способ узнать, отключен ли последовательный USB-кабель, используя Qt?

5

Решение

Вы могли бы использовать error сигнал класса QSerialPort в дополнении QtSerialPort. Подробности смотрите в нашей документации.

http://qt-project.org/doc/qt-5.1/qtserialport/qserialport.html#error-prop

Вам нужно будет написать это в основном:

connect(mySerialPort, SIGNAL(error(QSerialPort::SerialPortError)), this,
SLOT(handleError(QSerialPort::SerialPortError)));

...

void MyClass::handleError(QSerialPort::SerialPortError error)
{
if (error == QSerialPort::ResourceError) {
QMessageBox::critical(this, tr("Critical Error"), serial->errorString());
closeSerialPort();
}
}

QtSerialPort может быть легко установлен с Qt 5.1 < как пакеты распространяются. Однако мы убедились, что QtSerialPort работает с предыдущими версиями, включая Qt 4.8.X. Здесь вы можете найти инструкции для Qt 4, чтобы установить это для вас:

  • git clone [email protected]: qt / qtserialport.git

  • cd qtserialport

  • QMAKE

  • делать

  • sudo сделать установку.

Затем вам понадобятся следующие строки в вашем файле проекта qmake, если вы используете qmake:

Qt 5: QT += serialport
Qt 4: COMFIG += serialport
6

Другие решения

С помощью QSerialPortInfo добьемся результата:

bool MyClass::checkPort()
{
QSerialPortInfo *portInfo = new QSerialPortInfo(ui->serialDevice->currentText());
// ui->serialDevice being a combobox of available serial ports

if (portInfo->isValid())
{
return true;
}
else
{
return false;
}
}
2

isValid() сейчас устарел. isBusy() можно использовать вместо этого, так как он вернется true когда вы открыли порт и false когда порт больше не существует (и он все еще открыт). Это также тот случай, когда availablePorts() продолжает возвращать несуществующий, но открытый порт, потому что вы сохраняете порт в списке, открывая его.

1
По вопросам рекламы [email protected]