智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1718|回复: 5
打印 上一主题 下一主题

[软件类] 【求助】我的AD采集经过中值和均值滤波之后,提示possible loss of data ,值明显不对

[复制链接]

6

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
威望
232
贡献
123
兑换币
122
注册时间
2012-11-21
在线时间
44 小时
毕业学校
长春工程学院
跳转到指定楼层
1#
发表于 2013-5-7 19:20:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我也用了强制转换。但是不好使啊,采集的值应该是2000多才对,但是出来的只有200多。这是程序,先看第二个函数。
uchar middle_data(uchar h1,uchar h2,uchar h3,uchar h4,uchar h5)  //中值选择
{ uchar t=0,s=0;
  uchar out_data,data_temp[5]={0},d_temp;
  data_temp[0]=h1; data_temp[1]=h2; data_temp[2]=h3; data_temp[3]=h4; data_temp[4]=h5;
for(t=0;t<5;t++)
{ for(s=0;s<4-t;s++)
  { if(data_temp[s]>data_temp[s+1])
    { d_temp=data_temp[s]; data_temp[s]=data_temp[s+1]; data_temp[s+1]=d_temp; }
}
}
out_data=data_temp[3];  
  return out_data; }
uint Mult_covert(uchar num)
{uchar result[5];
  uint ss;  
   uint i,j;
   switch(num)
    {
      case 0:
       {for(j=0;j<5;j++)
         {  for(i=0;i<5;i++)
        {while(!ATD0STAT0_SCF)  //等待当前队列转换完成   
        result[i]=(uchar)ATD0DR0;
              ATD0STAT0_SCF=1;//清除队列完成标志
       }
       pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
    }   
        ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
       }  break;
      case 1:
       { for(j=0;j<5;j++)
         {  for(i=0;i<5;i++)
        {while(!ATD0STAT0_SCF)  //等待当前队列转换完成   
         result[i]=(uchar)ATD0DR1;
            ATD0STAT0_SCF=1; //清除队列完成标志
       }
       pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
    }   
        ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
       }break;
      case 2:
       {for(j=0;j<5;j++)
         {  for(i=0;i<5;i++)
        {while(!ATD0STAT0_SCF)  //等待当前队列转换完成   
        result[i]=(uchar)ATD0DR2;
              ATD0STAT0_SCF=1;//清除队列完成标志
       }
       pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
    }   
        ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
       }break;
      
      default:  break;
    }  
    return ss;
}

6

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
威望
232
贡献
123
兑换币
122
注册时间
2012-11-21
在线时间
44 小时
毕业学校
长春工程学院
2#
 楼主| 发表于 2013-5-7 19:54:49 | 只看该作者
数组只能存255以下的数?
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
3#
发表于 2013-5-7 20:37:24 | 只看该作者
青春少年样样红 发表于 2013-5-7 19:54
数组只能存255以下的数?

你这个uchar出来的不只有200+才怪了,另外你说应该是2000+的话,你是用的12位精度吧?感觉没有必要 8位足够
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
威望
232
贡献
123
兑换币
122
注册时间
2012-11-21
在线时间
44 小时
毕业学校
长春工程学院
4#
 楼主| 发表于 2013-5-7 20:50:39 | 只看该作者
穆旦阿斗 发表于 2013-5-7 20:37
你这个uchar出来的不只有200+才怪了,另外你说应该是2000+的话,你是用的12位精度吧?感觉没有必要 8位足 ...

不用char用uint吗?还是什么?
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
威望
232
贡献
123
兑换币
122
注册时间
2012-11-21
在线时间
44 小时
毕业学校
长春工程学院
5#
 楼主| 发表于 2013-5-7 20:53:02 | 只看该作者
穆旦阿斗 发表于 2013-5-7 20:37
你这个uchar出来的不只有200+才怪了,另外你说应该是2000+的话,你是用的12位精度吧?感觉没有必要 8位足 ...

具体应该改哪里,谢谢了
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
6#
发表于 2013-5-8 18:08:48 | 只看该作者
青春少年样样红 发表于 2013-5-7 20:53
具体应该改哪里,谢谢了

额  额   额  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-25 05:22 , Processed in 0.064032 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表