<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > LabWindows/CVI儀器驅動(dòng)程序的開(kāi)發(fā)

LabWindows/CVI儀器驅動(dòng)程序的開(kāi)發(fā)

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

QQ截圖20120514143511.jpg

因為沿用了在Pascal語(yǔ)言中調用在DLL程序驅動(dòng)的習慣,當用戶(hù)在Labwin的環(huán)境調用用戶(hù)定義函數時(shí),把宏_VI_FUNC(表示任何用戶(hù)函數)翻譯成_pascal,而使用外部編譯器編譯時(shí),則把宏解釋成_far_pascal_export。同樣在Labwin中,_VI_FAR(表示用戶(hù)函數中任何的數組參數和輸出變量)被翻譯成空,而用其它編譯程序時(shí),被翻譯成_far。

如下面這個(gè)函數:

ViStatus_VI_FUNCtek2430a_read_waveform(ViSessioninstrSession,

ViReal64_VI_FARwvfm[],

ViReal64_VI_FAR*xin,

ViReal64_VI_FAR*trig_off);

環(huán)境時(shí),表示為:

ViStatus_pascaltek2430a_read_waveform(ViSessioninstrSession,

ViReal64wvfm[],

ViReal64*xin,

ViReal64*trig_off);

而在其它編譯環(huán)境下,表示為:

ViStatus_far_pascal_exporttek2430a_read_waveform(ViSessioninstrSession,

ViReal64_farwvfm[],

ViReal64_far*xin,

ViReal64_far*trig_off);

5在BC3192測試程序中的應用實(shí)例

VXI的設備包括以下幾個(gè)主要功能。首先是分配設備的地址指針,這需要定義動(dòng)態(tài)鏈接庫的代碼段和數據段為可移動(dòng)和可刪除,因為要用基指針指向每一個(gè)I/O動(dòng)作,所以代碼段和數據段是不定的;其次是VXI總線(xiàn)寄存器的寫(xiě)入和讀取動(dòng)作,這些操作需要我們使用剛得到的設備地址指針;再次是向緩存中讀取和寫(xiě)入信息。另外,還有初始化,以及系統固定延遲時(shí)間等一系列功能。

在BC3192的測試程序中,結合Labwin自帶的VXI總線(xiàn)的設備,編寫(xiě)了一個(gè)簡(jiǎn)單的VXI。它存于程序的根目錄中,有4個(gè)支持文件,分別是vxirw.c、vxirw.dll、vxirw.h以及vxirw.lib。在我們的程序中,由于考慮到工作的效率,決定使用在VisualC++1.5的編譯環(huán)境下,編譯vxirw.c和vxirw.h程序,生成vxirw.dll及vxirw.lib的高效方法。這是由于Labwin使用一種LCC內建解釋器對程序進(jìn)行解釋?zhuān)湫蔬h不如直接使用動(dòng)態(tài)鏈接庫方便。用VC編譯器編譯的動(dòng)態(tài)鏈接文件,可以在Labwin的函數中方便地進(jìn)行調用。而且其效率同VC自身的調用不相上下。

如下面代碼所示,正是使用了剛才所表示的函數調用方法。

voidFARPASCAL__export__loaddsReadReg(UINTLa,UINTOffset,UINTFAR*Data)

/*這是用于讀取總線(xiàn)寄存器的函數。*/

{

/**Data=(UINT)(*(pPointer+La*32+Offset/2));*/

/*gettheaddresspointer*/

GetPointer(La);/*調用La全局變量取得寄存器地址*

/*readregister*/

*Data=(UINT)(*(pPointer+Offset/2));/*把寄存器中的值通過(guò)偏移地址取出*/

/*freetheselector*/

FreeSelector(wSelector);/*釋放在取寄存器的值時(shí)所用到的字選擇臨時(shí)變量。*/

}

程序的調用要熟悉大量硬件的特性,不屬于軟件總體設計之列,在此不再介紹。

6結論

Labwindows這種以C語(yǔ)言為中心的編程方式有其優(yōu)勢,所帶的C語(yǔ)言的功能比較靈活,而又便于一些大型的工程。它的類(lèi)庫的功能又可以開(kāi)放地進(jìn)行擴充,使系統的功能得到進(jìn)一步增強。相對地,新型編程方式只能在固定的自帶環(huán)境中運行,而且在表達復雜關(guān)系時(shí),流程圖的聯(lián)系方式有很大的局限性。所以,Labwindows的編程方式在一段時(shí)間內將仍然擁有其地位。而今后的發(fā)展很可能是把兩種編程方法進(jìn)行集成,使我們在建立流程圖后可以生成大部分程序代碼,而細微的地方又可以進(jìn)行C語(yǔ)言的調整。這樣,我們的編程人員將擁有更方便的編程工具。


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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>