LabVIEW动态链接库DLL基础知识_第1页
LabVIEW动态链接库DLL基础知识_第2页
LabVIEW动态链接库DLL基础知识_第3页
LabVIEW动态链接库DLL基础知识_第4页
LabVIEW动态链接库DLL基础知识_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0.参考示例:LabVIEW调用库函数节点配置参数2.1.返回参数类型:有2.1.返回参数类型:有Void,Numeric和String三种,如下图所示。1)VoidVoidisonlyavailableforreturntypeandisnotavailableforotherparameters.UseVoidforthereturntypeifyourfunctiondoesnotreturnanyvalues.Evenifthefunctionyoucallreturnsavalue,youcanuseVoidforthereturntype.WhenthefunctionreturnsavalueandyouselectVoidasthereturntype,thevaluereturnedbythefunctionisignored.(2)Numberic以winpcap.dll为例,如下图。另外数据类型中的“指针大小整型"(pointer-sizedinteger),帮助文档的解释如下:卿:敲直Ifyouusepointer-azedintegers^theCallLibraryFunctionNodeadaptstothespecificoperatingsystemitisbeingexecutedonandpaiss&sdataoftheappropriatesizetoandfromthelibraryfunction™LobVIEWrepre-sentsthedatain64bitsandron32-bitpl目廿orms,translat&sthenumericdatatypesto32-bitintegertypes.卿:敲直int321wpcap_init(LStrHandla3tBriDr_Ertring)3)String目前还没碰到过,等遇到时再补充。2.2.输入(出)参数其类型共有9种,常用的有数值、数组、字符串和匹配值类型。数值需要注意的是,其传递选项有“值(和“指针(两种,分别对应值传递和指针传递。

