LabVIEWCompactRIO 开发指南20 应用程序接口

news/2024/7/8 5:51:22

应用程序接口

STMAPI如图4.24所示。对于基本操作,它由一个读VI和一个写VI组成。它还具有两个补充VI,以帮助传输元数据,但它们的使用不是强制性的。每个主要的VI都是多态,这意味着可以将它们与不同的传输层一起使用。本文档讨论基于TCP/IP协议的STM通信,但STM也使用UDP和串行作为传输层。每个层的API是相似的。

图4.24.STM函数

STM写如元

使用此VI将元数据信息发送到远程主机。为了正确解释消息,元数据在接收端和发送端必须一致。不应在每个主机上维护数据的副本,而应维护服务器上的元数据,并在客户端连接时使用此VI将其发送到客户端。

STM读取元

使用此VI从远程计算机接收元数据信息。它读取和解压缩元数据数组,可以将其传递给读写VI。

STM写消息

使用此VI将任何类型的数据发送到远程主机。它根据数据、数据名称和元数据信息创建数据包。调用此VI时,它会检索元数据数组中名称指定的变量的索引。然后,它组装消息数据包,并使用连接ID通过TCP/IP将其发送到远程主机。

数据必须为字符串格式才能传输。使用“Flatten to String”函数将消息数据转换为字符串。

STM读取消息

使用此VI从远程主机接收任何类型的数据。它读取和解压缩元数据索引和平展字符串数据。它查找meta元素并将其与数据字符串一起返回。然后,应用程序可以使用名称或其他元属性作为指导,将平展数据转换为消息数据类型。在下面的示例中,名为“RandomData”的变量始终转换为“Array of Doubles”数据类型。

该VI通常在循环中使用。由于不能保证数据会在给定时间到达,因此请使用“timeout”参数允许循环定期运行,并使用“超时?”指示器来了解是否处理返回的值。

举例

图4.25显示了STM用于通过网络发送RandomData和Iteration数据的基本示例。服务器VI如图4.25所示,客户端VI如图4.26所示。请注意,服务器VI会在建立连接后立即将元数据(实现为字符串数组)发送到远程主机。该示例写入两个值:迭代计数器和双精度数组。元数据包含这两个变量的说明。

只需将变量名称连接到STM Write Message VI,该VI负责为您创建和发送消息数据包。由于这种抽象,可以按名称发送数据,同时隐藏TCP/IP协议的基础复杂性。

另请注意,应用程序在发送数据之前将数据平展为字符串。对于简单数据类型,可以使用类型转换,它比平展到字符串函数略快。但是,“Flatten to String”函数也适用于复杂的数据类型,例如簇和波形。

图4.25.RT目标VI使用STM通信将数据发送到客户端

可以自定义协议并对其进行扩展以满足应用程序要求。添加变量时,只需向元数据数组添加一个条目,并为该变量添加相应的STM Write Message VI。

接收数据也很简单。图4.26中所示的设计模式在与服务器建立连接时等待元数据。然后,它使用STMRead Message VI来等待传入的消息。当它收到消息时,它会转换数据并根据元数据名称将其分配给本地值。

由数据名称驱动的Case结构提供了一种用于处理数据转换的可扩展方法。添加变量时,只需使用代码创建一个案例,即可将变量转换为正确的类型并将其发送到正确的目标。请注意,外部Case结构处理超时事件。

图4.26.主机VI使用STM通信读取传入数据

此设计模式的一个优点是,它集中了接收数据的代码并将其分配给本地值。

另一个优点是STM读取消息VI在接收数据(或发生超时)之前一直处于休眠状态,因此循环以传入数据的速率驱动。这保证不会丢失任何数据,也不会浪费CPU时间来轮询传入数据。

注意:由于客户端在运行时之前不知道元数据,因此必须确保应用程序处理所有可能的传入变量。最好实现“默认”情况以捕获任何“未知”变量作为错误条件。

有关STM的更多信息,请查看以下有关ni.com的白皮书:

LabVIEW Simple Messaging Reference Library (STM)

Command-Based Communication Using Simple TCP/IP Messaging

A Multiclient Server Design Pattern Using Simple TCP/IPMessaging

需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。


http://lihuaxi.xjx100.cn/news/1137264.html

相关文章

10个学习Python的理由以及Python的优势有哪些?

Python的由来 Python的创始人是吉多范罗苏姆,1989年他在阿姆斯特丹的CWI工作,圣诞节期间,吉多范罗苏姆为了打发圣诞节的无聊,决定开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选择Python作为编程语言的名…

项目管理:(三)项目整体管理

三、项目整体管理 3.1 项目整体管理概述 3.1.1 项目整体管理的含义、作用、过程 项目整体管理包括为识别、定义、组合、统一和协调各项目过程组的各种过程和活动而开展的工作,是项目管理中一项综合性和全局性的管理工作。 项目整体管理6个过程 1、制定项目章程…

AD9680+JESD204B接口+FPGA FMC高速率数据采集板卡

板卡概述: 【FMC_XM155】 FMC_XM155 是一款基于 VITA57.1 标准的,实现 2 路 14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。 该模块遵循 VITA57.1 规范,可直接与 FPGA 载卡配合使用,板 卡 ADC 器件采用…

markdown神器 -Typora使用教程笔记2023最新版

文章目录 前言一、下载安装包和魔法工具二、第一步 选择为所有人安装三、第二步 创建桌面快捷方式四、第四步 安装五、第五步 完成安装六、第六步 取消勾选自动更新七、第七步 将魔法文件放在安装路径的根目录八、第八步 恭喜你,激活完成总结魔法工具获取方式 前言 …

探索三维世界【4】:Three.js dat.gui gsap 的使用

探索三维世界【4】:Three.js & dat.gui & gsap 的使用 1、dat.gui是什么?2、gsap的介绍与使用2.1、前提准备工作(绘制一个BoxGeometry)2.2、安装引入gsap动画库2.3、使用gsap动画2.4、配合事件使用 3、使用dat.gui3.1、添…

浅谈Gradle构建工具

一、序言 常见的项目构建工具有Ant、Maven、Gradle,以往项目常见采用Maven进构建,但随着技术的发展,越来越多的项目采用Gradle进行构建,例如 Spring-boot。Gradle站在了Ant和Maven构建工具的肩膀上,使用强大的表达式语…

Mars3d实现单击按钮高亮矢量对象

调用高亮的关键代码: let graphictruck new mars3d.graphic.ModelEntity({ position: [116.327881, 31.018378, 5000], style: { url: //data.mars3d.cn/gltf/mars/qiche.gltf, heading: 90, scale: 0.9, …

No module named ‘pycocotools._mask‘

1)先安装Microsoft C Build Tools 下载地址: 2) First open a command prompt and run(打开终端) git clone https://github.com/pdollar/coco.git 3) Then move to this directory(然后进入到 目录) cd…