1.创建buffer. 初始化buffer.
typedef struct Buffer {
unsigned char* data;
int bufSize;
int readOff;
int writeOff;
int dataLen;
}BUFFER;
int Buffer_find(struct Buffer* buf, unsigned char* cs, int len){
int i,j,e;
bool find;
e = buf->dataLen - len;
for(i = 0; i<=e; i++){
find = TRUE;
for(j=0; j<len; j++){
if(buf->data[i+j] != cs[j]){
find = FALSE;
break;
}
}
if(find)
return i;
}
return -1;
}
void Buffer_write(struct Buffer* buf, unsigned char c) {
buf->data[buf->writeOff] = c;
buf->writeOff++;
if(buf->writeOff >= buf->bufSize)
buf->writeOff = 0;
buf->dataLen++;
if(buf->dataLen > buf->bufSize){
buf->dataLen = buf->bufSize;
buf->readOff++;
if(buf->readOff >= buf->bufSize)
buf->readOff = 0;
}
}
void Buffer_clear(struct Buffer* buf){
int i;
Buffer_reset(buf);
for(i = 0; i<buf->bufSize; i++)
buf->data[i] = 0;
}
void Buffer_new(int size){
buf->data = cs;
buf->readOff = 0;
buf->writeOff = 0;
buf->dataLen = 0;
buf->bufSize = size;
}
Buffer* debugBuf;
debugBuf = Buffer_new(8); //串口调试
2.在中断中接收数据保存到buffer
Buffer_write(debugBuf,data); //接收串口信息
3.根据串口指令打印相应的调试信息
#define CMD_GPIO "#gpio"
if (Buffer_find(debugBuf, (uint8 *) CMD_GPIO, 5) >= 0) {
printInt(gpio_get_pin(GPIO_12));
Buffer_clear(debugBuf);
}