LabVIEW動(dòng)態(tài)鏈接庫(kù)DLL基礎(chǔ)知識(shí)_第1頁(yè)
LabVIEW動(dòng)態(tài)鏈接庫(kù)DLL基礎(chǔ)知識(shí)_第2頁(yè)
LabVIEW動(dòng)態(tài)鏈接庫(kù)DLL基礎(chǔ)知識(shí)_第3頁(yè)
LabVIEW動(dòng)態(tài)鏈接庫(kù)DLL基礎(chǔ)知識(shí)_第4頁(yè)
LabVIEW動(dòng)態(tài)鏈接庫(kù)DLL基礎(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

0.參考示例:LabVIEW調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)配置參數(shù)2.1.返回參數(shù)類型:有2.1.返回參數(shù)類型:有Void,Numeric和String三種,如下圖所示。1)VoidVoidisonlyavailableforreturntypeandisnotavailableforotherparameters.UseVoidforthereturntypeifyourfunctiondoesnotreturnanyvalues.Evenifthefunctionyoucallreturnsavalue,youcanuseVoidforthereturntype.WhenthefunctionreturnsavalueandyouselectVoidasthereturntype,thevaluereturnedbythefunctionisignored.(2)Numberic以winpcap.dll為例,如下圖。另外數(shù)據(jù)類型中的“指針大小整型"(pointer-sizedinteger),幫助文檔的解釋如下:卿:敲直Ifyouusepointer-azedintegers^theCallLibraryFunctionNodeadaptstothespecificoperatingsystemitisbeingexecutedonandpaiss&sdataoftheappropriatesizetoandfromthelibraryfunction?LobVIEWrepre-sentsthedatain64bitsandron32-bitpl目廿orms,translat&sthenumericdatatypesto32-bitintegertypes.卿:敲直int321wpcap_init(LStrHandla3tBriDr_Ertring)3)String目前還沒(méi)碰到過(guò),等遇到時(shí)再補(bǔ)充。2.2.輸入(出)參數(shù)其類型共有9種,常用的有數(shù)值、數(shù)組、字符串和匹配值類型。數(shù)值需要注意的是,其傳遞選項(xiàng)有“值(和“指針(兩種,分別對(duì)應(yīng)值傳遞和指針傳遞。

