Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: sergek от Май 06, 2024, 17:26



Название: Причина возникновения ошибки QSerialPort::DeviceNotFoundError
Отправлено: sergek от Май 06, 2024, 17:26
Коллеги,
в продолжение темы http://www.prog.org.ru/index.php?topic=32296.msg247177#msg247177 (http://www.prog.org.ru/index.php?topic=32296.msg247177#msg247177) у меня дополнительный вопрос.

В RPi к последовательному порту подключен прибор, который периодически выдает в шину данные, программа его слушает.
Существует таймаут, по истечению которого принимается решение, что данные перестают поступать и выполняется переоткрытие порта.
Иногда (раз в 2-3 дня) при открытии появляться ошибка: сначала QSerialPort::DeviceNotFoundError (No such file or directory), а потом - QSerialPort::PermissionError (Permission error while locking the device).
Закрытие порта происходит, вроде, без проблем. Я всегда думал, что функция закрытия порта является блокирующей, т.е. завершается, когда порт закрыт, поэтому открываю порт сразу после ее завершения.

Понятно, что вторая ошибка - производная от первой. Но с чем может быть связана ошибка QSerialPort::DeviceNotFoundError?




Название: Re: Причина возникновения ошибки QSerialPort::DeviceNotFoundError
Отправлено: tux от Май 07, 2024, 21:23
С железом может быть связана. У меня, к примеру, такое сплошь и рядом (на винде) - деаайс прикидывается последовательным портом (Comm over USB) и при инициализации или переподключении - именно эта ошибка. Помогает только физическое отключение такого девайса. К слову, такое наблюдается только на win - на linux всё работает нормально.