libusb在笔式驱动器中批量传输

时间:2012-11-21 18:49:41

标签: linux linux-device-driver libusb usb

我使用libusb与笔式驱动器进行交互。我们必须使用这个功能 int libusb_bulk_transfer(struct libusb_device_handle * dev_handle,unsigned char endpoint, unsigned char * data,int length,int * transferred,unsigned int timeout)
但在这里我们只指定终点 所以我的问题是,实际上是否可以将写入文件(文本或图像)读取到笔式驱动器。还是只是为了理解? 请帮忙!  代码::

r = libusb_bulk_transfer(dev_handle, (2 | LIBUSB_ENDPOINT_OUT), data, 4, &actual, 0);
 //my device's out endpoint was 2, found with trial- the device had 2 endpoints: 2 and 129
    if(r == 0 && actual == 4) //we wrote the 4 bytes successfully
        cout<<"Writing Successful!"<<endl;
    else
        cout<<"Write Error"<<endl;

1 个答案:

答案 0 :(得分:2)

Libusb的工作级别低于文件系统。您正在从设备读取或写入原始数据块,而不是处理文件级别的内容。如果您格式化了设备,保存了一些文件,然后使用您的程序从开头附近读取大量数据,您最终可能会看到文件名,然后是文件中的数据,还有很多其他的“乱码” “看东西。

如果你想以这种方式读写文件,你将不得不编写可以读取其他数据的代码来弄清楚你的文件在设备上的位置,如何创建新文件等等。

如果您只是玩游戏,可以从闪存驱动器上的任意点开始,将整个文件写入其中,然后再将其读回。但这对您的程序来说只是可以理解的,将您的闪存驱动器放在桌面PC中并不知道在哪里找到它,因为您错过了告诉它文件所在位置的文件系统部分。