USB總線(xiàn)數據采集設備驅動(dòng)程序的設計
2 數據采集設備驅動(dòng)程序的開(kāi)發(fā)
Windows為USB設備提供了底層驅動(dòng)程序,與底層驅動(dòng)程序接口的是I/O請求包(IRP),Windows為應用程序提供的接口則是API函數。因此必須在它們之間建立一個(gè)驅動(dòng)程序,在底層驅動(dòng)與Win32應用程序之間傳遞消息,即設備驅動(dòng)程序。VC++、VB等軟件開(kāi)發(fā)的應用程序,在設備驅動(dòng)程序的支持下,都可以調用ReadFile()、WriteFile()、DeviceIoControl()等API函數向設備傳遞主機請求。Windows系統自動(dòng)將API調用轉化為IRP,設備驅動(dòng)程序把它向下層驅動(dòng)傳遞。直到完成其所指定的功能再沿驅動(dòng)程序棧返回主機。
設備驅動(dòng)程序的開(kāi)發(fā)
開(kāi)發(fā)設備驅動(dòng)程序一般采用以下幾種方法:1)直接使用Windows DDK,這種方法開(kāi)發(fā)難度較大,設計者必須對整個(gè)體系結構有很好的理解和把握。2)使用Driver Studio,該工具軟件可為設計者提供驅動(dòng)程序的整體框架,設計者只需要專(zhuān)心于功能代碼設計。3)使用win Driver,這種方法開(kāi)發(fā)驅動(dòng)程序很容易,但工作效率不是很高。這里采用第二種方法。
Driver Studio生成驅動(dòng)程序框架主要由兩個(gè)類(lèi)組成,一個(gè)是Driver類(lèi),另一個(gè)是Device類(lèi)Driver類(lèi)。
1)Driver類(lèi)用于初始化驅動(dòng)程序,它包括:入口函數Driver Entry和Add Device函數。當設備驅動(dòng)程序被加載時(shí),操作系統調用Driver Entry函數;當創(chuàng )建設備對象并把它連接到設備堆棧時(shí)調用Add Device函數。函數代碼如下:本文引用地址:http://dyxdggzs.com/article/195484.htm
2)Device類(lèi)是設備類(lèi)KDvice的派生類(lèi),這個(gè)類(lèi)包含了電源管理、設備讀寫(xiě)、設備控制等具有特定功能的例程。限于篇幅只介紹批量讀寫(xiě)端點(diǎn)函數。
INF文件的編寫(xiě)
INF文件是一個(gè)文本文件,它含有安裝一個(gè)設備驅動(dòng)程序需要的所有必需的安裝信息。包括要復制的文件列表,要創(chuàng )建的注冊表項等。用以告訴系統安裝哪一個(gè)驅動(dòng)程序,INF文件由若干區段組成,下面列出幾個(gè)區段及其功用:
1)Version區段是INF文件的開(kāi)始,其Class和ClassGuid指出了驅動(dòng)程序所屬的設備類(lèi)別及設備的GUID。GUID(Global Unique Identi-fier)用以標識不同的驅動(dòng)程序,它是全局且唯一的,系統就是通過(guò)GUID把應用程序的I/O請求傳達給相應的驅動(dòng)程序的。
2)Mantifacturer區段指明供應商及其對應Models字節的名稱(chēng)。
3)Install.AddReg/Install.Services指明注冊表添加內容及安裝驅動(dòng)的詳細信息。
該驅動(dòng)程序應用于數據采集模塊采集電站的電壓信號,部分采集數據如表1所示:
測量誤差主要來(lái)源于模塊的A/D,與驅動(dòng)無(wú)關(guān)系,數據傳輸結果表明:數據可以在該驅動(dòng)下及時(shí)正確的傳輸,模塊工作正常。
3 結束語(yǔ)
該設備驅動(dòng)程序用于電站檢測儀中USB數據采集模塊的效果良好,用這種方法提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期,使開(kāi)發(fā)者可將主要精力集中于實(shí)現設備功能上,為非軟件專(zhuān)業(yè)開(kāi)發(fā)者開(kāi)發(fā)基于USB總線(xiàn)的檢測儀驅動(dòng)提供了很好的借鑒。也為USB總線(xiàn)在測控領(lǐng)域的應用開(kāi)創(chuàng )了光明的前景。相信以計算機為數據處理核心,以USB總線(xiàn)為數據通信方法的測控儀器將成為測控業(yè)發(fā)展主流。
評論