- 论坛徽章:
- 0
|
之前好不容易把驱动弄好了
今天在写应用层的程序
发现一个问题 不知道怎么才能隔段时间 提取一下驱动的数据 也就是read下
我在程序里,加了一个定时器,可是好像不管用
- #include "adc0809_ioctl.h"
- char ret[2];
- int adc_fd ,sec;
- int AD_i=0,AD_v,AD_sum,speed_avg,speed_v;
- int v[100]={0};
- void sigroutine(int signo){
- int i,n=100;//300;
- switch (signo){
- case SIGALRM:
- read(adc_fd,ret,1);
- AD_v=ret[0];
- v[AD_i]=AD_v;
- AD_i=AD_i+1;
- printf("AD_v = %d \n", AD_v);
- if(AD_i==100){
- for(i=0;i<n;i++)
- { AD_sum+=v[i];
- }
- AD_sum/=n;
- AD_i=0;
- }
- printf("AD_sum = %d \n", AD_sum);
- signal(SIGALRM, sigroutine);
- break;
- }
-
- return;
- }
- int main()
- {
- struct itimerval value, ovalue;
- sec = 5;
-
- signal(SIGALRM, sigroutine);
- value.it_value.tv_sec = 0;
- value.it_value.tv_usec = 200000;//
- value.it_interval.tv_sec = 0;
- value.it_interval.tv_usec = 200000;
- setitimer(ITIMER_REAL, &value, &ovalue);
-
- adc_fd = open("/dev/adc0809",O_RDWR);
- if (adc_fd <= 0){
- printf("open adc0809 device error\n");
- return ;
- }
- speed_v=AD_v*20;
- speed_avg=AD_sum*20;
- printf("speed_v = %d km/h \n", speed_v);
- printf("speed_avg = %d km/h \n", speed_avg);
- }
复制代码
感觉像是没有跳到 定时器里去运行 奇怪哦 |
|