LabVIEWCompactRIO 开发指南17 网络流 点击:14 | 回复:0



fjczd

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

LabVIEWCompactRIO 开发指南17

网络流

网络流类似于队列函数,因为它们是基于FIFO的,但与队列函数不同的是,网络流具有网络作用域。它们是为通过以太网进行无损、高吞吐量数据通信而设计和优化的,并且它们具有增强的连接管理功能,如果由于网络中断或其他系统故障而断开连接,则可以自动恢复网络连接。流使用缓冲的无损通信策略,确保写入流的数据永远不会丢失,即使在具有间歇性网络连接的环境中也是如此。

由于网络流构建时具有与原始TCP相当的吞吐量特征,因此它们非常适合程序员希望避免TCP复杂性的高吞吐量应用程序。还可以使用流进行无损、低吞吐量的通信,例如发送和接收命令。

网络流使用单向点对点缓冲通信模型在应用程序之间传输数据。这意味着一个端点是数据的写入者,另一个端点是读取者。应用程序可能需要多个流来通信多种类型的数据,如图4.13所示。

4.13 网络流使用单向、点对点缓冲通信模型

4.13显示了一个基本的Network Streams实现。一个进程在实时目标上执行,另一个进程在主机上执行。可以遵循三个基本步骤来设置网络流:

1. 创建端点并建立流连接

2. 读取或写入数据

3.销毁端点

创建端点

一旦创建了兼容的读取器和写入器端点,就建立了连接。创建端点的顺序并不重要。流要尝试重新连接,必须至少有一个端点处于活动状态。

4.14 创建读取器和写入器端点。

如果发生断开连接并且一个端点变为非活动状态,则协议将在后台自动执行重新连接。该协议永远重试,保持数据流的无损特性。当协议尝试重新连接时,活动端点输出一条错误消息,通知用户端点无法重新同步。还可以使用图4.15所示的网络流端点属性节点来监视流是否连接。

4.15 使用属性节点监视网络流端点连接状态

读写数据

当读取或写入网络流时,可以一次写入单个元素或多个元素,这取决于选择的网络流函数。数据永远不会被覆盖或重新生成,也不会发生部分数据传输。读/写函数要么成功要么超时。

4.16 网络流的基本实现,通过网络传输数据

销毁端点

在销毁网络流端点之前,可以使用刷新流。VI以确保所有数据都已从写入器端点传输。如果选择AllElements Read from Stream,则写入器端点不会销毁自己,直到写入器缓冲区中的所有元素都被放入并从读取器缓冲区中读取。如果选择“All Elements Available for Reading”,一旦所有元素被放入读取器缓冲区,写入器端点就会自行销毁。

4.17 使用冲洗流,VI关闭网络流

 

 

 

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




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师