В настоящее время я работаю с этой библиотекой C ++ — https://github.com/wjwwood/serialv- читать устройство COM-порта в Windows.
Приложение, кажется, работает хорошо, но я столкнулся со странным крайним случаем.
Когда я подключаю устройство, перед запуском приложения оно будет работать должным образом, но, когда устройство недоступно, я опрашиваю COM-порты на предмет новых подключений. Если новое соединение найдено, приложение, похоже, подхватывает устройство с горячим подключением, но поток каким-то образом поврежден.
Если, однако, я «serial :: close ()» устройство (см. Здесь — http://wjwwood.io/serial/doc/1.1.0/classserial_1_1_serial.html#afbe59407e718bc3d22ea4a67b304db6c) и снова откройте его, устройство работает как задумано.
Чтобы обойти это, я в настоящее время перехватываю 12 секунд потока COM-порта, и если он поврежден, я закрываю и снова открываю устройство с горячим подключением.
Это похоже на довольно неприятный взлом, но я также подозреваю, что я не единственный, кто столкнулся с этой проблемой.
Есть ли более эффективные решения там?
Или это просто момент RTFM?
Задача ещё не решена.