我一直在試圖弄清楚一段時間,但我看到的每一種方式都不起作用,我試圖將一些字符串數據發送到USB設備,設備應該發回我想要的數據還是發回了「壞命令」,大概是11個字節?現在我回來的只是2個字節,1和192.我試圖總共發送9個字節,「$ fdump G」和「/ n」。不管我做什麼都行不通。USB傳輸Android
這裏是我的代碼,我不知道如何將字節更改爲字符串或字符,但我會這樣做,一旦我開始獲取數據,因爲我知道什麼是返回至少是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;
[Android上的USB可能有重複。 ](http://stackoverflow.com/questions/10644228/usb-on-android) – Hasturkun
是的,抱歉沒有認爲它張貼。 – FabianCook