QtSerialPort使用何种Windows API?我的USB CDC设备仅兼容该库
QtSerialPort 底层API说明
QtSerialPort是跨平台的串口通信封装库,它本身没有实现独立的底层通信逻辑,而是对不同平台的原生系统API做了封装:
- 在Windows平台下,它直接调用标准的Win32串口API,比如
CreateFile()、ReadFile()、WriteFile()、SetCommState()等核心函数,以此和usbser.sys驱动交互——你的CDC设备被该驱动映射为虚拟串口,QtSerialPort通过Win32 API就能直接操作这个抽象后的串口设备。 - 在Linux、macOS等其他平台,它会对应调用各平台的原生串口接口(比如Linux的
termios系列函数)。
你用libusb失败的核心原因:libusb是直接操作USB硬件层的库,但你的设备已被usbser.sys接管并抽象为串口,此时libusb直接访问会与驱动产生冲突;而QtSerialPort是通过系统串口API访问驱动抽象后的设备,因此可以正常工作。
内容的提问来源于stack exchange,提问作者euraad
相关产品推荐
相关产品推荐

