我的代码通过 USB 主机从 Arduino 接收我的 Android 手机上的数据。数据(以字节的形式)被转换为字符串输出,我在方法 updateReceivedData(byte[]) 中编写代码,检查数据是否包含“警告”字,发送包含警告数据的消息
我尝试制作计数器以在连续警告接收数据的情况下延迟发送消息,然后如果没有警告消息我会重置计数器
我的问题是计数器每次都会重置并继续发送消息而不会延迟。
我认为解决方案是在字符串输出完成时进行延迟,然后检查它,但我不知道如何?
private void updateReceivedData(byte[] data) throws UnsupportedEncodingException {
String Output = new String(data);
if(Output.contains("Warning")){
if (warncounter==0){
Toast.makeText(getBaseContext(), "Warning message sent", Toast.LENGTH_SHORT).show();
SmsManager.getDefault().sendTextMessage(number, null, Output, null, null);
}
warncounter++;
if(warncounter==52) warncounter=0;
}
else warncounter=0;
mDumpTextView.append(Output);
mScrollView.smoothScrollTo(0, mDumpTextView.getBottom());
}
为了找到问题的方法,我尝试了这段代码
private void updateReceivedData(byte[] data) throws UnsupportedEncodingException {
String Output = new String(data);
if(Output.contains("Warning")){
SmsManager.getDefault().sendTextMessage(number, null, Output, null, null);
}
}
mDumpTextView.append(Output);
mScrollView.smoothScrollTo(0, mDumpTextView.getBottom());
}
在第二个代码中,我让所有接收到的数据都包含警告,结果是第一条消息包含整个输出字符串,但是在第一条之后,所有接收到的消息都被修剪(可能是由于数据在开始之前没有完全转换为字符串发送字符串)
注意:数据从 Arduino 每隔一秒发送一次,scrollview 文本中的数据显示正确 100%(这表明数据已转换为 String 但可能问题是需要时间)
所以请帮助或提出建议