6_Project/Zigner

통신 알고리즘 - 설계

Mi:sAng 2023. 11. 30. 00:03

*통신 방식을 정하였고 일부 코드를 짜두었다. 

while과 trigger를 이용하는 경우 while에 빠져 버리는 경우 어떻게 될지 모르겠다.

일단은 전체적으로 코드를 한번씩 짜두고 나중에 수정하는 방식으로 할 계획이다.

 

*아래 흐름대로 통신이 진행된다.

 

*코드 (bNano : Flight만 제작되어있다)

#include <SoftwareSerial.h>
SoftwareSerial HC12(2,3);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  HC12.begin(9600);
  Serial.println(" B HC-12 Module");
  pinMode(5, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

}

void rcvJoyData(struct * joyData){//joyData에 분리한 값을 넣는 것이다.  
  int trigger=1;
  int step=1;
  while(trigger){

    if(step ==1){
      if(HC12.available){
        String input = HC12.readString();
        Serial.println(input);     
      
        if(input == "RDYJOY1\r\n"){
          HC12.println("RDYJOY2");
          HC12.listen();
          step=2;
        }
      }
    }
    if(step ==2 ){
      int condition =-1;
      if(HC12.available){
        String input = HC12.readString();
        Serial.println(input);
        //condition = formatCheck(input);  //****데이터의 포맷이 맞는지 여부만 파악하는 함수 

        if(condition==1){// 받은 데이터가 옳은 형식이면       
          HC12.println("RCVDT");
          //*******data 분리해서 구조체에 넣는 함수 만들어 
        }
        else if(condition ==0){// 받은 데이터가 틀린 형식이면 
          HC12.println("WRGDT");
        }
        step=3;
        trigger =0;
      }
    }
  }
}

void sendSenserVal(){
  int trigger=1;

  while(trigger){
    if(HC12.available){
      String input = HC12.readString();
      Serial.println(input);     
    
      if(input == "RDYSND\r\n"){
        HC12.println("");// 센서 데이터값         
        trigger=0;
      }
    }
  }
}

 

'6_Project > Zigner' 카테고리의 다른 글

비행기 제작 재료 : 카드보드지  (0) 2023.12.10
통신 알고리즘 - HC12 테스트  (2) 2023.12.03
통신 알고리즘 - HC12 테스트0  (0) 2023.12.02
배터리 잔량표시 - 레퍼런스  (0) 2023.09.27
SharpDx 레퍼런스  (0) 2023.09.24