从驱动程序层应该有可能可以吧[/quote]会有新的问题,比如无法区分真正的 USB 设备插入,还是你的 USB 开关闭合。
当然,你可以设计新的规范,比如将 D+, D- 全部上拉。在主机最底层驱动识别到这个特殊情况时,调用特殊的设备类驱动和 API 接口,向应用层报告。
也就是说,你要完整地写各层的驱动程序,其中一些还要兼容原有驱动程序。更新这些驱动程序(有些底层的是系统文件,甚至是芯片硬编码)也不容易。
总之,太麻烦了。还不如挂 USB 接微处理器来的直接。而且可以在任意一台 PC 上实现。
明确告诉你,不行。
PC 机上的 USB 电源输出端是输出端口。而你有电平信号的变化的,连接的也恰恰是这个端口。
即便你把这个信号通过上拉电阻连接到其他信号线,如 D+ 或 D-,也仅仅是 USB 主机的底层可以识别到可能有全速或低速设备连接。但应用层无法得到这个信息。除非所连接的设备枚举成功。
如果你在 USB 风扇上并联一个支持 USB 功能的微处理器芯片,让它上电后枚举成一个 USB 设备,PC 的应用端就可以确认这个连接了。还要在你的设备上,将来自 PC USB 的电源断开。否则,一插入 PC 机 USB 端口,你的设备就从 PC 取电启动了。