3545|5

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ADC_IOControl 和DeviceIOControl读取数据。 [复制链接]

问题描述:我需要通过DeviceIOControl函数从我的ADC驱动中读取AD转换结果,但是始终无法读取正确结果。我们知道DeviceIOControl调用ADC_IOControl函数。ADC_IOControl函数中可以得到正确的AD结果,应该是ADC_IOControl函数到DeviceIOControl函数之间的函数传递有问题:
我的ADC_IOControl:
[code]
BOOL ADC_IOControl (DWORD hOpenContext,
     DWORD dwCode,
     PBYTE pBufIn,
     DWORD dwLenIn,
     PBYTE pBufOut,
     DWORD dwLenOut,
     PDWORD pdwActuralOut)
{
        BOOL bRet=TRUE;
        BYTE adc_value[2];
        unsigned int adc;
        DWORD num;
        RETAILMSG(1,(TEXT("MYSTRINGGS:***********ADC_IOControl**********\n")));
        adc = ReadAdc(dwCode);//dwCode决定ADC转换通道
        adc_value[0]= char((adc&0x00ff));
        adc_value[1]=char(((adc&0x0300)>>8));       
        pBufOut =adc_value;
        num = 2;
        pdwActuralOut = #
        RETAILMSG(1,(TEXT("****ADC:Control Code = 0x%x\r\n"),dwCode));//输出ADC通道
        RETAILMSG(1,(TEXT("****ADC:Control result = 0x%x\r\n"),adc));
        RETAILMSG(1,(TEXT("****ADC:Control result = 0x%x\r\n"),adc_value[0]));
        RETAILMSG(1,(TEXT("****ADC:Control result = 0x%x\r\n"),adc_value[1]));
        return bRet;
}
DeviceIOControl函数调用:
         unsigned char ADCData[2];
         unsigned int size,adc_v;
        ULONG size2;
        size = 2;
        size2 =2;
        memset(ADCData,0,sizeof(ADCData));
        DeviceIoControl(hStr,ADC_Chunnel,NULL,0,&ADCData[0],size,&size2,NULL);
[code]
查看串口输出信息
RETAILMSG(1,(TEXT("****ADC:Control Code = 0x%x\r\n"),dwCode));//输出ADC通道
        RETAILMSG(1,(TEXT("****ADC:Control result = 0x%x\r\n"),adc));
        RETAILMSG(1,(TEXT("****ADC:Control result = 0x%x\r\n"),adc_value[0]));
        RETAILMSG(1,(TEXT("****ADC:Control result = 0x%x\r\n"),adc_value[1]));
这几个语句输出都正确,为什么DeviceIOControl函数不能读取结果呢?
这样调用有问题吗?

最新回复

我现在而是弄ADC的时候是同样的问题,您能不能告诉我到底是什么意思呀?为什么用“=”就不行呀?  详情 回复 发表于 2012-5-4 09:17
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
pBufOut =adc_value; 这样是不行的

用这个memcpy(pBufOut,&adc_value,sizeof(adc_value));
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
pBufOut =adc_value;

弓虽,你改地址形参啊!!!
pBufOut[0]=adc_value[0];
pBufOut[1]=adc_value[1];
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 veabol 的回复:
pBufOut =adc_value; 这样是不行的

用这个memcpy(pBufOut,&adc_value,sizeof(adc_value));

我猜是这样吧memcpy(pBufOut,adc_value,sizeof(adc_value));
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
呵呵,我知道什么意思了,嘎嘎。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

6
 
原帖由 greenpea101 于 2009-10-12 17:05 发表
呵呵,我知道什么意思了,嘎嘎。

我现在而是弄ADC的时候是同样的问题,您能不能告诉我到底是什么意思呀?为什么用“=”就不行呀?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表