歸恂遲:巳榮是丈炭的労反.氏妊巒曲隹戶不喪爲(wèi)響左筍丈旌的生.從拡闊弔函則雇鹿來(lái)說(shuō).生詩(shī)逆是旦直的C^-7-W;馥敢的,宜艮翳認(rèn)不能峙二當(dāng)雪敵囚部冥狂中氏舷.井且不無(wú)舉個(gè)改讒響調(diào)弔老歹歸恂遲:巳榮是丈炭的労反.氏妊巒曲隹戶不喪爲(wèi)響左筍丈旌的生.從拡闊弔函則雇鹿來(lái)說(shuō).生詩(shī)逆是旦直的C^-7-W;馥敢的,宜艮翳認(rèn)不能峙二當(dāng)雪敵囚部冥狂中氏舷.井且不無(wú)舉個(gè)改讒響調(diào)弔老歹.采用密理掲針苗謹(jǐn):理君E石勻?qū)毧吹?±的捋針r當(dāng)對(duì)那吾的tfirXlKj嶺廿,荒咱當(dāng)于對(duì)寶椒本身jS庁的掾作a.數(shù)據(jù)類型為int32函數(shù)原型為voidLVint32(int32input,int32*output);本函數(shù)計(jì)算輸入值的平方,然后將結(jié)果顯示在“輸出”中。CLFExaimpl&.dlLLVint32S1A132132-[1^揄岀R32~|返回類型為void,input類型為int32,值傳遞output類型為int32,指針傳遞注:如將結(jié)果返回至某個(gè)控件,該控件本身即可為返回?cái)?shù)據(jù)提供必要的內(nèi)存空間。b.數(shù)據(jù)類型為float64函數(shù)原型為voidLVfloat64(float64input,float64*output);本函數(shù)計(jì)算輸入值的平方,然后將結(jié)果顯示在“輸出”中。CLF_Eacaimple.dll:LVfl□at64>1曲“[IUBL*iSEtj■]卜DEL11返回類型為void,input類型為8字節(jié)雙精度,值傳遞output類型為8字節(jié)雙精度,指針傳遞c.數(shù)據(jù)類型為BOOL函數(shù)原型為voidWinBOOL(BOOLinput,BOOL*output);本函數(shù)將輸入值反轉(zhuǎn)后顯示在“輸出”中。揃入Fl曲Fl祠爾直全(Q1)轉(zhuǎn)換F! F"Z I132I3MI3E*§> CLF_Eiample.dlkWinBQOLBOOL在頭文件中的定義為typedefintBOOL,因此在LabVIEW中其數(shù)據(jù)類型選擇int32.d.數(shù)據(jù)類型為BOOLEAN函數(shù)原型為voidWinBOOLEAN(BOOLEANinput,BOOLEAN*pinput,PBOOLEANoutput);本函數(shù)對(duì)值傳遞和指針傳遞的輸入值執(zhí)行“邏輯與”操作,并將返回結(jié)果反轉(zhuǎn)后顯示在輸出”中。BOOLEAN在頭文件中的定義為typedefunsignedcharBOOLEAN,輸出”中。BOOLEAN在頭文件中的定義為typedefunsignedcharBOOLEAN,即無(wú)符號(hào)字符類型,占1個(gè)字節(jié),因此在LabVIEW中其數(shù)據(jù)類型選擇U8。另外這里的形參pinput和output均使用了匹配至類型,后續(xù)再說(shuō)。LabVIEW值的數(shù)據(jù)類型函數(shù)形參或返回參數(shù)的數(shù)據(jù)類型I32BOOL、int32、INT、int、LONG、long、SSIZETU32DWORD、HWND、SIZE_T、UINT、ULONG、unsingedint、unsingedlong、uInt32I16SHORT、short、int16U16USHORT、WORD、unsingedshort、uInt16I8int8U8BOOLEAN、BYTE、uInt8SGLFLOAT、float、float32DBLdouble、float64pointer-sizedinteger64位系統(tǒng)中LabVIEW的數(shù)據(jù)類型默認(rèn)都是I64unsingedpointer-sizedinteger64位系統(tǒng)中LabVIEW的數(shù)據(jù)類型默認(rèn)都是U64。Ifyouusepointer-azedintegers,theCallLibraryFunctionNodeadaptstothespecificoperatingsystemitisbeingexecut已donandpas^sdataDftheappropriatesizetoandfromthslibraryfuFiction.LabVIEWrepresentsthedatain64bitsand,,on32-bitpl日廿orms,translat&sthenumericdatatypesto32-bitint已gertypes.數(shù)組當(dāng)類型為數(shù)組時(shí),其字?jǐn)?shù)組格式選項(xiàng)共有四種,分別為數(shù)組數(shù)據(jù)指針、數(shù)組句柄和數(shù)組句柄指針。從DLL返回一個(gè)新數(shù)組時(shí),必須在LabVIEW中為該數(shù)組分配內(nèi)存。最簡(jiǎn)單的方法是:將一個(gè)已知長(zhǎng)度的數(shù)組作為“調(diào)用庫(kù)函數(shù)”節(jié)點(diǎn)的輸入,該數(shù)組的長(zhǎng)度不能小于DLL返回的結(jié)果數(shù)組的預(yù)期長(zhǎng)度。a.數(shù)組格式為數(shù)組數(shù)據(jù)指針函數(shù)原型為voidARRAYfloor1D(double*input,intinput_length,int*output);本函數(shù)計(jì)算輸入元素(1D數(shù)組)平方值的整數(shù)部分,然后顯示在“輸出”中。函數(shù)原型為voidARRAY2D(double*array,intarray_length_row,intarray_length_col);本函數(shù)計(jì)算輸入二維數(shù)組每個(gè)元素值的平方。從LabVIEW作為數(shù)組數(shù)據(jù)指針傳入的二維數(shù)組將被DLL當(dāng)作一維數(shù)組處理。指針運(yùn)算可用于二維數(shù)組的訪問(wèn)。注:數(shù)組大小也要傳入外部代碼,因?yàn)榇颂幨褂昧藬?shù)據(jù)指針,而不是句柄。b.數(shù)組格式為數(shù)組句柄函數(shù)原型為voidARRAY1DHandle(TD1Hdlinput,TD2Hdloutput);本函數(shù)計(jì)算輸入元素平方值的整數(shù)部分,然后顯示在“輸出”中。

函數(shù)原型為voidARRAY2DHandle(TD1Hdlarray);本函數(shù)計(jì)算輸入二維數(shù)組每個(gè)元素值的平方。CLF_Exannple.dll:ARRAY2DHandleEffar

?!函數(shù)原型為voidARRAY2DHandle(TD1Hdlarray);本函數(shù)計(jì)算輸入二維數(shù)組每個(gè)元素值的平方。CLF_Exannple.dll:ARRAY2DHandleEffar

