新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > WinCE的USB Camera流接口驅動開發

        WinCE的USB Camera流接口驅動開發

        作者: 時間:2016-10-08 來源:網絡 收藏

        DWORD CAM_Init(LPCTSTR pContext,LPCVOIDIp VBusContext)

        其中,pContext是系統自動傳入的字符串內容,也是上面的鍵名,即[HKEY_LOCAL_MACHINEDriversActiveN];CAM_Init要完成的就是在此鍵下讀出設備上下文的指針,將其作為DWORD返回;IpvBusContext不用考慮。

        在USBDeviceAttach()中,最后要完成的工作是在此函數內調用USBD模塊的RegisterNotificationRoutine函數登記注冊DeviceNotify函數。這個DeviceNotify函數是必需的,在設備被移走后,系統調用這個函數完成相應的善后工作。

        BOOL WINAPI DeviceNotify(LPVOID lpvNotifyPa-rameter DWORD dwCode.LPDWORD dwInf01.LPDW0RDdwlnfo2.LPDWORD dwlnfo3.LPDWORD dwlnfo4)

        其中,IpvNotifyParameter是設備的上下文句柄,在RegisterNoticationRoutine中作為參數傳入;dwCode是系統調用此函數的原因,如設備被移走,dwcode的值就為USB_CLOSE_DEVICE,相應的,用戶進行卸載DLL工作;dwInfol,…,dwInfo4沒有使用。

        自此,系統在USBDeviceAttach中完成對所加USB外設的驅動加載。當有用戶調用CreateFile函數,系統會將用戶填入CreateFile()的參數值,直接傳到CAM_Open()。

        DWORD CAM_Open(DWORD hDeviceContext,DWORDAccessCode,DWORD ShareMode)

        其中,hDeviceContext是驅動上下文句柄,由系統自動填充;AccessCode是訪問模式,ShareMode是共享模式,均由CreateFile()傳遞過來;CAM_Open的工作是將hDe-viceContext以DWORD的形式返回,再作為CreateFile()的句柄值返回給用戶。當用戶調用CloseHandle()時,系統將直接調用CAM_Close(),用于關閉一個驅動程序。

        B00L CAM_Close(DWORD hOpenContext)

        其中,hOpenContext是設備驅動的引用事例句柄,由CAM_Open創建。本驅動中,所有對USB Camera的操作均通過IOControl()映射到CAM_IOControl來完成。下面是CAM_IOControl的部分源碼分析:

        由于本驅動是針對USBCamera的,因此CAM_Write、CAM_Read、CAM_PowerUp、CAM_PowerDown并沒有內容;但是只要用戶調用WriteFile,系統就將映射到CAM_Write。其他函數類似。通常,Camera對圖像的壓縮采用標準是MJPEG算法。在Zc030x上正是采用這一算法完成對數據壓縮的。只要在驅動上增加MJPEG的解碼算法,還原壓縮數據,就可以正確顯示圖像了。至此,整個USB Camera的驅動編寫工作完成。經過實驗驗證,已經實現了最高為25幀/s,大小為320×240的圖片的傳輸。

        結 語

        本文介紹了WinCE5.0下USB設備驅動框架,結合USB Camera的驅動開發實例說明了在USB驅動框架中驅動數據的流動方向,并已在中星微公司的301PLUS和303這兩個系列的攝像頭上得到成功運用和實踐。所采用的程序設計方法及思想,對其他類似嵌入式系統軟件的設計也有較高的參考價值。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 山东省| 永春县| 渝中区| 松原市| 宜章县| 松滋市| 东台市| 安义县| 大厂| 绿春县| 邵武市| 肇源县| 兴义市| 寿宁县| 定边县| 海城市| 莒南县| 平武县| 深水埗区| 曲阜市| 金昌市| 太原市| 赣榆县| 建平县| 沂水县| 广昌县| 吉首市| 桓台县| 芦溪县| 台江县| 田东县| 察隅县| 石渠县| 凤台县| 威远县| 九台市| 乳源| 曲阜市| 新乐市| 外汇| 青川县|