新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > USB總線數(shù)據(jù)采集設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)

USB總線數(shù)據(jù)采集設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)

作者: 時(shí)間:2010-03-24 來(lái)源:網(wǎng)絡(luò) 收藏

2 程序的開(kāi)發(fā)
Windows為設(shè)備提供了底層驅(qū)動(dòng)程序,與底層驅(qū)動(dòng)程序接口的是I/O請(qǐng)求包(IRP),Windows為應(yīng)用程序提供的接口則是API函數(shù)。因此必須在它們之間建立一個(gè)驅(qū)動(dòng)程序,在底層驅(qū)動(dòng)與Win32應(yīng)用程序之間傳遞消息,即程序。VC++、VB等軟件開(kāi)發(fā)的應(yīng)用程序,在程序的支持下,都可以調(diào)用ReadFile()、WriteFile()、DeviceIoControl()等API函數(shù)向設(shè)備傳遞主機(jī)請(qǐng)求。Windows系統(tǒng)自動(dòng)將API調(diào)用轉(zhuǎn)化為IRP,設(shè)備驅(qū)動(dòng)程序把它向下層驅(qū)動(dòng)傳遞。直到完成其所指定的功能再沿驅(qū)動(dòng)程序棧返回主機(jī)。
設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)
開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序一般采用以下幾種方法:1)直接使用Windows DDK,這種方法開(kāi)發(fā)難度較大,設(shè)計(jì)者必須對(duì)整個(gè)體系結(jié)構(gòu)有很好的理解和把握。2)使用Driver Studio,該工具軟件可為設(shè)計(jì)者提供驅(qū)動(dòng)程序的整體框架,設(shè)計(jì)者只需要專心于功能代碼設(shè)計(jì)。3)使用win Driver,這種方法開(kāi)發(fā)驅(qū)動(dòng)程序很容易,但工作效率不是很高。這里采用第二種方法。
Driver Studio生成驅(qū)動(dòng)程序框架主要由兩個(gè)類組成,一個(gè)是Driver類,另一個(gè)是Device類Driver類。
1)Driver類用于初始化驅(qū)動(dòng)程序,它包括:入口函數(shù)Driver Entry和Add Device函數(shù)。當(dāng)設(shè)備驅(qū)動(dòng)程序被加載時(shí),操作系統(tǒng)調(diào)用Driver Entry函數(shù);當(dāng)創(chuàng)建設(shè)備對(duì)象并把它連接到設(shè)備堆棧時(shí)調(diào)用Add Device函數(shù)。函數(shù)代碼如下:

本文引用地址:http://m.butianyuan.cn/article/195484.htm


2)Device類是設(shè)備類KDvice的派生類,這個(gè)類包含了電源管理、設(shè)備讀寫、設(shè)備控制等具有特定功能的例程。限于篇幅只介紹批量讀寫端點(diǎn)函數(shù)。

INF文件的編寫
INF文件是一個(gè)文本文件,它含有安裝一個(gè)設(shè)備驅(qū)動(dòng)程序需要的所有必需的安裝信息。包括要復(fù)制的文件列表,要?jiǎng)?chuàng)建的注冊(cè)表項(xiàng)等。用以告訴系統(tǒng)安裝哪一個(gè)驅(qū)動(dòng)程序,INF文件由若干區(qū)段組成,下面列出幾個(gè)區(qū)段及其功用:
1)Version區(qū)段是INF文件的開(kāi)始,其Class和ClassGuid指出了驅(qū)動(dòng)程序所屬的設(shè)備類別及設(shè)備的GUID。GUID(Global Unique Identi-fier)用以標(biāo)識(shí)不同的驅(qū)動(dòng)程序,它是全局且唯一的,系統(tǒng)就是通過(guò)GUID把應(yīng)用程序的I/O請(qǐng)求傳達(dá)給相應(yīng)的驅(qū)動(dòng)程序的。
2)Mantifacturer區(qū)段指明供應(yīng)商及其對(duì)應(yīng)Models字節(jié)的名稱。
3)Install.AddReg/Install.Services指明注冊(cè)表添加內(nèi)容及安裝驅(qū)動(dòng)的詳細(xì)信息。
該驅(qū)動(dòng)程序應(yīng)用于模塊采集電站的電壓信號(hào),部分采集數(shù)據(jù)如表1所示:


測(cè)量誤差主要來(lái)源于模塊的A/D,與驅(qū)動(dòng)無(wú)關(guān)系,數(shù)據(jù)傳輸結(jié)果表明:數(shù)據(jù)可以在該驅(qū)動(dòng)下及時(shí)正確的傳輸,模塊工作正常。

3 結(jié)束語(yǔ)
該設(shè)備驅(qū)動(dòng)程序用于電站檢測(cè)儀中模塊的效果良好,用這種方法提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期,使開(kāi)發(fā)者可將主要精力集中于實(shí)現(xiàn)設(shè)備功能上,為非軟件專業(yè)開(kāi)發(fā)者開(kāi)發(fā)基于的檢測(cè)儀驅(qū)動(dòng)提供了很好的借鑒。也為USB在測(cè)控領(lǐng)域的應(yīng)用開(kāi)創(chuàng)了光明的前景。相信以計(jì)算機(jī)為數(shù)據(jù)處理核心,以USB為數(shù)據(jù)通信方法的測(cè)控儀器將成為測(cè)控業(yè)發(fā)展主流。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