0

我正在使用 libusb 与笔式驱动器进行交互。我们必须使用函数 int libusb_bulk_transfer(struct libusb_device_handle * dev_handle, unsigned char endpoint, unsigned char * data,int length,int * transfer,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;
4

1 回答 1

3

Libusb 在比文件系统更低的层次上工作。您正在向/从设备读取或写入原始数据块,而不是处理文件级别的事情。如果您格式化设备,保存一些文件,然后使用您的程序从一开始就读取大量数据,您可能最终会看到文件名,然后是文件中的数据,以及许多其他“乱码“看东西。

如果您想以这种方式读取和写入文件,您将不得不编写可以读取其他数据的代码,以确定您的文件在设备上的位置、如何创建新文件等。

如果您只是在玩,您可以从闪存驱动器上的任意点开始,将整个文件写入其中,然后将其读回。但这只有您的程序才能理解,将您的闪存驱动器放在台式 PC 中不会知道在哪里可以找到它,因为您缺少告诉它您的文件在哪里的文件系统部分。

于 2012-11-22T00:09:44.297 回答