【发布时间】:2016-06-14 04:03:34
【问题描述】:
所以我是 Java 和 android 开发的新手。到目前为止,我一直在创建一个能够与 arduino 连接和交互的应用程序。我有一种方法可以从 arduino 中读取数据(以字节为单位),然后将数据打印为 UTF-8 中的字符串……但是,我只是希望这种方法能够读取和解释数据,并且拥有解释的数据可以从另一个方法调用,比如来自android的按钮。以下是读取数据的代码。
public class MainActivity extends AppCompatActivity {
public final String Action_USB_Permission = "com.example.myapplication.USB_PERMISSION";
UsbManager usbManager;
UsbDevice device;
UsbSerialDevice serial;
UsbDeviceConnection connection;
String data;
String adata;
TextView textView;
Button tempButton
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() {
@Override
public void onReceivedData(byte[] arg0) {
try {
data = new String(arg0, "UTF-8"); //edit (removed String in "String data =" )
} catch (UnsupportedEncodingException e) {
e.getStackTrace();
}
}
};
// Serial codes and commands
public void pushcmd(String command) { //command for serial
serial.write(command.getBytes());
}
public void gettemp() {
pushcmd("T\n");
serial.read(mCallback);
adata = data;
}
//This is for the app creation i think
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usbManager = (UsbManager) getSystemService(this.USB_SERVICE);
tempButton = (Button) findViewById(R.id.buttontemp);
}
public void onClickTemp(View view) { //This is the command to print data
gettemp();
tvAppend(textView, "\n Measured temperature \n" + adata);
}
private void tvAppend(TextView tv, CharSequence text) {
final TextView ftv = tv;
final CharSequence ftext = text;
runOnUiThread(new Runnable() {
@Override
public void run() {
ftv.append(ftext);
}
});
}
}
tvAppend 是一种在屏幕上的 textview 上打印字符串的方法。 我从https://github.com/felHR85/UsbSerial 获得了库,它说只需用
引用它serial.read(mcallback),我已经尝试过该命令,但我收到一个“测量温度空值”,然后打印测量值,这是来自 onReceivedData 方法。任何建议将不胜感激。或者,如果我不清楚,请告诉我,我会尝试进一步澄清一些事情。
编辑:我添加了我的 tvAppend 方法,定义了一个 textview 字段和一个按钮。我还指出我没有包含整个程序,我遵循了所有关于电路的实现http://www.allaboutcircuits.com/projects/communicate-with-your-arduino-through-android/再次感谢您的反馈
关于编辑的评论:当代码更改为上面的样子时。不显示数据,仅显示“测量温度”。
【问题讨论】:
-
尝试从
String data =中删除String -
另外,您似乎错过了制作minimal reproducible example 的完整部分。您缺少 textView 变量和 tvAppend 方法
-
@cricket_007 感谢您让我知道不够清楚。我也尝试从字符串数据中删除字符串 =
-
你从未初始化过文本视图?
-
是的,我已经初始化了 textview。我只是之前没有在帖子上显示它。
标签: java android methods arduino-uno