新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2019-4-16
- 在线时间
- 8 小时
|
10金钱
我想用三个数组将USART3_TX_BUF的内容提取出来,提取的要求是:当数据数少于10个时全部保留,当大于10个时只保留前10个数据,数据发送的格式是:数据1-数据2-数据3.目前的问题是第一次提取的数据是符合要求的,但第二次的数据里面,会有第一次数据的残余,就是如果第一次发送的数据是8个,第二次是7个,那么第二次数据里面的第8位是上一次,这个问题应该是数组里面的问题,但是想了好多办法都没有解决,求各位大佬支援,
u32 ch[2];
u8 data1[10];
u8 data2[10];
u8 data3[10];
for(i=0,j=0;i<rlen;i++)
{
if((USART3_RX_BUF[i]=='-')&&(j<2))
{ch[j]=i;j++;}
}
if(ch[0]>9)
{ for(i=0,j=0;i<10,j<10;i++,j++)data1[j]=USART3_RX_BUF[i]; }
else
{for(i=0,j=0;i<ch[0],j<ch[0];i++,j++ )data1[j]=USART3_RX_BUF[i];}
if((ch[1]-ch[0])>10)
{for(i=ch[0]+1,j=0;i<ch[1],j<10;i++,j++)data2[j]=USART3_RX_BUF[i];}
else
{for(i=ch[0]+1,j=0;i<ch[1],j<(ch[1]-ch[0]-1);i++,j++)data2[j]=USART3_RX_BUF[i];}
if((rlen-ch[1])>10)
{for(i=ch[1]+1,j=0;i<rlen,j<10;i++,j++)data3[j]=USART3_RX_BUF[i];}
else
{for(i=ch[1]+1,j=0;i<rlen,j<rlen-ch[1]-1;i++,j++) data3[j]=USART3_RX_BUF[i];}
|
|