LabVIEW外部代码调用CIN/DLL

简介: LabVIEW外部代码调用CIN/DLL

LabVIEW外部代码调用CIN/DLL


一些关于在LabVIEW中调用外部代码的知识


解答:


调用外部代码


CIN和DLL基础


在LabVIEW 5.x中导入CIN


在LabVIEW基础版版中使用CIN


关于LabVIEW 5.x中调用外部代码的性能最优化问题


如何在Solaris上利用GCC编译CIN和共享库


Microsoft Visual C++能够创建32位代码的第一个版本


在LabVIEW中支持CIN的编译器


在LabWindows/CVI 4.x或者之后的版本中创建CIN


1.CIN & DLL基础


有一组关于排错指导的网页,它涉及了很多关于CIN和DLL的问题。这是一个很好的能够了解相关信息的网页。它一步一步的演示如何创建CIN,多线程和多线程安全(thread safe)环境以及一个在MS Visual C++ 5.0中如何创建CIN。能够通过访问技术支持网页在特定产品中选择LabVIEW,然后选择LabVIEW Programming >>Calling External Code找到这个帮助。在本网页的最后也有这样一个链接。


2. 在LabVIEW中导入CIN


当把在之前的LabVIEW版本(4.1.1或者更早)中创建的CIN导入LabVIEW 5.0的程序时,程序框图上的CIN结点将会从浅黄色变成橙色。这个表明CIN不符合多线程安全,因此它不能利用LabVIEW的多线程处理这个优势。


3. 在LabVIEW 基础版中使用CIN


尽管CIN在在LabVIEW 可以在基础版中使用并且它会出现在函数框中,但是对于应用程序的开发来说并不支持CIN。在基础版中不存在创建CIN对象文件时所必需的文件(.lsb)。


基础版的确允许使用CIN,但是它并不包括CIN需要的用来创建代码的工具。这也是为什么可以看到CIN在函数框中出现但是在LabVIEW的目录下并没有Cintools这个目录。以下是创建一个CIN的步骤:


把结点放在程序框图然后用线连接它的输入和输出。


在CIN的弹出菜单中创建.c文件。


编辑.c文件,插入代码。


通过.c文件创建一个代码源文件(.lsb)。需要“CIN Tools”来做到这一步。


从CIN的弹出菜单装载代码源文件(.lsb)


基础版不包括完成第四步所需要的工具。不过如果有之前存在的代码源文件(.lsb),还是可以在基础版中使用它们。如果希望创建这些源代码,必须使用LabVIEW完全开发版或者更高的版本。

a4f770627d423792be4045c208ef7fed.png

编辑


添加图片注释,不超过 140 字(可选)



4. 在LabVIEW 5.x中调用外部代码的性能最优化问题


必须考虑使用多线程安全(thread-safe)的CIN和DLL。如果一个CIN或者DLL能够可靠地由两个或者更多的独立线程来调用,那么这个CIN或者DLL就是多线程安全的(thread-safe)。由于非多线程安全(thread-unsafe)必须在用户界面的线程中才能运行,对此类CIN或者DLL的调用会使LabVIEW从程序框图的线程切换到用户界面的线程。这个切换的过程会占用额外的资源。此外,调用CIN或者DLL的线程在调用结束前不会把控制交还给用户界面的线程,所以在这个过程中用户界面会表现为没有响应的状态。LabVIEW默认所有的CIN和DLL都是非多线程安全(thread-unsafe)的。之所以这样的原因是因为如果LabVIEW把一个事实上是非多线程安全(thread-unsafe)的CIN或者DLL认为是多线程安全(thread-safe)的,将会导致计算机可能死机或者没有响应。如果LabVIEW认为某些CIN或者DLL是非多线程安全(thread-unsafe),那么在程序框图上的CIN和Call Library节点将会是橙色的。如果LabVIEW认为它们是多线程安全(thread-safe)的,节点将会是浅黄色的。


为了确认LabVIEW中调用的CIN是多线程安全的,必须在CIN中包括某些调用函数。关于这一点在下面在LabVIEW中调用外部代码的链接中有相关的讨论。也可以参见代码接口参考手册>>CIN高级主题的第三章来获得更多的信息。这个手册已经以pdf的格式附在下面的链接中。


