libusb开发(关于异步IO)
上一篇介绍了libusb的同步传输接口,但是很多情况下使用同步传输远远达不到我们的要求,那么这个时候就应该使用异步传输。接下来的内容是我学习libusb时遇到的问题以及异步IO如何使用。
//异步写
void QUniversalSerialBus::AsyncWrite(unsigned char sendBuffer[],size_t len)
{
int rc = 0;
//创建异步传输结构
libusb_transfer* transfer = libusb_alloc_transfer(0);
//填充异步传输结构
//transfer 传输结构
//dHand 设备句柄
//sendBuffer 要发送的数据
//len 数据长度
//callbackSend 回调函数,发送完成、失败、或者超时都会调用词回调
//this 用户数据,此处可以放任意数据,
//10 超时时间此处写的是10毫秒
libusb_fill_bulk_transfer(transfer,dHand,2,sendBuffer,static_cast(len),&callbackSend,this,10);
//提交传输结构
rc = libusb_submit_transfer(transfer);
//判断是否传输成功
if(rc < 0)
{
//释放传输结构
libusb_free_transfer(transfer);
}
}
void callbackSend(struct