如何实现流驱动中xxx_read函数传递多组数据

我现在编写了一个4路AD信号采集的驱动,驱动具体代码如下:
C/C++ code
DWORD ADC_Read(DWORD hOpenContext,LPVOID pBuffer,DWORD Count)
{
    int Channel[]={0,1,2,3};

         pADCreg->ADCCON &= 0x8000;//initiallize ADCCON Register
    pADCreg->ADCCON |= (1 << 14);//use prescale
    pADCreg->ADCCON |= (ADCPRS << 6);// set prescale
    pADCreg->ADCTSC &= ~(1<<2); //set ADCTSC normal ADC mode
        ////////读取4个通道AD转换的值//////////////////////////
    for(int i=0; i<4; i++)
    {
        pADCreg->ADCCON &= ~(7<<3);  //clear channel number
        pADCreg->ADCCON |= ( Channel[i]<<3 );  //Choose Channel
        pADCreg->ADCCON |= 1;//Enable Convertion
        while(pADCreg->ADCCON & 0x1);        //check if Enable_start is low
        while(!(0x8000&pADCreg->ADCCON));    // Check ECFLG       
    ///////////////////Read Buffer/////////////////////////       
        *((DWORD *)pBuffer+i) = ((pADCreg->ADCDAT0) &= 0x03ff);//将数据传给Read Buffer
        RETAILMSG(1,(TEXT("ADC_READ: Read Success! Channel_%x: '%x', ADCCON: '%x'\r\n"),i,
                       *((DWORD *)pBuffer+i),pADCreg->ADCCON));
    }   
    //////////////////Read Buffer Over/////////////////////
    return 4;
}


调试信息显示pBuffer到pBuffer+3中都是正确的转换数据,但是上层应用程序通过Readfile函数读取驱动程序中ADC_Read函数的传递值时,只能取到第一个值,pBuffer+1,pBuffer+2,pBuffer+3的值就取不到了,如何才能将后面三个值传递出去?应该都是能正常的的,请检查参数传递是否错误

+2,pbuffer+3传过来的地址;同时我在Readfile函数中想要取16个字节大小的内容,但实际只取了4个字节(actlen的反馈值,也就是一个pbuffer的大小)的内容,出错的原因可能就在这里。所以现在产生两个问题:
1、在数据处理过程,如何取到pbuffer的真实偏移地址?
2、如何将底层驱动中所有pbuffer的值传送上来(也就是actlen的值为16)?

uint m_DispAIN= 0;?
这里要用一个数组才行uint m_DispAIN[4];
后边readfile的时候用这个数组。 在上层调用驱动的ReadFile接口的时候,你要在上层定义一个数组来存放ReadFile读出来的数据才行

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有