最近在帮助我们芯片组开发一个新的工具,最重要的是USB控制接口和python脚本解释器的嵌入,USB接口按照之前的做法是使用如下函数:
BOOL WINAPI DeviceIoControl(
_In_ HANDLE hDevice,
_In_ DWORD dwIoControlCode,
_In_opt_ LPVOID lpInBuffer,
_In_ DWORD nInBufferSize,
_Out_opt_ LPVOID lpOutBuffer,
_In_ DWORD nOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);
当时能够使用这个接口满足我们的需求是因为如下对应关系:
lpInBuffer[0] ->bmRequest
lpInBuffer[1] ->windex
lpInBuffer[2] ->。。。(记不清楚了 ^_^)
由于芯片版本的更新导致之前做法不能实现,从而考虑使用其它方法,当前考虑两种做法:
做法1:使用libusb生成dll,再通过python 的ctypes导入调用
做法2:直接使用python 自己的库pyUSB,通过pip安装后导入调用
这两种做法初期都很顺利,一旦涉及到open device或者usb.core.find都会报错,libusb会报权限错误,而pyUSB会报No Backend available错误,二者其实都是驱动问题,网上搜罗很多,一般敢写在网上的都是自己尝试过对的做法,但是不一定是最简单方便的做

本文介绍了在Windows平台上进行USB驱动接口开发时,使用libusb和pyUSB遇到的权限问题及解决方案。针对libusb出现的权限错误,以及pyUSB的"No Backend available"错误,提出了通过Zadig.exe工具来更换驱动的方法,以WinUSB驱动解决libusb问题,使用libusb-win32驱动解决pyUSB问题。Zadig.exe提供了方便的驱动选择和安装,简化了用户操作。


被折叠的 条评论
为什么被折叠?



