【发布时间】:2018-05-25 05:23:17
【问题描述】:
我正在尝试使用 android 的 USB Host API 在 Arduino UNO 和我的 android 智能手机之间进行通信。到目前为止一切都很好。我每秒通过函数 Serial.print() 从我的 Arduino 发送一个测试字符串“Try data”。两个设备的波特率都设置为 9600。 Android 智能手机充当主机。
我使用的一些教程是:
http://android.serverbox.ch/?p=549
http://android-er.blogspot.in/2014/09/send-data-from-android-to-arduino-uno.html
连同 android usb 主机文档。 我已经尝试过 mik3y 的 physicaloid 和另一个库,但它们不起作用。在这两种情况下都无法打开设备。
我正在使用一个线程来接收来自 Arduino 的数据(下面的所有代码都在 onCreate() 中
val reader = object : Thread(){
override fun run() {
var buf = ByteArray(endpointIn.maxPacketSize)
connection.bulkTransfer(endpointIn, buf, buf.size, 0)
tv.text = String(buf)//tv is the id of a textview
}
}
reader.start()
问题是只接收到来自测试字符串的字母 T。相反,如果我将 buf 的声明移出线程类,则只读取 4 个字符。我无法理解为什么只读取有限的字符。如果我将 run 方法的最后 2 行代码置于无限循环中,则应用程序崩溃(无法找出原因)。 我知道线程似乎同时运行,但实际上它的主线程运行了一段时间,然后是阅读器,它们都不会同时运行。它的过渡非常快,因此它们看起来好像是同时运行的。这可能是某些信息丢失的原因吗?
请帮助编写阅读器线程的代码,或者有更好的方法吗?
提前致谢
【问题讨论】:
标签: android kotlin usb arduino-uno