У меня есть устройство, подключенное к компьютеру как «COM8». Я хотел бы знать, когда он отключен от компьютера, поэтому я использовал следующий код для обнаружения:
m_receiverCom->isWritable();
m_receiverCom->isOpen();
Тем не менее, они все еще вернули истину после того как я отключил устройство. Как я могу определить, подключено ли устройство или нет?
Вы запросили порт, а не устройство. Отправьте какое-либо сообщение с запросом на устройство, которое выдаст ответное сообщение.
Хотя это старая тема, не позволяйте людям застрять. Я только столкнулся с этой проблемой, и я успешно использовал qextserialport для обнаружения разъединения / соединения последовательного порта, используя:
QextSerialPort *serial_monitor;
serial_monitor = new QextSerialEnumerator();
serial_monitor->setUpNotifications();
connect(serial_monitor, SIGNAL(deviceRemoved(QextPortInfo)), this, SLOT(_handleUSBError(QextPortInfo)));