|
copy_to_user(buffer, (char *)&adc_data, sizeof(adc_data))
这是最近看AD驱动例程中static ssize_t tq2440_adc_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)函数有这么一句,不过这句可以不要,因为后面已有
sscanf(buffer, "%d", &value);
printf("ADC Value: %d\n", value);
这么两句。
但我现在不想用后面这两句实现--将AD值拷贝到用户空间。
就直接用copy_to_user(buffer, (char *)&adc_data, sizeof(adc_data))来实现,这样不用转换了,其中adc_data为int型。。
如下
value = adc_data;
int r=copy_to_user(buffer,(char *)&adc_data,sizeof(adc_data));//
ADC_enable = 0;
up(&ADC_LOCK1);
return sizeof(adc_data);
应用程序相关改动如下:
char buffer[30];
int len ;
int value;
len = read(fd, buffer,4);
sscanf(buffer, "%d", &value);
printf("ADC Value: %d\n", value);
不过这样编译出来在板子上运行,
# adc_test
ADC Value: 0
ADC Value一直为0,无论怎调电位器。。。不知问题出在哪位里?整形--字符之间的转换应该没问题啊
|
|