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