闲来没事自己写了一个串口缓冲区玩,利用数组实现,运行在Linux环境底下,gcc编译和自测试通过。
#include<stdio.h>
#include<string.h>
/* 缓冲区大小 */
#define SERIAL_BUFFER_SIZE 250
/* 错误代码:取负值是为了与正常数值区别开来 */
#define CODE_SUCCESS -1
#define CODE_NO_OPERATE -2
#define CODE_INVALID_ARG -11
#define CODE_BUFFER_OVERFLOW -12
#define _8_BIT_SYSTEM 1
#define _16_BIT_SYSTEM 0
#define _32_BIT_SYSTEM 0
/* 数据类型:视编译器而定,GCC编译器的定义 */
#if _8_BIT_SYSTEM
typedef unsigned char u8;
typedef char s8;
typedef unsigned int u16;
typedef int s16;
#endif
#if _16_BIT_SYSTEM
typedef unsigned char u8;
typedef char s8;
typedef unsigned int u16;
typedef int s16;
typedef unsigned long u32;
typedef long s32;
#endif
/* 串口缓冲区结构体定义 */
typedef struct SerialBuffer_Str{
u8 WriteIndex;
u8 ReadIndex;
u8 Buffer[SERIAL_BUFFER_SIZE];
u8 ZeroFlag;
}SerialBuffer_Str;
/* 功能函数声明区 */
s16 SerialBuffer_Init(SerialBuffer_Str *p_SBstr);
s16 Seri