-1

私はlibusbjavaライブラリからこのチュートリアルに従っています。ただし、実行しようとすると、次のエラーが発生します。

ch.ntb.usb.USBException: No USB endpoints found. Check the device configuration

これがプログラムの関連部分です

public static void testDevice(){



    //Vendor ID, Product ID
    Device dev = USB.getDevice((short) 0x0bda, (short) 0x2838); 


    try{
        //Data to write to device
        byte[] data = new byte[]{0,1,2,3}; 
        //Data to read from device
        byte[] readData = new byte[data.length];


        dev.open(1, 0, -1);

        dev.writeInterrupt(0x81, data, data.length, 2000, false);

        dev.readBulk(0x81, readData, readData.length, 2000, false);

        logData(readData); 

        dev.close(); 


    }
    catch(USBException e){
        e.printStackTrace(); 
    }
}

これがUSBViewからのデバイスからの情報です

Device Descriptor:
bcdUSB:             0x0200
bDeviceClass:         0x00
bDeviceSubClass:      0x00
bDeviceProtocol:      0x00
bMaxPacketSize0:      0x40 (64)
idVendor:           0x0BDA
idProduct:          0x2838
bcdDevice:          0x0100
iManufacturer:        0x01
iProduct:             0x02
iSerialNumber:        0x03
bNumConfigurations:   0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed:     Full
Device Address:       0x02
Open Pipes:              1

Endpoint Descriptor:
bEndpointAddress:     0x81
Transfer Type:        Bulk
wMaxPacketSize:     0x0200 (512)
bInterval:            0x00
4

1 に答える 1

1

デバイスには 1 つのbulk INタイプのエンドポイントがあります。これは、バルク モードでのみホストにデータを送信できます。しかし、あなたはそれに書き込もうとします:

dev.writeInterrupt(0x81, data, data.length, 2000, false);

これは機能しませんinterrupt OUT。そのためには型エンドポイントが必要です。また、エンドポイント アドレスも異なります。

于 2013-02-01T18:48:15.520 に答える