미친해커

[Arduino] 아두이노 시리얼 포트로 데이터 받기 본문

Arduino

[Arduino] 아두이노 시리얼 포트로 데이터 받기

미친해커 2021. 12. 30. 01:06
반응형

저번 포스팅에서 아두이노가 시리얼 포트로 데이터를 전송했다면 이번엔 아두이노가 시리얼 포트로 데이터를 받는 함수들과 방법을 알아보자.

첫번째 Serial.read()
매개 변수
    - 없다.

반환 데이터
    - 시리얼 포트로 들어온 데이터의 첫 바이트를 반환한다. (데이터가 없으면 -1을 반환한다)

예제 코드
void setup()
{
    Serial.begin(115200);
}

void loop()
{
    int ch = Serial.read();
    
    if (ch != -1)
    {
        Serial.print(ch);
    }
}

코드 설명
    - 시리얼 포트에서 1 바이트를 읽고 그 데이터가 -1 아니면 시리얼 포트로 들어온 데이터를 전송한다.

두번째 Serial.readBytes(buffer, length)
매개 변수
    - buffer : 데이터를 저장할 버퍼의 포인터
    - length : 읽을 데이터의 길이

반환 데이터
    - 버퍼로 읽어들인 데이터의 길이

예제 코드
void setup()
{
    Serial.begin(115200);
}

void loop()
{
    char buffer[128] = { 0, };
    size_t length = Serial.readBytes(buffer, 128);
    
    if (length != 0)
    {
        Serial.println(length);
    }
}​

코드 설명
    - 시리얼 포트로부터 최대 128 바이트의 데이터를 읽어들이고 읽어드린 데이터의 길이를 시리얼 포트로 전송한다.
세번째 Serial.readBytesUntil(character, buffer, length)
매개 변수
    - character : 검색할 문자 (char 형이여야 함)
    - buffer : 데이터를 저장할 버퍼의 포인터
    - length : 읽을 데이터의 길이

반환 데이터
    - 버퍼로 읽어들인 데이터의 길이

예제 코드
void setup()
{
    Serial.begin(115200);
}

void loop()
{
    char buffer[128] = { 0, };
    size_t length = Serial.readBytesUntil(NULL, buffer, 128);
    
    if (length != 0)
    {
        Serial.println(length);
    }
}​

코드 설명
    - NULL 문자를 만날 때까지 최대 128 바이트 만큼 데이터를 읽어들인다. 그리고 읽어 들인 데이터의 길이를 시리얼 포트로 전송한다.
네번째 Serial.readString()
매개 변수
    - 없음

반환 데이터
    - 읽어들인 문자열에 대한 String 객체를 반환

예제 코드
void setup()
{
    Serial.begin(115200);
}

void loop()
{
    String string = Serial.readString();
    if (string.length() > 0)
        Serial.print(string);
}

 

코드 설명
    - 전송 받은 문자열이 있으면 해당 문자열을 읽어들이고 시리얼 포트로 전송한다.
다섯번째 Serial.readStringUntil(terminator)
매개 변수
    - terminator : 검색할 문자 (char 형이여야 함)

반환 데이터
    - 검색할 문자까지 읽어들인 문자열에 대한 String 객체를 반환

예제 코드
void setup()
{
    Serial.begin(115200);
}

void loop()
{
    String string = Serial.readStringUntil('A');
    if (string.length() > 0)
        Serial.print(string);
}


코드 설명
    - 'A' 라는 문자까지 문자열을 읽어들이고 해당 문자열을 시리얼 포트로 전송한다.

이렇게 수 많은 데이터를 읽는 함수가 존재하지만 사실상 사용하는 함수는 정해져 있는것 같다.

반응형
Comments