gpt4 book ai didi

java - 如何从两个 Activity 之间的多个回显返回数据?

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:36 25 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,它通过 UART 与传感器设备进行通信。设备根据格式如下的 4 字符 ASCII 命令向手机发送数据:

":"[char1][char2][Carriage_return](例如“:AB\r”)

我有两个 Activity ,CalculationActivity 和 UartActivity。

CalculationActivity 需要从 UartActivity 获取三个不同的传感器读数,并用它们执行某些计算。例如,

计算 Activity :

protected void onCreate(Bundle savedInstanceState){
// blah, blah, blah...
Intent i = new Intent(this, UartActivity.class);
startActivityForResult(i, DATA_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == DATA_REQUEST) {
if (resultCode == RESULT_OK) {
string sensor_data_distance = data.getStringExtra("distance");
//need these also:
//string sensor_data_heading = data.getStringExtra("heading");
//string sensor_data_elevation = data.getStringExtra("elevation");
//...
//parse the strings and perform calculation
//...
}
}
}
}

UartActivity 将命令发送到设备。收到它们后,设备会回显所请求的数据,并且我的 RX 回显处理程序会捕获它。例如,

Uart Activity :

protected void onCreate(Bundle savedInstanceState){
// setup and initialize UART
String get_distance_command = ":DI\r"; //command for distance
String get_heading_command = ":HE\r"; //command for heading
String get_elevation_command = ":EL\r"; //command for elevation

uartSendData(get_distance_command); //send command to TX handler

//want to be able to send these other two:
//uartSendData(get_heading_command);
//uartSendData(get_elevation_command);
}

@Override
public synchronized void onDataAvailable(){ //RX echo handler
//blah, blah, blah...
//get received bytes
final String result_string = bytesToText(bytes);
Intent i = new Intent();
i.putExtra("distance", result_string);
//want to be able to do this for the other two:
//i.putExtra("heading", result_string);
//i.putExtra("elevation", result_string);
setResult(UartActivity.RESULT_OK);
finish();
}

希望您可以从注释掉的代码行推断出我在这里想要完成的任务。请注意,我只能成功获得一个读数(在本例中为距离),但不能获得更多读数(在本例中为航向和海拔)。

我考虑过用每个命令启动 UartActivity 三次,但我不太喜欢这个解决方案。我宁愿只运行该 Activity 一次,发送三个命令,捕获所有回显响应,然后将它们传递回 CalculationActivity。这可能吗?

最佳答案

setResult 中缺少 returnIntent。

尝试更换

setResult(UartActivity.RESULT_OK);

setResult(UartActivity.RESULT_OK, i);

关于java - 如何从两个 Activity 之间的多个回显返回数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43328352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com