|
开发板上
ls /dev下有adc
所以编写程序
13 int main(int argc, char *argv[])
14 {
15 int fd;
16 unsigned int voltage;
17 double AdcInfo;
18 char tmp[10];
19 int nbit;
20 int port;
21
22 memset(tmp, 0, sizeof(tmp));
23
24 if (argc != 3) {
25 printf("usage:\n%s <nbit | port>\n", argv[0]);
26 return -1;
27 }
28
29 nbit = strtoul(argv[1], NULL, 10);
30 port = strtoul(argv[2], NULL, 10);
31
32 fd = open("/dev/adc", O_RDWR);
33 if(fd<0)
34 printf("open failed\n");
35 ioctl(fd, BIT_SELECTED, &nbit);
36 ioctl(fd, PORT_SELECTED, &port);
37
38 while (1) {
39 read(fd, &voltage, sizeof(voltage));
40 AdcInfo = (float)voltage / (1 << nbit) * 3.3;
41 sprintf(tmp, "%.1f", AdcInfo);
42 AdcInfo = atof(tmp);
43 printf("vol = %f\n", AdcInfo);
44 usleep(300000);
45 }
46
47 close(fd);
48 return 0;
49 }
编译将可执行文件拷到开发板上,命令行输入 ./adc_test 12 1 调节开发板上滑动变阻器,电压值无变化,请问是我的ioctl用法有问题吗? |
|