LabVIEWCompactRIO 开发指南20 应用程序接口 点击:37 | 回复:0



fjczd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:552帖 | 36回
  • 年度积分:703
  • 历史总积分:1294
  • 注册:2008年8月14日
发表于:2023-05-16 09:18:53
楼主

应用程序接口

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开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师