无线遥控按一下按键,就会连续发5个相同的码出去,接收到第一个码后就做判断,不接收剩下的4个码,但如果第一个码受到干扰的,那么码就不对,而我又只接收了第一个码做判断,这样数据就不正确,所以我想把所有码接收下来,再去判断出其中相同值最多的那个值作为接收到的标准数据。
请教学习后,思路是这样的。
int main()
{
unsigned char c;
int receivedata[5]={1,2,3,3,4};
int element[5] = {-1,-1,-1,-1,-1};
int sum[5] = {0,0,0,0,0};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(receivedata==element[j]) //判断是否与存好的变量相等
{
sum[j]++; //相等则在sum[]相应的位置加1,表示有两个相同的变量
break;
}
else if(element[j]==-1)
{
element[j]=receivedata; //如果不相等,则为新变量,存入element中
sum[j]++;
break;
}
}
}
int max = sum[0];
for(int i=0;i<5;i++)
{
if(sum>max) //比较相同数量大小
max=sum;
}
for(int i=0;i<5;i++)
{
if(max==sum)
{
receive_dat[c]=element; //保存相同变量最后的变量,可以是多个最多
c++;
}
}
期待大神们给出最后的方法: |