?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | rfid질문있습니다

페이지 정보

작성자 qfasfj 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일17-01-10 00:09 조회869회 댓글1건

본문

각각 IC카드의 번호로 모드마다 인식되어서 취침모드 평상시모드를 구현할려고 하는데 if elseif else문을 써서 카드 태그마다 인식해서 출력이 나오게하려는데 카드인식은커녕 취침모드, 평상시모드 이 2개의 출력문이 계속 반복되어서 나옵니다 어케 해야할까요ㅠㅠ

 

char tag1[9]= "4D7F3E5B";

char tag2[9]= "D28B3O5B";

void setup()

{

  Serial.begin(9600);

  Serial.println("Start!");

}

void loop()

{

  char tagString[9];

  int index =0;

  while(Serial.available()){

    int readByte = Serial.read();

    tagString[index] = readByte;

    index++;

    Serial.println(tagString);

  }

  checkTag(tagString);

   clearTag(tagString);

  delay(100);

}

 

void checkTag(char tag[]){

  if(strlen(tag)==0){

    return;

  }

  if(compareTag(tag, tag1)){

    Serial.println("sleep");

  }

  else if(compareTag(tag, tag2)){

     Serial.println("normal");

  }

  else{

     Serial.println("no match");

     Serial.println(tag);

  }

}

void clearTag(char one[]){

  for(int i=0;i<strlen(one);i++){

    one[i]=0;

  }

}

boolean compareTag(char one[], char two[]){

  Serial.println("in the compare Tag");

  if(strlen(one)==0){

    Serial.println("empty string");

    return false;

  }

  for(int i=0;i<strlen(two);i++){

    if(one[i]!=two[i]){

      Serial.println("one of the string mismatches");

      return false;

    }

  }

  Serial.println("All string matchse");

  return true;

}

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

char[] 에 담긴 문자열 비교를 위해서는 적절히 문자열 끝에 null 문자를 붙여주셔야 할 것 같습니다. 고정된 길이를 비교하는 것이라면 굳이 문자열을 사용하실 필요없이 char형 배열을 쓰시면 될듯 합니다.