Bulk Transfer

文章内容和图表来源于http://www.usb.org

 

Bulk Transfer用于大量数据传输, 并且对时序没有严格要求的传输

传输过程分为三部分 CBW/Data(可选)/CSW, 如下图

 

bulk transfer

 

CBW: Command Block Wraper

CBW 格式: 31个字节,具体格式如下:

CBW里面会包装SCSI命令,具体内容见后面一篇文章

 

cbw

 

 

 

 CSW (command Status Wraper): 13个字节

 

CSW

Command Block Status Values (bCSWStatus):

00  Command Passed

01  Command Failed

02  Phase Error

 

 

Bulk 传输的例子,如下图

bulk example

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: libusb_bulk_transfer 是一个 C 库函数,用于在 USB 设备和主机之间进行大量数据传输。该函数通过 USB 的批量传输端点来传输数据,可以用于发送或接收数据。 该函数的语法如下: ``` int libusb_bulk_transfer(libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout); ``` 参数说明: - dev_handle:指向 USB 设备句柄的指针。 - endpoint:端点地址,通常为 0x01 或 0x81。 - data:指向要发送或接收的数据缓冲区的指针。 - length:要传输的数据长度。 - transferred:传输成功后,实际传输的数据长度将保存在此指针指向的变量中。 - timeout:超时时间,单位为毫秒。 函数返回值为 0 表示传输成功,否则表示传输失败并返回错误码。 ### 回答2: libusb_bulk_transfer是一个在USB设备和主机之间传输大量数据的函数。它是libusb库中的一个函数,可以用于向USB设备发送数据或从USB设备读取数据。 libusb_bulk_transfer函数的使用非常简单,但在使用前需要了解一些关键参数。其中,第一个参数是要进行数据传输的USB设备句柄,第二个参数是端点地址,此处分为输入和输出两个端点,可以指定要使用哪一个端点。第三个参数是要传输数据的缓冲区,第四个参数是要传输的数据长度,第五个参数是传输数据的超时时间,单位为毫秒。 使用libusb_bulk_transfer进行数据传输时,需要注意一些问题。首先,必须正确设置发送/接收的端点地址。其次,必须根据传输的方向来确定要使用的输入/输出端点。此外,还需要设置传输数据的长度和超时时间。 在实际使用过程中,也需要注意几点。首先,必须确保USB设备已经打开并且连接正常。其次,需要基于使用的操作系统和驱动程序来设置数据传输的相关参数。最后,为了保证数据传输的安全性和准确性,必须对数据传输进行适当的验证和检查。 总的来说,libusb_bulk_transfer函数是进行大量数据传输的关键函数,是访问USB设备并进行数据读写的基础。在使用此函数时,需要对其相关参数和使用进行深入的了解,以确保数据传输的正确性和时间效率。 ### 回答3: Libusb_bulk_transfer是libusb库中的一个函数,用于在USB设备和主机之间进行大容量数据的传输,也就是批量传输。 在使用该函数进行数据传输前,需要先使用libusb_open函数打开USB设备,并分配一个libusb_device_handle指针,并确保该指针指向的设备已经被正确地初始化和准备好。 Libusb_bulk_transfer函数可以实现两种类型的数据传输:输入传输和输出传输。输出传输通常是主机向USB设备发送数据,而输入传输则是USB设备向主机发送数据。 该函数的参数包括libusb_device_handle指针,端点地址,数据缓冲区,数据的长度,超时时间等。其中,端点地址用于指定USB设备的端点,即数据的收发位置。数据缓冲区用于存储要发送或接收的数据,而数据的长度则指定了要发送或接收的数据的字节数。超时时间则用于指定传输操作的超时时间,一般来说,如果传输操作在超时时间内未完成,则函数会返回错误信息。 Libusb_bulk_transfer函数的返回值为传输的字节数或错误代码。如果返回的是正数,则表示成功地传输了指定长度的数据。如果是负数,则表示传输操作失败,此时可以调用libusb_strerror函数来获取具体的错误信息。 总的来说,Libusb_bulk_transfer函数是实现USB传输的重要函数之一,它可以通过批量传输来实现快速、高效的数据传输,同时还具备可靠性高、兼容性好等优点。因此,在进行USB开发时,使用该函数进行数据传输非常方便、实用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值