데이터 송신하기


송신버퍼 여유공간 확인

availableForWrite() 함수를 이용하여 송신버퍼의 여유공간을 확인할 수 있습니다.

port.availableForWrite()

이 함수는 송신버퍼의 여유공간(바이트)을 정수형태로 반환합니다.

데이터 송신 완료 대기

flush() 함수를 이용하여 송신버퍼의 데이터가 모두 전송될 때까지(송신 버퍼가 비워질 때까지) 대기할 수 있습니다.

port.flush()

데이터 송신하기

write() 함수를 이용하여 데이터를 송신할 수 있습니다.

port.write(byte)
port.write(wbuf, wlen)

예제

#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("115200N81N");
}

void loop() {

    int txfree = port.availableForWrite();
    int rxlen = port.available(); 

    if(rxlen > 0) {
        if(rxlen <= txfree) {
            int rwlen; // read and write length

            if(rxlen <= BUFFER_SIZE) 
                rwlen = rxlen;
            else
                rwlen = BUFFER_SIZE;

            // receive data
            rwlen = port.readBytes(rwbuf, rwlen);

            // send data
            port.write(rwbuf, rwlen);

            // print data to serial monitor of Arduino IDE
            Serial.write(rwbuf, rwlen);
        }
    }

    delay(1);
}