归恂遲:巳榮是丈炭的労反.氏妊巒曲隹戶不喪爲响左筍丈旌的生.从拡阔弔函则雇鹿来说.生诗逆是旦直的C^-7-W;馥敢的,宜艮翳认不能峙二当雪敌囚部冥狂中氏舷.井且不無举个改讒响调弔老歹归恂遲:巳榮是丈炭的労反.氏妊巒曲隹戶不喪爲响左筍丈旌的生.从拡阔弔函则雇鹿来说.生诗逆是旦直的C^-7-W;馥敢的,宜艮翳认不能峙二当雪敌囚部冥狂中氏舷.井且不無举个改讒响调弔老歹.采用密理掲針苗谨:理君E石勻宝看地7±的捋针r当对那吾的tfirXlKj岭廿,荒咱当于对宝椒本身jS庁的掾作a.数据类型为int32函数原型为voidLVint32(int32input,int32*output);本函数计算输入值的平方,然后将结果显示在“输出”中。CLFExaimpl&.dlLLVint32S1A132132-[1^揄岀R32~|返回类型为void,input类型为int32,值传递output类型为int32,指针传递注:如将结果返回至某个控件,该控件本身即可为返回数据提供必要的内存空间。b.数据类型为float64函数原型为voidLVfloat64(float64input,float64*output);本函数计算输入值的平方,然后将结果显示在“输出”中。CLF_Eacaimple.dll:LVfl□at64>1曲“[IUBL*iSEtj■]卜DEL11返回类型为void,input类型为8字节双精度,值传递output类型为8字节双精度,指针传递c.数据类型为BOOL函数原型为voidWinBOOL(BOOLinput,BOOL*output);本函数将输入值反转后显示在“输出”中。揃入Fl曲Fl祠尔直全(Q1)转换F! F"Z I132I3MI3E*§> CLF_Eiample.dlkWinBQOLBOOL在头文件中的定义为typedefintBOOL,因此在LabVIEW中其数据类型选择int32.d.数据类型为BOOLEAN函数原型为voidWinBOOLEAN(BOOLEANinput,BOOLEAN*pinput,PBOOLEANoutput);本函数对值传递和指针传递的输入值执行“逻辑与”操作,并将返回结果反转后显示在输出”中。BOOLEAN在头文件中的定义为typedefunsignedcharBOOLEAN,输出”中。BOOLEAN在头文件中的定义为typedefunsignedcharBOOLEAN,即无符号字符类型,占1个字节,因此在LabVIEW中其数据类型选择U8。另外这里的形参pinput和output均使用了匹配至类型,后续再说。LabVIEW值的数据类型函数形参或返回参数的数据类型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位系统中LabVIEW的数据类型默认都是I64unsingedpointer-sizedinteger64位系统中LabVIEW的数据类型默认都是U64。Ifyouusepointer-azedintegers,theCallLibraryFunctionNodeadaptstothespecificoperatingsystemitisbeingexecut已donandpas^sdataDftheappropriatesizetoandfromthslibraryfuFiction.LabVIEWrepresentsthedatain64bitsand,,on32-bitpl日廿orms,translat&sthenumericdatatypesto32-bitint已gertypes.数组当类型为数组时,其字数组格式选项共有四种,分别为数组数据指针、数组句柄和数组句柄指针。从DLL返回一个新数组时,必须在LabVIEW中为该数组分配内存。最简单的方法是:将一个已知长度的数组作为“调用库函数”节点的输入,该数组的长度不能小于DLL返回的结果数组的预期长度。a.数组格式为数组数据指针函数原型为voidARRAYfloor1D(double*input,intinput_length,int*output);本函数计算输入元素(1D数组)平方值的整数部分,然后显示在“输出”中。函数原型为voidARRAY2D(double*array,intarray_length_row,intarray_length_col);本函数计算输入二维数组每个元素值的平方。从LabVIEW作为数组数据指针传入的二维数组将被DLL当作一维数组处理。指针运算可用于二维数组的访问。注:数组大小也要传入外部代码,因为此处使用了数据指针,而不是句柄。b.数组格式为数组句柄函数原型为voidARRAY1DHandle(TD1Hdlinput,TD2Hdloutput);本函数计算输入元素平方值的整数部分,然后显示在“输出”中。

函数原型为voidARRAY2DHandle(TD1Hdlarray);本函数计算输入二维数组每个元素值的平方。CLF_Exannple.dll:ARRAY2DHandleEffar

?!函数原型为voidARRAY2DHandle(TD1Hdlarray);本函数计算输入二维数组每个元素值的平方。CLF_Exannple.dll:ARRAY2DHandleEffar

?!注:对于外部代码,数组大小不是必需的,因为此处使用了句柄,而不是数据指针。关于句柄和指针有何异同还没搞清楚。字符串当类型为字符串时,其字符串格式选项共有四种,分别为C字符串指针、Pascal字符串指针、字符串句柄和字符串句柄指针。a.字符串格式为C字符串指针函数原型为voidWinCHAR(CHAR*input,PCHARoutput);本函数将输入字符串反转后显示在“输出”中。注:数据类型函数原型为voidWinCHAR(CHAR*input,PCHARoutput);本函数将输入字符串反转后显示在“输出”中。注:数据类型PCHAR、LPCHAR、PSTR和CHAR*是等价的。LPCSTR和PCSTR是指向常量字符串的指针,且与CONSTCHAR*等价。LabVIEW值的数据类型函数形参或返回参数的数据类型字符串CHAR、UCHAR、char、unsignedchar、CStr、LStrHandleb.其他字符串格式暂不清楚匹配至类型a.输入输出参数为结构体,且结构体中无字符串和数组函数原型为voidCLUSTERSimple(TD1*input,TD1*output);其中TD1类型struct定义为typedefstruct{dcubleDBL;longI32j■chsrEoo-lean;}TD1;本函数的输入簇按顺序包含一个DBL型数据、一个I32型数据和一个布尔型数据。计算DBL型数据的平方值、取I32型数据值的一半,并将布尔值取反。返回结果将显示在“输出”中。

揃入I同h揃入I同hCLF_Exaimple.dlLCLUSTERS-imple输入参数input和输出参数output的类型均选择“匹配至类型”数据格式选择“按值处理”。注:①从DLL返回一个新簇时,必须在LabVIEW中为该簇分配内存。最简单的方法是:将一个已知类型的簇作为“调用库函数”节点的输入,该簇与DLL返回的结果簇的预期类型相同。如将结果返回至某个控件,则当簇中不包含数组或字符串时,该控件本身即可为返回数据提供必要的内存空间。当输入簇中三个元素的顺序发生变化时,函数仍可运行,但运行结果与预期结果不一致。此处将数据格式更改为“句柄指针”结果一样,不知为何。a.输入输出参数为结构体,且结构体中包含字符串和数组函数原型为voidCLUSTERSimpleS_A(TD1*input,TD1*output);其中TD1的struct定义为typedMstruct{

float64DBL;

iwCharstring[51];

int32array[50];}TD1;'''本函数的输入簇包含一个DBL型数据、一个字符串和一个I32本函数的输入簇包含一个DBL型数据、一个字符串和一个I32型数据。计算DBL型数据的平方值、反转字符串、将数组中的每个元素翻倍。返回结果将显示在“输出”中。CL■Eiampls.dll:CLUSIHREimpJ止IM酣&MtnLabVIEW控件“输入”为一个簇,由DBL、字符串和1D数组组成。由于结构体TD1中的字符串长度为51,1D数组的长度为50,所以需要将簇“输入”中的字符串和1D数组也转换成同样的长度。注:LabVIEW通常将字符串和数组作为簇中句柄传递,因此字符串必须转换为U8型数组,然后再转换为带51个U8元素的簇(50个字符+NULL);数组必须转换为带50个I32元素的簇。为了不显示额外数据,在显示数据之前去除无用数据。Examples(1)LabJack动态链接库ListAllSDeviceTypeLJM_ERROR_RETURNILJM_ListAllS(constchar*DeviceTypeHconstchar*ConrieGtioniTyipe.iril*NumFound,ini*aDevlceTypes.ListAllSNum□und日匚armercti口门丁丫卩日seiDwkuTypc1-Lf«2]1ialPAddresses——~L(«=]1aSe^islNurribe-rEParametersLJMERRORRETURN数值132DeviceType[in]字符串常量,C字符串指针ConnectionType[in]字符串常量,C字符串指针NumFound[out]数值I32,指针传递aDeviceTypes[out]数组I32,1D数组数据指针aConnectionTypes[out]数组I32,1D数组数据指针aSerialNumbers[out]数组I32,1D数组数据指针aIPAddresses[out]数组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论