【发布时间】:2015-01-23 20:39:04
【问题描述】:
我一直在查看示例,但我仍然不清楚如何从我的 Android 应用程序中的 USB 端口实际读取数据。我希望它是事件/意图驱动的,但我对如何做到这一点非常迷茫。我有一个 BroadcastReceiver,但我不确定我需要寻找什么 Intent.action 才能捕获传入的数据。感谢任何见解!
编辑:澄清一下我的 Android 设备是作为 USB 主机运行的 Nexus 9,我希望与 Arduino Leonardo 进行通信。
Edit2:此时我有一个 Arduino 草图正在运行,每 2 秒通过串行发送一条消息。我有一个按钮,根据我的理解,它应该在按下时读取缓冲区,但实际上并没有做任何事情。
TextView displayMessages = (TextView)findViewById(R.id.textView);
try
{
byte[] msgBytes = new byte[1000];
connection.bulkTransfer(input, msgBytes, msgBytes.length, TIMEOUT);
String msgString = new String(msgBytes, "UTF-8");// msgBytes.toString();
displayMessages.setText(msgString);
}
catch (Exception e)
{
displayMessages.setText(e.getMessage());
}
结果只是 textView 是空白的。如果我不进行转换并将 byte[].toString() 放入其中,我会得到每次按下都会改变的十六进制值,但我不确定如何解释。
编辑 3:随着时间的流逝,还有更多信息,我已禁用 Arduino Leonardo,按照Arduino being recognized as keyboard by android 显示为 HID 键盘输入设备。我只是修改了 USBDesc.h 以删除“#define HID_ENABLED”。这并没有改变情况。与此同时,我还实现了 Physicaloid USB 库,但也证明是不成功的。我正在调试/转换 mik3y 的 USB-serial-for-android 库,但迄今为止无法对其进行测试。
【问题讨论】:
标签: java android serial-port arduino usb