labview tcp/ip通信简介
TCP节点介绍
在LabVIEW中,可以采用TCP节点来实现基于TCP协议的局域网通讯,该节点在FUNCTION/COMMUNICATION/TCP下,该节点分为三个部分:
Connection节点:用于建立客户机和服务器之间通讯的连接
Transmission节点:用于在客户机和服务器之间传输数据
Conversion节点:用于计算机IP地址和计算机名称间的切换
双机TCP通讯流程
两种通讯方式
多机都采用LabVIEW进行通讯
在多机采用LV中TCP实现的通讯,一端我们设定为服务器端,一端为客户端。这样在运行的时候服务器端不断的侦听,当有客户端连接的时候进行建立连接,然后收取和发送数据形成通讯,客户端运行后不断的与服务器端进行试探连接,如果没有连接上做一定的处理,当连接上后进行收发数据进行处理。该VI图结 构如下
通过以上方式,可以方便的实现多机进行通讯。
有一端采用LabVIEW另一端是其他的工具实现进行通讯
在实际工作当中,有的时候下位机或者其他的机器使用其他的语言或者组态工具实现,这个时候在实现TCP之间进行交互通讯的时候,我们就不能象上面多 机都是LV编写的通讯那样处理了,如何去实现呢。经过研究发现,LabVIEW提供了运行控制技术,在Semaphonre技术中,该功能可以限制任务数目,这些任务可以同时堆一个共享资源进行操作。所以大胆采用共享资源操作信息,将其他端设置为服务器端,本端为客户端,进行操作,这样受保护的资源或者临 界区进行外部通讯,我们可以利用该技术同步多个相互独立的、并行的任务,这样可以利用一个公用的Semaphore可以在某一时刻仅允许一任务执行该图是简要的功能显示,具体有兴趣的读者可以根据上面的提示使之完善
注意事项:
当建立客户端和服 务器端之间的通讯时候,除了指定Internet地址之外,还必须指定通讯端口号,端口号的范围是0到65535,该端口号区分不同的通讯服务,这样很容 易的管理多个通讯连接。端口号最好手动设置,最好不要低于1000(由于该低于1000的一方面防火墙可能会禁止并且1000以下的端口号是保留个特定用 途的
客户端和服务器端要指定端口,同时这两个端口必须相同,才能进行有效的通讯
在客户端首先要指定服务器的名称才能与服务器建立连接,服务器的名称是指服务器端的计算机名,若在同一台计算机上运行时候,客户端的输入服务器名称既可以是该台计算机名称也可以是LOCALHOST
在与多机并且与其他语言的接口的时候,按照以上3点执行外,加上了执行了排队,这样在连接成功后进行数据相互交换,交换完毕后断开连接,然后与下一个连接。这样依次执行程序。形成临界区保护
总结:
在LabVIEW的TCP中用于两个应用程序进行数据共享,缺点是它不是实时的。但由于TCP/IP的普及,应用范围不断的扩大,以上两点包含大多数的应 用,我们也可以采用WINDOWS的ACTIVEX控件WINSOCK来实现。具体的我将在以后的文章中做专门的介绍。
如果需要采用实时数据传输,可以采用DataSocket技术,该技术是一项在测量和自动化应用中用于共享和发布实时数据的,并且可以在任何编程环境中应用。
看看
瞧瞧
瞅瞅
感觉很厉害
学习
有点疑问,打开labview中的服务器范例,可以看到在每次写入数据后都会关闭tcp连接,如果把tcp连接去掉的话客户端无法收到服务器端的数据,请问这是为什么 ?
难道在每次写入数据后都应该关闭tcp连接?
菜鸟一个,正在学习中
好东西啊,可以学习学习啊!
太赞了,为我这种入门的实习生点亮了一盏明灯啊
学习中,十分感谢
kankanfffffffffffffffffffffffffffff
你好 这个地方怎样实现一个服务器 对多个客户端的管理 是通过端口号么 但是通过端口号 相当于建立多个连接 这个地方是怎样实现的 我们跟一个客户端通信的时候 就要断开另外的连接 当换连接的时候怎样重新连接
问一下,有没有tcp/ip双向通信的demo,就是两台电脑之间需要相互通信,谢谢
很不错的设计思路,你值得学习研究
需要硬件的服务器来实现吗?
正想学习呢,多谢多谢
好好學習
厉害 1111111111111111111111111111
好像有点复杂,不太明白哦
学习
你好!现在知道TCP/IP怎么在两台电脑之间通讯了吗?或者有DEMO? 知道的话可以、可以麻烦你提点下
有没有源代码,学习下啊
我两台电脑在CMD下可以ping通,可是客户端访问时,总是报错 ..
你好 请问你知道服务器对多个客户端端口号管理时端口号的设置了吗? 抱歉过了这么久还打扰你哈哈
看看,应该会有帮助