?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

String.toCharArray 에 대해 질문드립니다~! .

페이지 정보

작성자 심재현 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일16-03-15 09:48 조회1,547회 댓글1건

본문

String.toCharArray 에 대해 질문드립니다~! .

SerialRead로 읽어온것을 String에 담고 , 또 char[]에 담으려고 합니다~! .

아래와 같이 코드를 만들어봤는데 ,  사진과 같이 char[ ] 에 일정하게 9개의 데이터가

담기지 않네요 어디가 문제인지 알 수 있을까요~? ㅠㅠ

--------------------------------------------------------------------------

String OriginalData;

void setup() {  
  Serial.begin(115200);  

void loop() {  
    while( Serial.available() > 0 )  
    {  
        char recieved = Serial.read();  
        OriginalData += recieved;
        if (recieved == '\n')
        { 
            int str_len = OriginalData.length() + 1 ;
            char char_array[str_len];
            OriginalData.toCharArray( char_array , str_len-1);
            Serial.print("Arduino Received: ");
            Serial.println(OriginalData);
            Serial.print("Arduino Char Received: ");
            Serial.println(char_array);
            OriginalData = ""; // Clear recieved buffer
            str_len = 0;
        }
    } 
}

댓글목록

최고관리자님의 댓글

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

표시하고 싶으신게 문자열인가요? 아니면 1byte 데이터 값인가요?
만약 고정된 길이의 문자열을 다루는 거라면... String 클래스를 사용하는것 보다 char형 배열을 잡아두고 여기에 데이터를 1 byte 씩 읽어와서 저장하는 것이 더 좋을 것 같습니다. 이걸 문자열로 출력할 때는 배열 끝에 널 문자 (0x00)를 넣어주면 됩니다. 널 문자가 문자열의 끝으로 인식됩니다. (고로 문자열 중간에 0x00이 있으면 그 뒤는 출력이 안됨)
총 8byte 씩 읽어와서 출력하고 싶다면 배열을 9byte 잡고 기록하시는게 어떨까 싶습니다. String 클래스의 경우 사용은 편리한데 메모리 관리에 문제가 있을수도 있다고 하네요.