#define BUFFER_SIZE 96 //受信バッファ class ReceiveBufferClass { uint8_t dataBuffer[BUFFER_SIZE]; uint8_t head, tail; uint8_t byteData; bool exist; public: ReceiveBufferClass(); bool dataExist() { return exist; }; void setData(int8_t dat); uint8_t getData(); void clearBuffer(); }; ReceiveBufferClass::ReceiveBufferClass() { head = 0; tail = 0; exist = false; } void ReceiveBufferClass::setData(int8_t dat) { uint8_t p; p = tail; dataBuffer[p++] = dat; if(p == BUFFER_SIZE) p = 0; if(p != head) tail = p; exist = true; } uint8_t ReceiveBufferClass::getData() { if(!exist) return 0xFF; byteData = dataBuffer[head++]; if(head == BUFFER_SIZE) head = 0; if(head == tail) exist = false; return byteData; } void ReceiveBufferClass::clearBuffer() { head = 0; tail = 0; exist = false; }