我正在尝试用hc 05模块和3个超声波传感器制作android应用程序。它包括每个传感器发送关于从障碍物到应用程序的距离的信息,其被划分为3个文本视图,并且它们中的每一个显示关于还剩多少CM的信息。这里来了我的问题,我不知道我如何可以将模块发送到应用程序的数据分为3个独立的文本视图。
// arduino code
int LtriggerPin = 13;
int LechoPin = 12;
int RtriggerPin = 11;
int RechoPin = 10;
int CtriggerPin = 9;
int CechoPin = 8;
int info = 0;
int state = 0;
void setup() {
Serial1.begin(9600);
pinMode(LtriggerPin, OUTPUT);
pinMode(LechoPin, INPUT);
pinMode(RtriggerPin, OUTPUT);
pinMode(RechoPin, INPUT);
pinMode(CtriggerPin, OUTPUT);
pinMode(CechoPin, INPUT);
}
void loop(){
sensor();
}
void sensor() {
int durationL, distanceL;
int durationR, distanceR;
int durationC, distanceC;
digitalWrite(LtriggerPin, HIGH);
delay(10);
digitalWrite(LtriggerPin, LOW);
durationL = pulseIn(LechoPin, HIGH);
distanceL = (durationL/2) / 29.1;
digitalWrite(RtriggerPin, HIGH);
delay(10);
digitalWrite(RtriggerPin, LOW);
durationR = pulseIn(RechoPin, HIGH);
distanceR = (durationR/2) / 29.1;
digitalWrite(CtriggerPin, HIGH);
delay(10);
digitalWrite(CtriggerPin, LOW);
durationC = pulseIn(CechoPin, HIGH);
distanceC = (durationC/2) / 29.1;
Serial1.print("Left Sensor ");
Serial1.print((String) distanceL + " cm" );
delay(500);
Serial1.println(" ");
Serial1.print("Right Sensor ");
Serial1.print((String) distanceR + " cm" );
delay(500);
Serial1.println(" ");
Serial1.print("Center Sensor ");
Serial1.print((String) distanceC + " cm" );
delay(500);
Serial1.println(" ");
Serial1.println(" ");
Serial1.println(" ");
}
/ / // /安卓工作室代码
handler = new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(Message msg){
if(msg.what == MESSAGE_READ){
String readMessage = null;
readMessage = new String((byte[]) msg.obj, StandardCharsets.UTF_8);
TvL.setText(readMessage);
TvR.setText(readMessage);
TvC.setText(readMessage);
}
if(msg.what == CONNECTING_STATUS){
char[] sConnected;
if(msg.arg1 == 1)
Tv3.setText(getString(R.string.BTConnected) + msg.obj);
else
Tv3.setText(getString(R.string.BTconnFail));
}
}
};
1条答案
按热度按时间vhmi4jdf1#
BT传输的问题是接收字符的线程可以任意突发地发送消息。因此,发送方有必要以某种方式标记消息的结束。在这里,它可以是“\n”字符。因此,我建议改变从arduino发送数据的方式,例如,如下所示:
从BT接收数据的程序(不包括)必须修改,以便它将接收到的字符存储在缓冲区中,直到“\n”字符到达。只有当完整的行到达时,才应将其发送到主线程,主线程将通过搜索关键字来找出发送了什么信息(左传感器、右传感器、中心传感器),然后在相应的文本框中显示