5. 如何在Solaris上通过GCC编译CIN和共享库


有一篇知识库会讨论这一点,


6. 第一个能创建32位代码的Microsoft Visual C++的版本


根据微软的文档,Microsrft Visual C++ 2.0是VisualC的第一个能够创建32位的与32位版本的LabVIEW(适用于Windows 95和Windows NT 4.0)兼容的CIN的版本。唯一能够创建适用于与16位版本LabVIEW的CIN的编译器是Watcom。


7. 支持在LabVIEW中调用的CIN的编译器


需要支持LabVIEW 5.x中调用的CIN的编译器列表,可以参见代码接口参考手册,链接已经附在下面。这里有一个支持LabVIEW 4.1调用CIN的编译器列表:


Macintosh 68K: Think C 5,6,7 MetrowerksCodeWarrior C/C++ PowerMac: MetrowerksCodeWarrior C/C++ Symantec C++Version 8 Windows 3.1: Watcom Windows 95/NT: Microsoft VisualC++ Symantec C++ Win 32 MicrosoftSDK MPW Watcom C/386 forWindows 3.1 (当CIN没有调用DLL,没有系统级的调用或者没有调用内存/寄存器,I/O时才可用) Sun: ANSI-C GNU HP: HP-ANSI-C


8. 在LabWindows/CVI 4.x 或者以上版本中创建CIN


关于如何在LW/CVI中创建CIN的具体方法可以参见cvilvsb.h文件,这个文件能够在LabVIEW/cintools文件夹里面找到。其中有一些更正需要注意。这些更正在另外一篇知识库文章中已经有论述,可以从下面的链接中找到这篇文章。。


LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序,相关项目问题,可联系我们。


上文中提到的例子和资料,均在word中的附件里,可点击下载。

相关文章
|
机器学习/深度学习 JSON 数据格式
CatBoost模型部署与在线预测教程
CatBoost模型部署与在线预测教程【2月更文挑战第16天】
530 2
|
自然语言处理 JavaScript 前端开发
Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎
Duktape是一个可嵌入的Javascript引擎,主要关注便携性和精简及紧凑性。 Duktape很容易集成到C/C++项目: 添加duktape.c和duktape.h到您的build中,并使用Duktape API从C代码中,调用ECMAScript代码的功能,反之亦然。
1941 0
|
机器学习/深度学习 人工智能 自然语言处理
揭开AI的神秘面纱:人工智能简介
这是一篇人工智能简介,从人工智能的定义,起源,分类,相关技术,应用前景与存在的挑战几个方面介绍人工智能
|
SQL 监控 数据可视化
Google Analytics
【6月更文挑战第8天】Google Analytics
547 4
|
并行计算 数据可视化 数据处理
面向未来的数据科学工具链:Dask与Jupyter生态系统的融合
【8月更文第29天】随着数据量的不断增长,传统的数据处理方法已经难以满足科研和商业的需求。Dask 是一个并行计算库,能够有效地处理大规模数据集,同时它与 Jupyter Notebook 和其他数据科学工具的无缝集成,使得数据科学家能够构建更加高效的工作流程。本文将探讨如何利用 Dask 与 Jupyter 生态系统构建现代化的数据科学工作流,并通过具体的代码示例展示其实现过程。
253 1
|
存储 关系型数据库 MySQL
|
存储 前端开发 JavaScript
软件设计文档编写指南
软件设计文档编写指南
|
Java 关系型数据库 数据库
基于SpringBoot大药房管理系统(程序+数据库+文档)
基于SpringBoot大药房管理系统(程序+数据库+文档)
|
安全 Shell Linux
记录VulnHub 靶场——Escalate_Linux渗透测试过程
本文档描述了一次靶场环境的搭建和渗透测试过程。首先,提供了靶机环境的下载链接,并建议在VMware或VirtualBox中以NAT模式或仅主机模式导入。接着,通过Kali Linux扫描发现靶机IP,并用Nmap扫描开放端口,识别出80、111、139、445、2049等端口。在80端口上找到一个shell.php文件,通过它发现可以利用GET参数传递cmd命令。
793 0