?!注:對(duì)于外部代碼,數(shù)組大小不是必需的,因?yàn)榇颂幨褂昧司浔?,而不是?shù)據(jù)指針。關(guān)于句柄和指針有何異同還沒(méi)搞清楚。字符串當(dāng)類型為字符串時(shí),其字符串格式選項(xiàng)共有四種,分別為C字符串指針、Pascal字符串指針、字符串句柄和字符串句柄指針。a.字符串格式為C字符串指針函數(shù)原型為voidWinCHAR(CHAR*input,PCHARoutput);本函數(shù)將輸入字符串反轉(zhuǎn)后顯示在“輸出”中。注:數(shù)據(jù)類型函數(shù)原型為voidWinCHAR(CHAR*input,PCHARoutput);本函數(shù)將輸入字符串反轉(zhuǎn)后顯示在“輸出”中。注:數(shù)據(jù)類型PCHAR、LPCHAR、PSTR和CHAR*是等價(jià)的。LPCSTR和PCSTR是指向常量字符串的指針,且與CONSTCHAR*等價(jià)。LabVIEW值的數(shù)據(jù)類型函數(shù)形參或返回參數(shù)的數(shù)據(jù)類型字符串CHAR、UCHAR、char、unsignedchar、CStr、LStrHandleb.其他字符串格式暫不清楚匹配至類型a.輸入輸出參數(shù)為結(jié)構(gòu)體,且結(jié)構(gòu)體中無(wú)字符串和數(shù)組函數(shù)原型為voidCLUSTERSimple(TD1*input,TD1*output);其中TD1類型struct定義為typedefstruct{dcubleDBL;longI32j■chsrEoo-lean;}TD1;本函數(shù)的輸入簇按順序包含一個(gè)DBL型數(shù)據(jù)、一個(gè)I32型數(shù)據(jù)和一個(gè)布爾型數(shù)據(jù)。計(jì)算DBL型數(shù)據(jù)的平方值、取I32型數(shù)據(jù)值的一半,并將布爾值取反。返回結(jié)果將顯示在“輸出”中。

揃入I同h揃入I同hCLF_Exaimple.dlLCLUSTERS-imple輸入?yún)?shù)input和輸出參數(shù)output的類型均選擇“匹配至類型”數(shù)據(jù)格式選擇“按值處理”。注:①?gòu)腄LL返回一個(gè)新簇時(shí),必須在LabVIEW中為該簇分配內(nèi)存。最簡(jiǎn)單的方法是:將一個(gè)已知類型的簇作為“調(diào)用庫(kù)函數(shù)”節(jié)點(diǎn)的輸入,該簇與DLL返回的結(jié)果簇的預(yù)期類型相同。如將結(jié)果返回至某個(gè)控件,則當(dāng)簇中不包含數(shù)組或字符串時(shí),該控件本身即可為返回?cái)?shù)據(jù)提供必要的內(nèi)存空間。當(dāng)輸入簇中三個(gè)元素的順序發(fā)生變化時(shí),函數(shù)仍可運(yùn)行,但運(yùn)行結(jié)果與預(yù)期結(jié)果不一致。此處將數(shù)據(jù)格式更改為“句柄指針”結(jié)果一樣,不知為何。a.輸入輸出參數(shù)為結(jié)構(gòu)體,且結(jié)構(gòu)體中包含字符串和數(shù)組函數(shù)原型為voidCLUSTERSimpleS_A(TD1*input,TD1*output);其中TD1的struct定義為typedMstruct{

float64DBL;

iwCharstring[51];

int32array[50];}TD1;'''本函數(shù)的輸入簇包含一個(gè)DBL型數(shù)據(jù)、一個(gè)字符串和一個(gè)I32本函數(shù)的輸入簇包含一個(gè)DBL型數(shù)據(jù)、一個(gè)字符串和一個(gè)I32型數(shù)據(jù)。計(jì)算DBL型數(shù)據(jù)的平方值、反轉(zhuǎn)字符串、將數(shù)組中的每個(gè)元素翻倍。返回結(jié)果將顯示在“輸出”中。CL■Eiampls.dll:CLUSIHREimpJ止IM酣&MtnLabVIEW控件“輸入”為一個(gè)簇,由DBL、字符串和1D數(shù)組組成。由于結(jié)構(gòu)體TD1中的字符串長(zhǎng)度為51,1D數(shù)組的長(zhǎng)度為50,所以需要將簇“輸入”中的字符串和1D數(shù)組也轉(zhuǎn)換成同樣的長(zhǎng)度。注:LabVIEW通常將字符串和數(shù)組作為簇中句柄傳遞,因此字符串必須轉(zhuǎn)換為U8型數(shù)組,然后再轉(zhuǎn)換為帶51個(gè)U8元素的簇(50個(gè)字符+NULL);數(shù)組必須轉(zhuǎn)換為帶50個(gè)I32元素的簇。為了不顯示額外數(shù)據(jù),在顯示數(shù)據(jù)之前去除無(wú)用數(shù)據(jù)。Examples(1)LabJack動(dòng)態(tài)鏈接庫(kù)ListAllSDeviceTypeLJM_ERROR_RETURNILJM_ListAllS(constchar*DeviceTypeHconstchar*ConrieGtioniTyipe.iril*NumFound,ini*aDevlceTypes.ListAllSNum□und日匚armercti口門(mén)丁丫卩日seiDwkuTypc1-Lf?2]1ialPAddresses——~L(?=]1aSe^islNurribe-rEParametersLJMERRORRETURN數(shù)值132DeviceType[in]字符串常量,C字符串指針ConnectionType[in]字符串常量,C字符串指針NumFound[out]數(shù)值I32,指針傳遞aDeviceTypes[out]數(shù)組I32,1D數(shù)組數(shù)據(jù)指針aConnectionTypes[out]數(shù)組I32,1D數(shù)組數(shù)據(jù)指針aSerialNumbers[out]數(shù)組I32,1D數(shù)組數(shù)據(jù)指針aIPAddresses[out]數(shù)組

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論