LabVIEW中的基本TCP/IP通信

概览

本文介绍了TCP/IP通信的基础知识。阅读本文需要具备一定的LabVIEW相关知识。如果您不熟悉LabVIEW,请先阅读LabVIEW教程,有助于理解本文。

内容

TCP通信协议

网际协议(IP)、用户数据报协议(UDP)和传输控制协议(TCP)是网络通信的基本工具。TCP/IP这一名称来自于两个最著名的互联网协议集——传输控制协议和网际协议。通过TCP/IP可实现单个网络内部或互相连通的网络(互联网)间的通信。

TCP/IP通信提供了一个简单的用户接口,使复杂的网络通信简单明了。关于TCP/IP通信工作原理的更多信息,请参考LabVIEW帮助中的LabVIEW在TCP/IP和UDP中的应用。 

在LabVIEW中使用函数»数据通信»协议»TCP选板上的TCP/IP函数进行TCP通信。与DAQ、仪器和文件I/O通信一样,该过程包括打开连接、读取和写入信息以及关闭连接。

对于大多数I/O通信,处理器总是作为客户端发起与磁盘驱动器服务器、外部仪器服务器或DAQ板卡服务器的连接。在TCP/IP连接中,计算机可作为客户端或服务器。以下的程序框图表示了一个客户端应用程序,它使用“TCP打开连接”发起到远程服务器的连接。服务器(又称伺服机)侦听远程连接并进行适当响应。

打开TCP连接

LabVIEW用户可开发用于TCP/IP通信的自定义应用程序。程序员同时负责开发客户端和服务器。 

由于任何人都可以发起服务器连接,因此可能需要服务器访问控制。以下程序框图显示了服务器如何使用“TCP侦听VI”的远程地址输出值来确定远程客户端是否具有访问服务器的权限。

TCP侦听VI

开发通信应用程序

大多数应用程序不只是写入和读取一个值。通信是一个使用具体协议完成的持续过程。例如,假设客户端以8位整型向服务器发送以下4个命令:

1 = 采集数据并确认
2 = 发送数据
3 = 获取状态
4 = 关闭连接

下图*显示了服务器如何接收这些命令。请注意,虽然包含相同的基本TCP函数,但周围的代码允许更复杂的连接和稳健的通信。

  • While循环包围VI的其余部分。如此一来,VI就可处理多个顺序连接,而不必在每个连接关闭后重新启动。VI无法处理多个同步连接。 
  • 外部的条件结构判断是否发生了有效连接。 

    • 如未建立有效连接,则不执行任何操作。 
    • 若发生有效连接,VI将进入While循环,从TCP/IP端口读取一个字节。该字节包含来自客户端的命令1~4。
    • 如果连接有效,但在读取超时时间内未收到命令,则内部条件结构的默认分支会向内部While循环的继续接线端发送TRUE值,以保持连接处于活动状态。
       
内部条件结构的默认分支发送TRUE值


以下程序框图*显示了内部条件语句的其他4个分支。每个分支处理一种服务器发送的特定命令。每个分支都向继续接线端发送信息,决定是否继续循环。需要注意的是,“退出”分支总是返回FALSE值。离开循环后,服务器关闭与客户端的连接。

 
 


这种类型的服务器架构可助您开发灵活的服务器,用于更加复杂的网络通信过程。您开发的协议可能比前文中的范例更加复杂。

*请注意,这些图像来自LabVIEW前期版本。数据线和函数图标的颜色可能与您的版本不匹配。但代码结构仍然适用。

LabVIEW中的TCP/IP范例

Was this information helpful?

Yes

No