我正在使用带有 USB hostshield (sparkfun) 的 Arduino,它连接到 Android 手机。当我将数据从智能手机发送到 arduino 时,就没有问题了。但是,当我从 arduino 向 Android 智能手机发送数据时,会收到数据(我收到一条消息,提示处理程序已被触发),但应用程序在几个周期后崩溃。我使用来自 Microbridge 的 de Adb 库。
从 arduino 发送的数据uint16_t
与数字 800 一样,这发生在以下循环中(也包括设置):
void setup()
{
Serial.begin(57600);
// Record time for sensor polling timer
lastTime = millis();
// Init the ADB subsystem.
ADB::init();
// Open an ADB stream to the phone's shell. Auto-reconnect. Use port number 4568
connection = ADB::addConnection("tcp:4568", true, adbEventHandler);
Serial.println("Ready!");
}
void loop()
{
//Check if sensor should be sampled.
if ((millis() - lastTime) > 1000)
{
int number = 800;
uint16_t data = number;
Serial.println("Before send");
connection->write(sizeof(data), (uint8_t*)&data);
Serial.println("After send");
// Update timer for sensor check
lastTime = millis();
}
// Poll the ADB subsystem.
ADB::poll();
}
数据在处理程序中的 Android 上接收如下(它使用来自 Microbridge 的 lightwight 服务器):
server.addListener(new AbstractServerListener() {
@Override
public void onReceive(com.example.communicationmodulebase.Client client, byte[] data){
Log.e(TAG, "In handler!");
if (data.length < 1){
return;
}
TextView textRecvStatus = (TextView) findViewById(R.id.RecvStatusText);
textRecvStatus.setText("In handler!");
}
});
消息:“在处理程序中!” 显示,但在收到应用程序字符数后。
有谁知道为什么应用程序崩溃?由于 Android 智能手机已连接到 arduino shield,我无法阅读目录日志。据我所知,没有办法显示目录数据(我可能是错的)。
欢迎任何建议和提示!