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);
}