新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LabWindows/CVI儀器驅動程序的開發

        LabWindows/CVI儀器驅動程序的開發

        作者: 時間:2012-05-14 來源:網絡 收藏

        1引言

        本文引用地址:http://www.104case.com/article/149069.htm

        在BC3192測試程序的過程中,最復雜的是。同VXI總線間進行的每一步聯系和操作,都少不了的幫助。

        用Labwindows/CVI(以下簡稱Labwin)軟件可以。這主要是因為Labwin具有一部分通用的儀器設備驅動庫。有了它們,用戶可以比較容易地開發出幾個系列的總線兼容設備驅動程序。如RS232儀器驅動系列、GPIB儀器驅動系列、VXI總線系列驅動程序,還有一些典型的特定驅動程序的實例,如Fluke45Digital Multimeter(VISAI/O)(Fluke45數字型萬用表)、HewlettPackard34401AMultimeter(VISA)(惠普34401A型萬用表)等。

        一個典型的驅動程序由4部分組成。

        第一部分是主程序,主要是由*.lib,*.obj,*.dll或*.c文件組成。

        第二部分是包含文件(*.h),包括函數功能的定義,常量的聲明以及全局變量的聲明。

        第三部分是設備功能面板部分(*.fp),包括樹狀功能信息定義。

        第四部分是由ASCII碼構成的幫助文件(*.doc),它包括指導用戶的詳細驅動程序幫助。

        2儀器驅動程序的操作

        對用戶來說,驅動程序完成一種或多種儀器功能,整個驅動程序庫由多組程序有選擇地構成。在Labwin的編程環境中選取儀器菜單,再從菜單中選取一個設備。這時將從屏幕中彈出一個功能面板,功能面板顯示儀器的一些交互控制。函數調用自動生成的功能也隨之加入整個應用程序。即使不提供功能面板,也能以手工方式進行驅動函數的調用。總地來說,設備驅動程序包括用以執行高級設備相關任務的功能函數。當用戶把功能函數包含到程序中后,即使不了解設備的編程協議,也可以控制一個儀器正常運轉。對它們的應用,可以在很大程度上減輕編程人員的負擔。它們可以在軟件開發中形成模塊化,并大大提高軟件的易用性和可維護性。

        3開發驅動程序的優勢

        Labwin中設備的驅動程序是比傳統概念中的驅動程序更高一層的概念。他們免去了編程人員頻繁地同I/O端口打交道。它是放入用戶應用程序的一種高層的軟件功能。它不僅完全適用于目前各種標準的儀器設備,而且可對一大批老的儀器設備提供支持。

        所有的Labwin應用的驅動程序,傳遞時在可能的情況下都伴有源碼,并且很多都有完整的幫助文件。它們都是在Labwin的標準開發環境下開發的,用戶可以根據具體情況改造自己的程序,使它們更加強大并對自己的應用程序有更大的彈性。

        開發儀器驅動程序包括外部接口模塊和內部設計模塊。

        3.1外部接口模塊

        外部接口模塊如圖1所示。

        功能主體:設備驅動的代碼部分

        程序員交互接口:圖形化的編程助手,把交互控件狀態轉化為代碼

        程序員編程接口:調用各種函數

        子程序接口:調用其它軟件模塊

        3.2內部設計模塊

        內部設計模塊如圖2所示。

        功能主體:設備驅動的代碼部分。包括初始化(包括結構復位、自檢等)、設置函數(用一個軟件程序集來實現相應功能。各種設備都有特定的設置函數。)、動作/狀態函數(動作函數使儀器開始和停止測試,狀態函數可獲得儀器操作當前和即將出現的狀態。)、數據函數(向儀器發送和接收數據)、終結函數(終結同儀器間的連接并釋放系統資源)、應用程序函數(高級面向測試和功能函數)。

        4儀器驅動程序的設計

        4.1設計原則

        在設計之前,必須進行驅動程序結構的設計,因為如果驅動程序的結構比較明了,會使程序員設計應用程序時更有條理。

        其次,一定要把設計的驅動程序基于一個已設計好的核心驅動程序(即Labwin自帶的驅動程序庫)、或者是由一個核心驅動程序演化出來的驅動程序。

        最后,以一個明確的步驟來編寫你的儀器驅動程序(將在后面介紹)。

        4.2設計步驟

        (1)命名這個驅動程序。

        (2)定義這個驅動程序的功能和類。

        (3)建立一個驅動程序的功能樹。在Labwin中的功能樹都以*.fp模式存儲,并在引用時以層次化形式出現,并且在各分支功能上加幫助信息。

        (4)對于程序中的每個函數:

        ——對于函數的參數定義包括變量類型、變量范圍、錯誤代碼等相關信息;

        ——在功能面板上實現新功能的創建,包括對功能面板和其中各個控件的幫助信息;

        ——為執行功能函數寫代碼;

        ——檢驗代碼執行效果。

        (5)為最終的設備源程序創建包含文件,包括函數定義和常量聲明。

        4.3兩個輔助工具介紹

        (1)功能樹的編輯器

        用圖3所示的是功能樹編輯器,可以靈活地添加和刪除各種函數,可從各個分支進入具體的函數定義功能面板編輯器。

        圖4所示的功能面板編輯器,可以控件的形式描述諸如函數參數、返回值、參考說明等函數的相關信息。隨著各種控件的加入,相應的源代碼也被實時地翻譯在面板下方的文本框中。

        4.4自定義的數據類型

        控件的使用方法相當簡單,只需補充常說的可移植性問題,這一點同數據的定義是分不開的。Labwin對于驅動程序開發有自己專門的一套數據類型,它們可以精確地定義參數的類型和大小,而且它們具有很好的可移植性。各種定義如表1所示。

        表1各種定義

        QQ截圖20120514143453.jpg

        4.5函數定義的方法驅動程序函數調用的返回值也與眾不同,VISA/IO(Labwin中的虛擬設備接口)定義了一種非常有用的調用設備函數時使用的宏,如表2所示。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 山西省| 江孜县| 茌平县| 富民县| 南雄市| 行唐县| 彩票| 大田县| 林周县| 铅山县| 南雄市| 丰都县| 日喀则市| 巴里| 探索| 融水| 桃园县| 滦南县| 邮箱| 赤水市| 鹤壁市| 富阳市| 江城| 高陵县| 湖口县| 辽中县| 瑞丽市| 焦作市| 秦安县| 公安县| 万荣县| 宜宾市| 嫩江县| 白沙| 桐庐县| 壶关县| 白水县| 吴桥县| 彩票| 大安市| 余江县|