osamhack2021 / IoT_GateKeyPer_Keepers

자물쇠 데이터 로그 확보가 가능한, 스마트 키-자물쇠 시스템
Other
4 stars 0 forks source link

문자열 비교 에러 #13

Closed TabloNi closed 2 years ago

TabloNi commented 2 years ago

문제점 : 문자열이 비교되지 않는 현상

가정 :

  1. if(Serial.available())라는 조건문은 통과함

  2. inString 에 “ABCD”라는 문자열이 잘 들어왔다고 가정함

해결 방안 :

  1. 21, 22번째 줄 tocharArray -> toCharArray

  2. inString.toCharArray(ch1,inString.length())를 진행할 경우 입력 버퍼에 의해서 3칸만 들어가서 “ABC”가 들어가게됨. 따라서 inString.toCharArray(ch1,inString.length()+1)를 통해 원 문자열이 잘 들어가도록 해주기.

사용 코드 :


void setup(){

    Serial.begin(9600);

  String inString = "ABCE";
        String A = "ABCE";
        Serial.println(inString. length());
        Serial.println(inString);
        Serial.println(A.length());
        Serial.println(A);
        Serial.println("  ");
        char ch1[10] = {0,};
        char ch2[10] = {0,};
        inString.toCharArray(ch1,inString.length()+1);
        A.toCharArray(ch2,A.length()+1);

        Serial.println(ch1);
        Serial.println(ch2);

        Serial.println(A.equals(inString));
        if(A.equals(inString)){
            Serial.println("Test success");
        } 
}

void loop(){

} 

해당 코드는 문자열 통신을 통해 ABCD를 잘 받아와서 진행한 코드임 해당 코드를 이용해도 결과가 나오지 않을 경우 Serial.readStringUntil('\n'); 에서 받아오는 문자열 검사 필요

BoksungOh commented 2 years ago

확인했습니다! 아두이노 상에서 테스트하진 않았지만 '\n' 과 관련한 이슈가 있음을 확인했고 상기 방식 또는 Slave 쪽에서 받을때, ch를 덜받는쪽으로 해결하고자 합니다.

TabloNi commented 2 years ago

넵 알겠습니다! 해당 이슈는 해결로 판단하고 닫도록 하겠습니다!