我的计划通过ftdi usb
到serial port
与各种电子设备进行对话。在硬件方面,可能会发生ftdi芯片因短暂停电而受到干扰。如果发生这种情况,软件应重置连接并继续与设备通信。只要断电足够长(>~0.5 s)
,这种方法就可以正常工作。如果它很短(如<~0.1 s
),则无法再重置连接几分钟。与端口的每个连接都失败,并显示端口仍在使用的消息。所以这是我到目前为止所尝试的:
运行ftdi API命令FT_ResetDevice
,FT_CyclePort
甚至FT_Rescan
和FT_Reload
都无济于事。
将设备从USB和电源上拔下并重新插入它无济于事。该端口仍然被阻止。
即使USB电缆断开连接,仍会在Windows设备管理器中看到幻像端口。所有连接到此端口的尝试都会失败并显示正在使用的端口消息,与我用于连接端口的程序无关。
如果断电时端口未打开,我也可以重现效果。
到目前为止,唯一有帮助的行动是重新启动Windows或等待几分钟。当然,这不是一个真正可行的选择。
我正在寻找的是一种以编程方式重置USB /串口的方法,如果它最终处于幻像状态。也许这可以通过Windows API而不是ftdi API直接处理。