Виртуальные последовательные порты com0com и pyserial. Может ли это быть использовано для имитации отключения последовательного USB-устройства?
Я использую com0com и pyserial. Я открываю один порт, пишу в него с помощью pyserial и читаю с него в эмуляторе YAT. Это прекрасно работает. Можно ли использовать эту настройку для имитации отключения USB-устройства, эмулирующего последовательный порт? Я хочу воссоздать исключение UnauthorizedAccessException, которое редко отключается реальными устройствами в нашем прикладном программном обеспечении при отключении. После успешной записи в CNCA0 с использованием pyserial и чтения из CNCB0 с использованием YAT я попытался закрыть CNCB0 из pyserial и, конечно, он не разрешил мне, потому что порт уже получен YAT (доступ запрещен). Любые идеи о том, как имитировать отключение действия реального устройства?
1 ответ
Несанкционированный доступ прост в репликации. Откройте порт с помощью другого приложения, возможно, на другой вкладке YAT. Когда вы пытаетесь подключиться к другому приложению, вы должны получить ошибку несанкционированного доступа. Однако я не уверен, что это действительно тот вопрос, который вы задаете.
Если вы действительно хотите эмулировать отключение порта, вы должны понимать, что вы также зависите от последовательного драйвера. Различные драйверы будут вести себя по-разному при внезапном удалении устройства. Я хочу сказать, что вы можете заставить себя думать, что у вас есть пуленепробиваемый процесс обработки исключений, когда в действительности все ставки сняты.
Я немного поэкспериментировал с некоторыми командами изменения com0com, и ничто из того, что я сделал, не могло заставить порт "фактически отключиться". См. Команду setupc.exe> справка для получения дополнительной информации о том, что доступно.
Вам также может быть интересно поиграть с функцией эмулируемого шума. Откройте командную оболочку для com0com и выполните
change <YOUR_PORT_CNC> EmuNoise=0.0001
Значение представляет собой процент вероятности повреждения потока данных. Прикольные вещи.