<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 4266|回復: 2
    打印 上一主題 下一主題

    [提問] 請教一個飛凌TE6410 wince的ad轉換問題

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2011-4-21 09:48:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    各位前輩好,我的板子用的是TE6410的wince系統,想做AD方面的程序,現在有幾個問題想請教:
    1、原有的ad轉換是從ADCIN0口讀進去的,我想現在從ADCIN1口讀進去,不知在程序的哪里修改?
    2、原有的ad轉換是測電阻值的,現在我從ADCIN1外接一個口出去,測外部電流值,請問程序的哪些函數需要改呢?
    如下,是原有的ad轉換部分源程序
    DWORD WINAPI AdcThread (PVOID hdcMain)
    {        
            DWORD dwBytesRead;
            DWORD convalue;
            char tempvalue[3];
            CString str;
            CADC_AppDlg *pdlg =(CADC_AppDlg*)(AfxGetApp()->m_pMainWnd);
            hAdcEvent = CreateEvent(NULL, TRUE, FALSE, _T("TE6410_ADC_read"));
            while(1)
            {
                    WaitForSingleObject(hAdcEvent, INFINITE);
                    ReadFile(hAdc, &convalue, sizeof(DWORD), &dwBytesRead, NULL);
                   
                    str.Format(_T("%d"),convalue);
                    pdlg->SetDlgItemTextW(IDC_EDIT1,str);
                    //printf("convalue = %d !!!!\n", convalue);
                    Sleep(2);
            }
            return 0;
    }
    3.源程序中有一段常量設定的代碼,如下所示:
    // constants define
    #define IOCTL_ADC_START \
        CTL_CODE(FILE_DEVICE_UNKNOWN, 60, METHOD_BUFFERED, FILE_ANY_ACCESS) //
    #define IOCTL_ADC_STOP \
        CTL_CODE(FILE_DEVICE_UNKNOWN, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
    請問那里的60和61是代表什么的呢?我找寄存器沒有找到這兩個值啊
    沙發
    發表于 2011-4-21 13:01:27 | 只看該作者
    這個需要改驅動了。

    ADCIN0是接上滑動電阻的,當然是沒法用啦?聪略韴D就知道了。

    CTL_CODE:用于創建一個唯一的32位系統I/O控制代碼,這個控制代碼包括4部分組成:DeviceType(設備類型,高16位(16-31位)),Access(訪問限制,14-15位),Function(功能2-13位),Method(I/O訪問內存使用方式)。

    This macro creates a unique system I/O control code (IOCTL).

    驅動里面用60,61來產生這兩個宏IOCTL_ADC_START,IOCTL_ADC_STOP,驅動和測試程序約定好了IOCTL_ADC_START,IOCTL_ADC_STOP這兩個宏代表的整數,驅動里面有判斷傳入這兩個整數,然后分別執行不同的動作。當傳入IOCTL_ADC_START的時候,執行ADC START動作,當傳入IOCTL_ADC_STOP的時候,執行ADC STOP動作。因此,如果你把61換成63后,IOCTL_ADC_START變成了另一個整數,當傳入IOCTL_ADC_START,驅動程序不會執行ADC START動作,就得不到采集數據。
    板凳
    發表于 2011-4-30 07:39:07 | 只看該作者
    看看
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