HC-05将多个数据发送到android studio应用程序

bt1cpqcv  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(176)

我正在尝试用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));
            }
        }

    };
vhmi4jdf

vhmi4jdf1#

BT传输的问题是接收字符的线程可以任意突发地发送消息。因此,发送方有必要以某种方式标记消息的结束。在这里,它可以是“\n”字符。因此,我建议改变从arduino发送数据的方式,例如,如下所示:

Serial1.print("Left Sensor "); 
Serial1.println(distanceL); 
delay(500);

Serial1.print("Right Sensor "); 
Serial1.println(distanceR); 
delay(500);   

Serial1.print("Center Sensor "); 
Serial1.println(distanceC); 
delay(500);

从BT接收数据的程序(不包括)必须修改,以便它将接收到的字符存储在缓冲区中,直到“\n”字符到达。只有当完整的行到达时,才应将其发送到主线程,主线程将通过搜索关键字来找出发送了什么信息(左传感器右传感器中心传感器),然后在相应的文本框中显示

相关问题