libusb使用详解六(USB设备的数据传输之同步模式)

USB设备的传输方式主要有四种:控制传输(Control Transfer)、中断传输(Interrupt Transfer)、批量传输(Bulk Transfer)和实时传输(Isochronous Transfer)。

具体内容可以参考https://blog.youkuaiyun.com/ljr1433223/article/details/130049625

libusb 1.0 API中的数据传输接口都是双向的,也就是说不分读写都是使用相同的函数。唯一的区别在于Request type或者端口地址。当它的最高位是0,就表示这次传输的是主机到设备的,主机角度来说就是写操作;反之是1的话就是设备到主机的,主机角度来说就是读操作。这是libusb 1.0 API传输函数的特点。

1. 控制传输(Control Transfer)

控制传输是USB必备的传输方式,它用于传输Control Setup包。它一般用于获取设备信息、状态,选择设备配置等的一系列命令式工作。关于Control Setup包的定义,可参考https://blog.youkuaiyun.com/wdsfup/article/details/49945205。

因为libusb API已经实现了一套获取USB设备信息的接口(具体可查看前面“ USB设备的基本操作”这一节),所以一般我们不用直接实现控制传输。只有在实现特定设备的特定控制命令时,比如获取PS3、XBOX主机的基本信息,才会需要自己实现控制传输。

libusb使用函数libusb_control_transfer来实现控制传输。函数定义如下:

int libusb_control_transfer (
    libusb_device_handle *dev_handle,
    uint8_t bmRequestType,
    uint8_t bRequest,
    uint16_t wValue,
    uint16_t wIndex,
    unsigned char *data,
    uint16_t wLength,
    unsigned int timeout)

其中:
dev_handle:为上一节“USB设备的打开与关闭”中介绍的获取的USB设备句柄,后续不再赘述
bmRequestType: 为Control Setup包的request type部分。libusb有预定义了枚举

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值