我尝试了一周在android上运行usb主机。我试着用这两个解决方案:
我尝试了很多可能性,但是当我尝试写入时,应用程序会返回错误,或者它会锁定"当我试着阅读......
我的最后一次尝试:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
ProbeTable customTable = new ProbeTable();
customTable.addProduct(0x15A2, 0x300, CdcAcmSerialDriver.class); //0x15A2 0x300
UsbSerialProber prober = new UsbSerialProber(customTable);
List<UsbSerialDriver> availableDrivers = prober.findAllDrivers(manager);
if (availableDrivers.isEmpty()) {
Toast.makeText(MainActivity.this,"No device detected", Toast.LENGTH_SHORT).show();
return;
}
// Open a connection to the first available driver.
UsbSerialDriver driver = availableDrivers.get(0);
UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
if (connection == null) {
return;
}
// Read some data! Most have just one port (port 0).
UsbSerialPort port = driver.getPorts().get(0);
try {
port.open(connection);
port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);
final TextView textViewToChange = (TextView) findViewById(R.id.textView);
textViewToChange.setText("port open and parameters up");
byte buffer[] = new byte[32];
byte bufferwrite[] = new byte[1];
buffer[0] = 1;
int numBytesRead = port.write(bufferwrite, 1000);
final TextView textViewToChange2 = (TextView) findViewById(R.id.textView2);
textViewToChange2.setText("port read/write : "+numBytesRead);
} catch (IOException e) {
final TextView textViewToChange2 = (TextView) findViewById(R.id.textView2);
textViewToChange2.setText("error : "+e);
} finally {
try {
port.close();
final TextView textViewToChange4 = (TextView) findViewById(R.id.textView4);
textViewToChange4.setText("Port close");
} catch (IOException e) {
e.printStackTrace();
final TextView textViewToChange4 = (TextView) findViewById(R.id.textView4);
textViewToChange4.setText("Error close port : "+e);
}
}
此行始终返回错误:
int numBytesRead = port.write(bufferwrite, 1000);
我无法解决它。 在此先感谢您的帮助。