#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <string.h>
main()
{
int fd;
char *adc_path = "/dev/adc"; //开发板上adc文件路径
char buff[100];
int len;
int val;
memset(buff, 0, sizeof(buff)); //初始化数组
fd = open(adc_path, O_RDWR|O_NOCTTY|O_NDELAY);
if(fd < 0)
{
printf("%s open failed!\n", adc_path);
exit(1);
}
else
{
len = read(fd,buff,100);
if(len == 0)
{
printf("return null\n");
}
else
{
int r = atoi(buff);
val = (int)r * 1800/4095;
printf("voltage: %d mv\n",val);
}
}
close(fd);
}
(一)void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
(二)read() 返回的是实际写入的字节,出错返回-1,返回值大于0 小于 读取的字节数是正常的。