0

libusb を使用してペンドライブとやり取りしています。関数 int libusb_bulk_transfer(struct libusb_device_handle * dev_handle, unsigned char endpoint, unsigned char * data,int length,int *transfered,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 に答える