데이터 수신하기


수신 데이터 크기 읽기

available() 함수를 이용하여 시리얼 포트로 수신된 데이터 크기를 읽을 수 있습니다.

port.available()

이 함수는 호출 시점에 시리얼포트에서 읽을 수 있는 데이터의 크기(바이트 수)를 정수형태로 반환합니다.

수신 데이터 1바이트 확인

peek() 함수를 이용하여 시리얼 포트로 수신된 데이터 중 첫 번째 바이트를 확인할 수 있습니다.

port.peek()

이 함수는 버퍼의 데이터를 읽지는 않고 확인만 합니다. 따라서 이 함수를 호출해도 해당 데이터는 버퍼에 그대로 남아있습니다.

수신 데이터 1바이트 읽기

read() 함수를 이용하여 시리얼 포트로 수신된 데이터 중 첫 번째 바이트를 읽을 수 있습니다.

port.read()

예제

#include <PhpocExpansion.h>
#include <Phpoc.h>
#define BUFFER_SIZE 100  // read and write buffer size, reduce it if memory of Arduino is not enough

byte spcId = 1;

ExpansionSerial port(spcId);

byte rwbuf[BUFFER_SIZE];  // read and write buffer

void setup() {
    Serial.begin(9600);
    while(!Serial)
        ;

    Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
    Expansion.begin();
    port.begin("115200N81T");
}

void loop() {
    int txfree = port.availableForWrite();

    // gets the size of received data
    int rxlen = port.available(); 

    if(rxlen > 0) {

        // reads the next byte of incoming serial data
        int value = port.read(); 
        Serial.print("read : ");
        Serial.println(value);

    }
    delay(1);
}