libusb控制传输每次能写多少字节

libusb控制传输每次能写多少字节,第1张

libusb的控制传输,每次能写多少字节,应该是与Pid usb的通信设备的缓冲区大小有关,不能超过缓冲区。

与USB设备进行通信,使用usb_control_msg函数,向USB设备读取数据或写入数据。

下面是对函数及其参数的解释:

int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout)

向USB设备发送一个请求。

函数各参数的含义如下:

dev:USB设备句柄,该参数指定了向哪个USB设备发送请求;

requesttype:请求的类型,说明了是读请求,还是写请求。可以是标准请求、类请求或自定义请求;

request:表示具体请求的值;

value:与请求相关的参数;

index:与请求相关的参数;

bytes:表示在数据阶段时传输的数据;

size:表示在数据阶段时传输的数据量,以字节为单位;

timeout:请求的超时设置,最大值为5000,以毫秒为单位。

你把发过去的unsigned int拆成2个unsinged char,高位那个为0,发过去后然后接受到的两个合并为一个unsigned int。问一下,这是16位的么?

我没有弄过这个通讯.我猜测应是端unsigned char型发生了隐式转换,成为了unsinged int(或unsigned short int)型,因此高8位均为0了。接受到的时候,将比特流按8位来解析,于是产生了2个数据,还有一个为0.

你可以尝试传入一个负数(char型的),应该会产生结果很大差异,因为这时候隐式转换将符号位作为值就有问题了。高8位都是1。接受到的数据0就应该会变成255。

(上述都只是我的猜测)具体工作原理不知....

我说下我的解决思路:

unsigned char convertDate[2]

unsigned char mask = 0xFF

unsigned int transportDate // 待传输的数据

convertDate[0] = transportDate &mask // 低位字节

convertDate[1] = (transportDate >>8) &mask // 高位字节

将这个数组的两个字节发送过去,然后在那端进行合并。

接受那边每次接受两个数据进行一次转换

unsinged int receiveDate = 0

receiveDate = rConvertDate[1] &mask // 存储高位

receiveDate <<= 8 // 移动到高位

receiveDate = rConverDate[0] &mask// 存储低位

合并得到的receiveDate就是转换得到的。

然后,你在自己写发送端、接收端数据处理函数对收发数据进行上述的处理。这样转换后显示应该会正常吧。

最后说下:就是传递的参数说了是unsigned 的,别传入负值了,不然转换解析也会有问题。会转换成很大的unsigned int值。

LibUSB-Win32是一个用于Windows *** 作系统(Win98SE、WinME、Win2k和WinXP)上的通用USB设备驱动程序。该驱动程序允许使用者在不写任何一行核心驱动程序代码的情况下,可以访问Windows系统上的任意一个USB设备。该驱动程序具特点:

能够与任意一个已安装的USB设备进行通信

可被用作自己开发的USB设备的驱动程序

支持批量和中断传输

支持USB规范中定义的所有标准设备请求

支持USB设备制造商的自定义请求

通过使用七个函数,就可以与USB设备进行简单通信了,通信的主要流程可分为以下四步:

1) 调用usb_init函数,进行初始化。

2) 打开要进行通信的USB设备的句柄。首先依次调用usb_find_busses、usb_find_devices和usb_get_busses这三个函数,获得已找到的USB总线序列;然后通过链表遍历所有的USB设备,根据已知的要打开USB设备的ID(VID/PID),找到相应的USB设备;最后调用usb_open函数打开该USB设备(在这里假设总线上没有相同VID和PID的USB设备。如果总线上存在着相同VID和PID的设备,还需要进行其他条件判断,比如设备名称,以保证是打开的是期望的USB设备)。

3) 与USB设备进行通信。使用usb_control_msg函数,向USB设备读取数据或写入数据。

4) 关闭USB设备。完成所有 *** 作后,调用usb_close函数关闭已经打开的USB设备。

具体流程去编程论坛,有清楚流程!

good luck!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12056569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存