环形BUF

typedef struct
{
u8 *pTxBuf;
u8 *pRxBuf;
u16 read;
u16 write;
}uartBuff_t;

uartBuff_t objUartBuf;

void UartBufInit(void)
{
objUartBuf.read=0;
objUartBuf.write=0;
objUartBuf.pTxBuf=sim_uart_tx_buf;
objUartBuf.pRxBuf=sim_uart_rx_buf;
}
/***********************************
从接受buffer中获取一个字符
prb记录读取buffer的位置并返回
**********************************/
int YGetc(void)
{
if(objUartBuf.read>=SIM_UART_RX_BUF_SIZE)
{
objUartBuf.read=0;
}
if(objUartBuf.read==objUartBuf.write)
{
return -1;
}
return sim_uart_rx_buf[objUartBuf.read++];

}
/***********************************
从接受buffer中获取一行字符串

char buf[10]
YGets_s(buf,10-1);

**********************************/
char *YGets_s(char *dest,u16 len)
{
if(objUartBuf.read==objUartBuf.write)
{
return NULL;// empty
}
char *p=dest;

	int  temp=0;
	do
	{
		temp=YGetc();
		if(temp==-1)
		{
			return NULL;
		}
		if(temp=='\n')
			break;
		*p++=temp;
	}while(len--);
	
	return p;

}

char *YGetsByLength(char *dest,u16 len)
{
if(objUartBuf.read==objUartBuf.write)
{
return NULL;// empty
}
char *p=dest;

	int  temp=0;
	do
	{
		temp=YGetc();
		if(temp==-1)
		{
			return NULL;
		}
		
		*p++=temp;
	}while(len--);
	
	return p;

}

int YStrncmp(char *s1,char *s2)
{
u16 len=0;
while(*s2)
{
if(*s2!=*s1)
{
return -1;
}
if(len>=SIM_UART_RX_BUF_SIZE)//溢出了!
{
return -1;
}
s2++;s1++;len++;
}
return 0;
}

int Ystrstr(char *s1,char *s2)
{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值