- 論壇徽章:
- 0
|
之前好不容易把驅(qū)動(dòng)弄好了
今天在寫(xiě)應(yīng)用層的程序
發(fā)現(xiàn)一個(gè)問(wèn)題 不知道怎么才能隔段時(shí)間 提取一下驅(qū)動(dòng)的數(shù)據(jù) 也就是read下
我在程序里,加了一個(gè)定時(shí)器,可是好像不管用
- #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);
- }
復(fù)制代碼
感覺(jué)像是沒(méi)有跳到 定時(shí)器里去運(yùn)行 奇怪哦 |
|