为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

LabVIEW的外部代码接口

2011-12-20 5页 pdf 109KB 38阅读

用户头像

is_100731

暂无简介

举报
LabVIEW的外部代码接口 第 u|卷 第 v 期 湖 南 大 学 学 报 k自然科学版l ∂ ²tqu|o ‘²qv u s s u 年 y 月 ²∏µ±¤¯ ²©‹ ∏±¤± ˜ ±¬√ µ¨¶¬·¼k‘¤·∏µ¤¯ ≥¦¬¨±¦¨¶∞§¬·¬²±l ∏±q u s s u 文章编号}tsss2uwzukussulsv2sswt2sx ¤¥∂ Œ∞• 的外部代码接口Ξ 刘红显 o黄文梅 k湖南大学 机械与汽车工程学院o湖南 长沙 wtss{ul 摘 要}简要介绍了 ¤¥∂ Œ∞• 的外部语言代码接口o重点分析使用 ⁄和 ≤Œ‘...
LabVIEW的外部代码接口
第 u|卷 第 v 期 湖 南 大 学 学 报 k自然科学版l ∂ ²tqu|o ‘²qv u s s u 年 y 月 ²∏µ±¤¯ ²©‹ ∏±¤± ˜ ±¬√ µ¨¶¬·¼k‘¤·∏µ¤¯ ≥¦¬¨±¦¨¶∞§¬·¬²±l ∏±q u s s u 文章编号}tsss2uwzukussulsv2sswt2sx ¤¥∂ Œ∞• 的外部代码接口Ξ 刘红显 o黄文梅 k湖南大学 机械与汽车学院o湖南 长沙 wtss{ul 摘 要}简要介绍了 ¤¥∂ Œ∞• 的外部语言代码接口o重点分析使用 ⁄和 ≤Œ‘时的参数类型匹配问题o以及二者在使用上的优缺点q 关键词}虚拟仪器~¤¥∂ Œ∞• ~参数类型匹配 中图分类号}× °uzwn qu~× °v|tqzy 文献标识码} „ ∞¬·¨µ±¤¯ ≤ ²§¨ Œ±·¨µ©¤¦¨¶¬± ¤¥∂ Œ∞• Œ˜ ‹ ²±ª2¬¬¤±o ‹ ˜ „‘Š • ±¨2° ¬¨ k≤ ²¯ ¯¨ ª¨ ²© ¦¨«¤±¬¦¤¯ ¤±§„ ∏·²°²·¬√¨∞±ª¬±¨¨ µ¬±ªo ‹ ∏±¤± ˜ ±¬√o ≤«¤±ª¶«¤ wtss{uo ≤«¬±¤l Αβστραχτ}× «¬¶³¤³¨ µ¥µ¬¨©¯¼ ¬±·µ²§∏¦¨¶·«¨ ¬±·¨µ©¤¦¨¶²© ¬¨·¨µ±¤¯ ¦²§¨ ¬± ¤¥∂ Œ∞• q °²·¨±·¬¤¯ ³µ²¥¯ °¨ ²©³¤µ¤° ·¨¨µ·¼³¨ °¬¶°¤·¦« ¬¶¤±¤¯¼½¨ §¤±§ µ¨¶²¯ √ §¨q „ ¶¯²o ·«¨ ¤§2 √¤±·¤ª¨ ¶¤±§§¬¶¤§√¤±·¤ª¨ ¶²©∏¶¬±ª⁄¤±§∏¶¬±ª≤Œ‘ ¬± ¤¥∂ Œ∞• ¤µ¨ §¬¶¦∏¶¶¨§q Κεψ ωορδσ}√¬µ·∏¤¯ ¬±¶·µ∏° ±¨·~¤¥∂ Œ∞• ~³¤µ¤° ·¨¨µ·¼³¨ °¤·¦« 微电子技术和计算机技术的飞速发展o测试技术与计算机技术的深层次结合o在测试 仪器领域引起了一场革命o直接导致了虚拟仪器k∂ ¬µ·∏¤¯ Œ±¶·µ∏° ±¨·l的到来Λ 虚拟仪器 由功能强大的计算机和获取调理信号的 ŒÙ’ 接口设备组成ΛŒÙ’ 接口设备k如数据采集卡 ⁄„ ± !Š°Œ…总线仪器!∂ ÷ Œ总线仪器模块!°÷ Œ标准总线仪器模块!串口 • ≥uvuÙw{x 仪器lo完成数据的采集!调理~计算机及其显示器完成数据的分析处理与显示Λ由此可见o 虚拟仪器具有很强的开放性!灵活性和扩展性Λ 基于 Š 语言的 ¤¥∂ Œ∞• k¤¥²µ¤·²µ¼ ∂ ¬µ·∏¤¯ Œ±¶·µ∏° ±¨·• ²µ®¥¨ ±¦«l是目前最流行的虚拟仪器软件开发工具ˏ¤¥∂ Œ∞• 便捷 的图形化开发环境!基于 Š 语言kŠµ¤³«¬¦¶¤±ª∏¤ª¨ o图形化编程语言l的编程方式 使得用户可以快速地开发出功能强大!界面精美的虚拟仪器Λ ¤¥∂ Œ∞• 不仅有豪华精美的控件o功能强大的内核o还提供了调用外部语言代码的 接口Λ Ξ 收稿日期}usss2sx2s| 作者简介}刘红显kt|zy2lo男o河南方城人o湖南大学硕士研究生 1 1 调用 ⁄ ¤¥∂ Œ∞• 可以调用用任何语言k如 ∂ ¬¶∏¤¯ ≤ n n o≤ n n …∏¬¯§¨ µo∂ ¬¶∏¤¯ …¤¶¬¦l编写 生成的动态链接库Λ 调用时o¤¥∂ Œ∞• 所能支持的参数类型有}通用数据类型k空类型! 整型!字符型!浮点型l及其指针!字符串!数组Λ字符串又分为 w种o详细的述见表 tΛ对 于数组o详细的表述见表 uΛ 若调用已存在的本机 ⁄k如 ˜ ¶¨µvuq§¯ !¯Ž¨ µ±¨¯vuq§¯ l¯用户必须通过查阅相关文 档k如对于 • ¬±vu „ °Œ¶o查阅  ≥⁄‘lo弄清楚被调用的 ⁄所含的目标函数的原形o而 且¤¥∂ Œ∞• 应用程序的实参类型要与目标函数虚参类型相匹配 Λ 此时o调用规范一般 为 • Œ‘„ °Œk ¶·§¦¤¯ l¯Λ 若自己编制 ⁄o则应根据应用程序的需要o确定参数个数和参 数类型及调用规范o然后在¤¥∂ Œ∞• 中正确地配置 ⁄Λ 表 1 字符串类型参数分类o匹配 ¤¥∂ Œ∞• 描述 ≤Ù≤ n n 描述 说 明 ≤ ≥·µ¬±ª°²¬±·¨µ ∏±¶¬ª± §¨¦«¤µ3 以 s作为字符串的结尾Λ °¤¶¦¤¯ ≥·µ¬±ª°²¬±·¨µ ∏±¶¬ª± §¨¦«¤µ3 以字符串的长度作为字符串的开始o长度不大于 uxxΛ ¤¥∂ Œ∞• ≥·µ¬±ª ‹ ¤±§¯ }¨ ≥·µ°·µ ¤¥∂ Œ∞• ≥·µ¬±ª ‹ ¤±§¯¨ °²¬±·2 µ¨} ≥·µ‹ ¤±§¯¨ ·¼³¨ §¨ ©¶·µ∏¦·¾¬±·vu ¦±·~ ∏±¶¬ª± §¨¦«¤µ¶·µ≈t ~ À ≥·µo 3 ≥·µ°·µo 3 3 ≥·µ‹ ¤±§¯ ~¨ 数据成员 ¦±·记录字符串的长度o数据成员 ¶·µ≈s 存放第一个字符Λ若长度大于 to可以 在 ⁄中动态分配内存o但必须调用 ≤ Œ‘ 函 数 来 完 成o 如 ≥ ·¨≤ Œ‘„ µµ¤¼2 ≥¬½¨ ‘∏° µ¨¬¦„ µµ¤¼• ¶¨¬½¨ Λ 表 2 数组的参数传递k以带符号长整形 2 维数组为例l ¤¥∂ Œ∞• 描述 ≤Ù≤ n n 描述 说 明 „ µµ¤¼ ⁄¤·¤°²¬±·¨µ ¬±·3 ¤µµ¤µ¼°²¬±·¨µ 数组元素的首地址Λ 不能改变数组的大小 „ µµ¤¼ ‹ ¤±§¯ }¨× ⁄t‹ §¯ ·¼³¨ §¨ ©¶·µ∏¦·¾ ¬±·§¬°≥¬½¨ ¶≈u ~ ¬±·‘∏° µ¨¬¦≈t ~ À × ⁄to3 3 × ⁄t‹ §¯~ §¬°≥¬½¨ ¶≈s 为行数o§¬°≥¬½¨ ¶≈t  为列数o ‘∏° µ¨¬¦≈s  存放第一个元素o按行存储Λ可 以调用 ≤ Œ‘函数动态内存分配o改变数组的 大小Λ „ µµ¤¼ ‹ ¤±§¯¨°²¬±·¨µ × ¼³¨ §¨ ©× ⁄t 3 3 × ⁄t‹ §¯°·µ 即指向 „ µµ¤¼ ‹ ¤±§¯¨变量的指针Λ 例如o¤¥∂ Œ∞• 后面板如图 to则相应的 ⁄函数可声明如下} ·¼³¨ §¨ ©¶·µ∏¦·¾ ¬±·§¬°≥¬½¨ ¶≈u ~ ÙÙµ²º¶o¦²¯∏°±¶ ¬±·‘∏° µ¨¬¦≈t ~ÙÙ²·«¨ µ¨¯ °¨ ±¨·¶¶∏¦¦¨¶¶¬√¨¯¼ ©²¯ ²¯º §¨¬± ° °¨²µ¼ ³«¼¶¬¦¤¯ ¼¯ À × ⁄t~ ·¼³¨ §¨ ©× ⁄t 3 3 × ⁄t‹ §¯~ ¬¨·¨µ± / ≤ 0 §¨ ¦¯¶³¨ ¦k§¯¯¨ ¬³²µ·l √²¬§§¯ ƒ¯¬±k× ⁄t‹ §¯ ¤µµl~ÙÙ≤ ¦¤¯ ¬¯±ª¦²±√ ±¨·¬²±}≤ 该函数被调用时 §¬°≥¬½¨ ¶≈s 的值为 vo§¬°≥¬½¨ ¶≈t 的值为三个数组中元素个数的最大 值Λ 访问数组元素k¬o­l可以采用如下语句} uw 湖南大学学报k自然科学版l ussu年 ¬±·µ²º¶€ k3 ¤µµlp  §¬°≥¬½¨ ¶≈s ~ ÙÙ·²·¤¯ µ²º¶²©·«¨ ¤µµ¤¼ ¬±·¦²¯¶€ € k3 ¤µµlp  §¬°≥¬½¨ ¶≈t ~ÙÙ·²·¤¯ ¦²¯∏°±¶²©·«¨ ¤µµ¤¼ ¬±·3 ³„µµ¤¼€ i kk3 ¤µµlp  ‘∏° µ¨¬¦≈s l~ÙÙ¤§§µ¨¶¶²©·«¨ ¤µµ¤¼ ¬±·∞¯¨ ° ±¨·€ 3 k³„ µµ¤¼n ¬3 ¦²¯¶n ­l~Ùٌ°³²µ·¤±·} ¬ µ²º¶¤±§­ ¦²¯¶ 又如图 u所示的¤¥∂ Œ∞• 后面板o相应的 ⁄函数可声明为} §¨ ¦¯¶³¨ ¦k§¯¯¨ ¬³²µ·l √²¬§• Œ‘„ °Œ§¯ ƒ¯¬±k§²∏¥¯¨…∏©≈  o¬±·¶¬½¨ l~ 图 t „ µµ¤¼ ‹ ¤±§¯¨方式传递参数 图 u „ µµ¤¼ ⁄¤·¤°²¬±·¨µ方式传递参数 2 Χοδε Ιντερφαχε Ν οδε ≤ Œ‘是 ¤¥∂ Œ∞• 图形化编程语言环境与 ≤ Ù≤ n n 语言的接口Λ 当遇到某些用 ¤¥2 ∂ Œ∞• 难以实现或实现起来比较繁琐的功能时o可以通过 ≤ Œ‘在 ¤¥∂ Œ∞• 中引入 ≤ Ù≤ n n 源代码o这其实是对 ¤¥∂ Œ∞• 编程功能的强大补充Λ 当使用 ≤ Œ‘ 时o首先设置参数的个数o然后对参数的输入!输出连线o这样就可以 / ≤ µ¨ ¤·¨ q¦ƒ ¬¯¨ 0Λ在q¦Ùq¦³³文件中 ¤¥∂ Œ∞• 已给出了虚参的类型o但有些参数类型是 ¤¥∂ Œ∞• 自定义的o在 ≤ Ù≤ n n 环境下编程时o我们必须知道该类型所代表的具体意义 或能够操纵这些类型的参数Λ 例如o我们可以在 ¤¥∂ Œ∞ • 后面板看出 ¬¶·¥²¬ ≤ ²±·µ²¯ 所代表的数据类型为 ¬±·vuo用它和一个 ‘∏° µ¨¬¦Œ±§¬¦¤·²µ≤ ²±·µ²¯相连时o后者的显示 值总为前者的选中项基于 s 的索引Λ 当用 ¬¶·¥²¬ 作为 ≤ Œ‘ 的唯一输入时o / ≤ µ¨ ¤·¨ q¦ ©¬¯¨ 0o≤ Œ‘• ∏± 的函数原型如下} ≤ Œ‘  ª∞µµ≤ Œ‘• ∏±k¬±·vu 3 ¬¶·¥²¬l~ 通过试验o发现k3 ¬¶·¥²¬l的值仍为选中项的基于 s 的索引o这样我们就知道了参数 ¬¶·¥²¬ 所代表的意义Λ 又如 ƒ ¬¯¨ °¤·« ≤ ²±·µ²¯o 当用它作为 ≤ Œ‘的唯一输入时生成的 ≤ Œ‘• ∏± 函数原型为} ≤ Œ‘  ª∞µµ≤ Œ‘• ∏±k°¤·« °¤·«l~ 在头文件 ¬¨·¦²§¨ q«中找到类型 °¤·«的有关定义如下} f §¨ ©¬±¨ °µ¬√¤·¨k× l ·¼³¨ § ©¨ ¶·µ∏¦·× f f ·¾√²¬§ 3 ³~ À 3 × f §¨ ©¬±¨ °µ¬√¤·¨‹ k× l ¶·µ∏¦·× f f ·~ ·¼³ §¨¨ © ¶·µ∏¦·× f f ·3 3 × °µ¬√¤·¨‹ k°¤·«l~ 此时o从编程的角度讲o我们对参数 °¤·«什么都不能做o但至少应该已经知道它表示文件 路径及相关信息Λ ¤¥∂ Œ∞ • 提供了有关文件操作的一系列 ≤ Œ‘ 函数}ƒ ≤ µ¨ ¤·¨o ƒ ≤ ²³¼o ƒ ƒ ∏¯¶«oƒ • °¨ ²√¨等Λ 有关 ≤ Œ‘函数的更多帮助o参见 ¤¥∂ Œ∞ • 联机帮助文档Λ vw 第 v期 刘红显等}¤¥∂ Œ∞ • 的外部代码接口 下面我们尝试一个更为复杂的例子Λ 在¤¥∂ Œ∞• 前面板上首先布置一个 ≤ ∏¯¶·¨µo 然后依次往 ≤ ∏¯¶·¨µ中拖入 ≥·µ¬±ª ≤²±·µ²¯ oƒ ¬¯¨ °¤·« ≤²±·µ²¯ o„ µµ¤¼各一个o最后往 „ µ2 µ¤¼中拖入一个‘∏° µ¨¬¦≤²±·µ²¯ Λ 切换到后面板o布置一个 ≤Œ‘o然后 ≤ ∏¯¶·¨µ与 ≤Œ‘之 间连线o最后生成 ≤Œ‘源代码文件k已添加了必要的代码l如下} f ¬±¦¯∏§¨ / ¶·§¤©¬q«0 ÙÙ·«¬¶ ¬¯±¨¬¶± ¦¨¨¶¶¤µ¼ º «¨ ± ∏¶¬±ª∂ ¬¶∏¤¯ ≤ n n f ¬±¦¯∏§¨ / ¬¨·¦²§¨ q«0 ·¼³¨ §¨ ©¶·µ∏¦·¾ ÙÙ¤µµ¤¼ ·¼³¨ §¨ ©¬±¬·¬²± ¬±·vu §¬°≥¬½¨ ~ ©¯²¤·yw ‘∏° µ¨¬¦≈t ~ À × ⁄u~ ·¼³¨ §¨ ©× ⁄u 3 3 × ⁄u‹ §¯~ ·¼³¨ §¨ ©¶·µ∏¦·¾ ÙÙ¦¯∏¶·¨µ·¼³¨ §¨ ©¬±¬·¬²± ≥·µ‹ ¤±§¯¨≥·µ¬±ª~ ÙÙ¶·µ¬±ª¦²±·µ²¯ °¤·« °¤·«~ ÙÙ©¬¯¨ ³¤·«¦²±·µ²¯ × ⁄u‹ §¯ „ µµ¤¼~ ÙÙtp ⁄ ¤µµ¤¼ À × ⁄t~ ¬¨·¨µ± / ≤ 0 ≤Œ‘  ª∞µµ≤Œ‘• ∏±k× ⁄t 3 ≤ ∏¯¶·¨µl ¾ Ù3 ∞‘× ∞• ≠ ’ ˜ • ≤ ’ ⁄∞ ‹ ∞• ∞ 3 Ù µ¨·∏µ± ±²∞µµ~ À 有了前面的阐述o相信有 ≤Ù≤ n n 背景的¤¥∂ Œ∞• 开发者完全能读懂上面的代码Λ 更重要的是o这些代码能帮助我们能更深入地理解¤¥∂ Œ∞• 的一些控件o认识它们的本 质Λ 这样o我们在用¤¥∂ Œ∞• 开发应用程序时o能更加熟练地驾驭¤¥∂ Œ∞• o高效地开 发出高质量的应用程序Λ 3 应用实例 用¤¥∂ Œ∞• 不支持的数据采集卡采集数据o数据采集卡的驱动程序一般要设计者 自己编制o这时可以选择使用 ≤Œ‘Λ 笔者曾使用过 • i • ¤¯¥2„ ≤ tsxyo¤¥∂ Œ∞• 后面板 如图 v所示Λ 图 v 用 • i • ¤¯¥2„ ≤ tsxy进行数据采集 相应的数据采集代码如下} f ¬±¦¯∏§¨ e¶·§¤©¬q«e ww 湖南大学学报k自然科学版l ussu年 f ¬±¦¯∏§¨ e ¬¨·¦²§¨ q«e f ¬±¦¯∏§¨ e¦²±¬²q«e ·¼³¨ §¨ ©¶·µ∏¦·¾ ¬±·vu §¬°≥¬½¨ ¶≈u ~ ¬±·vu ¤µªt≈t ~ À × ⁄t~ ·¼³¨ §¨ ©× ⁄t 3 3 × ⁄t‹ §¯~ ¬¨·¨µ± e≤ e ≤Œ‘  ª∞µµ≤Œ‘• ∏±k¬±·vu 3 ¶·¤µ·¬±ª≤«o ¬±·vu 3 ³²¬±·¶o ¬±·vu 3 ¦«¤±±¨¯¶o ¬±·vu 3 ©µ¨ ∏´¨ ±¦¼o × ⁄t‹ §¯ √¤µxl ¾  ª∞µµµ¨¶€ ±²∞µµ~ k3 √¤µxl2 §¬°≥¬½¨ ¶≈s  € 3 ¦«¤±±¨¯¶~ÙÙ·²·¤¯ µ²º¶¬¶¦«¤±±¨¯¶ k3 √¤µxl2 §¬°≥¬½¨ ¶≈t  € 3 ³²¬±·¶~ÙÙ·²·¤¯ ¦²¯∏°±¶¬¶¶¤° ³¯¨³²¬±·¶ ¬±·vu 3 ³• ¶¨∏¯·€ i kk3 √¤µxlp  ¤µªt≈s l~ÙÙ¬±¬·¬¤¯ ¤§§µ¨¶¶²©·«¨ µ¨¶∏¯· ©²µk¬±·°€ s~°  3 ³²¬±·¶~° n n l ¾ ©²µk¬±·¬€ s~¬ 3 ¦«¤±±¨¯¶~¬n n lÙÙ¶¤° ³¯¨§¤·¤·«µ²∏ª« ¤¨¦«¦«¤±±¨ ¯ ¾ ÙÙ¶¤° ³¯¨¦²§¨ ¶¤§§«¨ µ¨ ÙÙ·²¶·²µ¨ §¤·¤o ∏¶¨ 3 k³• ¶¨∏¯·n ¬3 3 ³²¬±·¶n °l€ qqq À ÙÙ§¨ ¤¯¼ ·¬°¨·¬¯¯ ± ¬¨·¶¤° ³¯ ¨ À µ¨·∏µ± µ¨¶~ À 使用时o只需在前面板上输入起始通道!通道数!采样点数!采样频率o • ¤√ ƒ¨²µ° Šµ¤³« 便可显示出各个通道所采集数据的波形Λ 4 结束语 ⁄和 ≤Œ‘的使用有其相似之处}都需要制作动态链接库o但 ≤Œ‘不需要输出库函 数Λ 若选用 ∂ ¬¶∏¤¯ ≤ n n 制作 ⁄o则有以下不同点}制作 ⁄可选用 • ¬±vu ⁄¼±¤°¬¦2 ¬¯±® ¬¥µ¤µ¼或  ƒ≤ „ ³³• ¬½¤µ§k§¯ l¯~制作 ≤Œ‘只能用 • ¬±vu ⁄¼±¤°¬¦2¯¬±®¬¥µ¤µ¼Λ二 者又各有优缺点}≤Œ‘的制作过程复杂一些o但 ≤Œ‘所支持的参数类型比 ⁄函数多o 可以是¤¥∂ Œ∞• 能自定义的任何数据类型Λ 参考文献} ≈t  刘君华o等q虚拟仪器图形化编程语言 ¤¥∂ Œ∞• 教程≈  q西安}西安电子科技大学出版社qusstq ≈u  汪敏生译著Λ ¤¥∂ Œ∞ 基础教程≈  q北京}电子工业出版社oussuq xw 第 v期 刘红显等}¤¥∂ Œ∞• 的外部代码接口
/
本文档为【LabVIEW的外部代码接口】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索