私はしばらくの間これを理解しようとしていますが、私が見たすべての方法がうまくいかず、USBデバイスに文字列データを送信しようとしています。デバイスは必要なデータを返送するか、送信する必要があります約11バイトである「悪いコマンド」を返しますか?今のところ、戻ってきたのは1バイトと192バイトの2バイトだけです。「$fdumpG」と「/n」の合計9バイトを送信しようとしています。私が何をしても、それはうまくいきません。
これも私のコードです。バイトを文字列または文字に変更する方法はわかりませんが、データを取得し始めたら、返されるのは少なくとも11バイトであることがわかっているので変更します。
for(;;){//this is the main loop for transferring
String get = "$fDump G\n";
l("Sending: " + get);
byte[] by = get.getBytes();
//This is where it sends
l("out " + conn.bulkTransfer(epOUT, by, by.length, 500));
//This is where it is meant to receive
byte[] buffer = new byte[4096];
l("in " + conn.bulkTransfer(epIN, buffer, 4096,500));
StringBuilder byStr = new StringBuilder();
//This shows what's coming in
for(int i = 0; i < buffer.length; i++){
if(buffer[i] != 0){
byStr.append(buffer[i]);
l(byStr);}
}
//this shows the complete string
l(byStr);
if(mStop){
mStopped = true;
return;
}
l("sent "+counter);
counter++;
counter = (byte) (counter % 16);
}
なぜ動かないのか本当にわかりません。私はAndroidに多くのスキルを持っていますが、これについて頭を悩ませることはできません。
enINとenOUTはエンドポイントです。
epIN = usbIf.getEndpoint(i);
epOUT = usbIf.getEndpoint(i);
connはUSBデバイス接続でもあります。
UsbDevice dev = sDevice;
if (dev == null)
return;
UsbManager usbm = (UsbManager) getSystemService(USB_SERVICE);
UsbDeviceConnection conn = usbm.openDevice(dev);
l("Interface Count: "+dev.getInterfaceCount());
l("Using "+String.format("%04X:%04X", sDevice.getVendorId(), sDevice.getProductId()));
if(!conn.claimInterface(dev.getInterface(0), true))
return;