windows平台USB驱动接⼝开发之libusb以及pyUSB安装使⽤
要点
最近在帮助我们芯⽚组开发⼀个新的⼯具,最重要的是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,
windows开发平台_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或者find都会报错,libusb会报权限错误,⽽pyUSB会报No Backend available错误,⼆者其实都是驱动问题,⽹上搜罗很多,⼀般敢写在⽹上的都是⾃⼰尝试过对的做法,但是不⼀定是最简单⽅便的做法,让我感觉最烦的就是install-filter这
种恶⼼要命的⽅式,但是好在这家伙有命令⾏可以调⽤,也就是说你可以将他嵌⼊在程序中,不⽤⽤户⾃⼰单独操作,关于install-filter的使⽤这⾥不多做介绍,⽹上⼀搜⼀堆;
但是如果不需要考虑这种情况时候,最好的⽅式就是使⽤,直接可以选择操作USB所需要的所有类型的驱动,⽐如
libusb-1.0.lib/libusb.h -> WinUSB(v6.1.7600.16385)
pyUSB -> libusb-win32
这两个问题都能解决 ,关于具体⽤法,⽹上很容易搜到
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论