我有一个需要通过USB连接到我的Android手机的设备。我只想读取该设备正在发送的一些数据,并将其显示在我的应用程序屏幕上。 我尝试了一些https://github.com/felHR85/UsbSerial和https://github.com/mik3y/usb-serial-for-android这样的API,在其中找到了以下代码
public class MainActivity extends AppCompatActivity {
private TextView data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data = findViewById(R.id.data);
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
if (availableDrivers.isEmpty()) {
return;
}
// Open a connection to the first available driver.
UsbSerialDriver driver = availableDrivers.get(0);
UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
if (connection == null) {
// You probably need to call UsbManager.requestPermission(driver.getDevice(), ..)
return;
}
// Read some data! Most have just one port (port 0).
UsbSerialPort port = driver.getPorts().get(0);
try {
port.open(connection);
port.setParameters(57600, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);
byte buffer[] = new byte[8];
int numBytesRead = port.read(buffer, 1000);
//Log.d(TAG, "Read " + numBytesRead + " bytes.");
data.setText(numBytesRead);
} catch (IOException e) {
// Deal with error.
} finally {
try {
port.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
它根本不读取任何东西,有没有更简单的方法来做到这一点?
我要读取的设备是血氧仪(Ut-100)。我只需要一些数据就可以显示在屏幕上,是否有一种简单的方法可以简单地返回一个字节数组并自己处理?感谢您的帮助
答案 0 :(得分:1)
您可以从Android Developer documentation USB HOST MODE开始了解如何通过USB进行通信。
您应该从USB host overview部分开始。
答案 1 :(得分:1)
通常缺少UsbManager.requestPermission(...)处理。
请查看最近增强的示例@ https://github.com/mik3y/usb-serial-for-android