搜故事,从300万个故事到海量知识百科的华丽转变!

在LabVIEW平台中 你会编程实现TCP数据通信么?

时间:2016-08-31

下面通过一个简单的例子,演示在LabVIEW中如何通过TCP协议实现两个程序之间的数据通信功能

提示:本文共有 2022 个字,阅读大概需要 5 分钟。

对于网络通信来说,LabVIEW平台本身提供了多种方法加以实现,如可以通过TCP协议、UDP协议、DataSocket技术、甚至远程面板通信技术等方式进行通信。

下面通过一个简单的例子,演示在LabVIEW中如何通过TCP协议实现两个程序之间的数据通信功能。

实例说明

编写两个程序,分别为服务器端程序和客户端程序。其中,服务器端程序开始运行时,处于等待客户端连接的状态中,一旦有客户端成功连接,则向客户端发送带有时间信息的字符串“I`m sever!”;客户端程序与服务器成功建立连接后,则读取服务器端发送的信息,并在前面板上显示出来,以此来实现服务器端与客户端的通信。

编程思路

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。使用LabVIEW基于TCP协议编写通信软件时,一般其整个传输过程如下:

(1)服务器通过主机名或者IP地址与端口号,建立侦听,等待客户端连接;

(2)客户端根据主机的IP地址和端口号发出连接请求;

(3)服务器与客户端建立连接后,通过读写函数进行TCP数据通信;

(4)关闭连接。

在LabVIEW中,提供了一组专门的相关TCP的操作函数,在后面板程序框图中进入函数数据通信协议中选择TCP可以进入TCP子模板,主要节点函数如下图所示。

使用上面的函数,下面分别给出服务器端程序和客户端程序的具体实现方法。

服务器端程序

服务器端前面板如下图所示,其中,“端口号”设置服务器程序的端口,该值即为客户端程序的要连接的服务器程序的端口标识值;“待发送字符串”为发送给客户端程序的内容,该处设置为“I`m sever!”。

服务器端程序框图如下:

在程序框图中,首先利用“TCP侦听”函数创建一个侦听,该函数需要2个关键参数:端口号和超时时间(单位为ms)。该示例超时时间设为-1表示永远不超时,即无限等待下去直到有一个客户端程序连接。该函数运行后返回一个“连接ID”参数,该参数是其它TCP相关操作函数的输入参数接口。利用“格式化日期/时间字符串”函数取得当前的系统日期及时间,然后与待发送的字符串连接后得到实际发送的消息内容,利用“写入TCP数据”函数发送到客户端程序即可。该例中采用了两个“写入TCP数据”节点函数发送数据,首先发送消息内容的字节数(此处使用“强制类型转换”函数将“I32”类型的长度数据转换为字符串),其次发送实际的内容字符串数据。这种先发字符串长度再发字符串内容的发送方式有利于客户端正确的接收数据。最后调用“关闭TCP连接”函数,退出程序。

客户端程序

客户端前面板如下图所示,其中,“端口号”即为服务器端程序设置的端口标识值;“IP地址”设置服务器端程序的IP地址,“已接收字符串”显示服务器端程序发送的消息及收到该消息时的时间信息。

客户端端程序框图如下:

在程序框图中,首先调用“打开TCP连接”函数建立与服务器端程序的连接,该函数需要2个关键参数:IP地址和端口号,即服务器端程序所在的主机的IP地址及服务器端程序设置的端口号。该函数与服务器端程序正确建立连接后返回一个“连接ID”参数,该参数是其它TCP相关操作函数的输入参数接口。与服务器端框图程序相对应,该程序也采用了2个“读取TCP数据”节点函数读取服务器端程序发送的数据,与“写入TCP数据”节点函数不同的是,该函数还需要一个参数:要读取的字节数。由于服务器端程序先发送的是总字节信息,因此客户端首先读取接收消息内容的字节信息,输入I32类型的常数“4”,表示读取4个字节的内容,然后将读取的字符串内容使用“强制类型转换”函数转换为“I32”类型的字节值,将字节值作为第2个“读取TCP数据”节点函数的读取的字节值参数,然后将实际的消息内容读出显示到前面板的“已接收字符串”控件上即可。这种方法是TCP通信中常用的方法,可以保证在不丢失数据的前提下有效地发送或接收数据。最后调用“关闭TCP连接”函数,退出程序。

总结

通过上面的程序可以看出,由于LabVIEW对TCP协议通信底层的具体实现方法进行了高度的封装,因此使用这些函数构建复杂、灵活的网络测试系统时,相对于其它高级编程语言,将会大大降低编程人员的开发难度,提高编程效率,这也是图形化编程语言的高效、简洁的魅力所在。

另外,需要说明的是:

(1)采用TCP节点通信时,在服务器端框图程序中必须指定网络通信端口,客户端也要指定相同的端口,才能与服务器之间进行正确的通信,如上面例子中指定端口号为1800。在一次通信连接建立后,就不能改变端口的值了。如的确需要改变端口值,则必须首先断开连接,才能重新设置新的端口值。

(2)在客户端要指定服务器的IP地址才能与服务器之间建立连接。若服务器和客户机在同一台机子上运行时,客户端框图程序中输入的服务器地址可以设置为下面任意一个值:“localhost”、“127.0.0.1”、空字符串或者当前计算机的名称。

如果你觉得这篇文章对你有用的话,收藏+点赞吧。

看到此处说明本文对你还是有帮助的,关于“在LabVIEW平台中 你会编程实现TCP数据通信么?”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
网络编程 UDP&TCP详解

网络编程 UDP&TCP详解

接收端,数据,网络,发送端,窗口大小,缓冲区,速度,字段,部中,慢启动,拥塞窗口,这个时候,吞吐量,增长速度,字节,时间,机制,服务器,通知,问题,阈值,流量控制,传输效率,创建一个,拥塞控制,给客户,网络吞吐量,重传,多大,回一

2011-09-03 #故事会

将计算机思维故事化——之计算机网络TCP拥塞控制算法

将计算机思维故事化——之计算机网络TCP拥塞控制算法

奏章,算法,驿卒,京城,地方官员,上呈,发送端,窗体,大小,网络,阶段,上限,治安,重臣,又一次,拥塞控制,指数增长,拥塞避免,时候,问题,通信,交通拥挤,时延,交通,皇帝,运行,恢复算法,重传,互联网,国事

2019-04-04 #故事会在线阅读

LabVIEW编程实例:趣味流水灯程序设计

LabVIEW编程实例:趣味流水灯程序设计

流水灯,代码,移位寄存器,函数,数值,控件,状态,结构,移动,板上,小程序,事件,功能,数组,程序,循环,事件中,位数,例子,时候,布尔,所示,设计,运行,退出程序,右移,左移,在事,小伙伴,中实

2012-12-05 #故事会在线阅读

手把手以实例教你学LabVIEW编程 事件结构框架

手把手以实例教你学LabVIEW编程 事件结构框架

事件,结构,代码,所示,鼠标,类型,如下图,信息,数据,程序框图,字符串,控件,按键,本例,界面,事件中,编程方法,函数,字符,方式,时间,框架,程序,软件,键盘,循环,运行,中事件,事件信息,日期时间

2011-10-12 #故事大全

手把手以实例教你学LabVIEW编程 顺序结构用法

手把手以实例教你学LabVIEW编程 顺序结构用法

顺序结构,随机数,时间,平铺,循环,运行,代码,所示,控件,数据,程序框图,过程,设计,如下图,个数,功能,内容,区别,语言,完全相同,局部变量,屏幕,帧数,方式,数值,本例,程序运行,空间,计数器,顺序

2020-09-06 #故事会在线阅读

为什么TCP建立连接协议是三次握手 而关闭连接却是四次挥手呢?

为什么TCP建立连接协议是三次握手 而关闭连接却是四次挥手呢?

协议,状态,机器,数据,三次握手,时间,这个时候,数据包,序列号,不玩了,发送数据,时序图,都会,信息,务器,原因,台服,台机,场景,新发,端口,过程,应用,什么是,为什么是,面向连接,可以选择,来看看,有所帮助,状态位

2020-06-08 #经典故事

《锦衣之下》:袁今夏不仅会编故事 真实情况让陆绎目瞪口呆

《锦衣之下》:袁今夏不仅会编故事 真实情况让陆绎目瞪口呆

故事,能力,丫鬟,娘娘,姑娘,夫妻,少爷,巨蟒,枫林,桃花,老者,这么大,冤情,大人,平台,想像力,捕快,桃花仙,群蛇,锦衣,龙胆,对话,生活,信口开河,来调,能博,陆大人,道来,班主,坳里

2010-01-25 #长篇故事

以实例跟我学LabVIEW编程:如何求解1000以内的所有素数

以实例跟我学LabVIEW编程:如何求解1000以内的所有素数

素数,循环,数组,移位寄存器,余数,子程序,整数,符合条件,程序,代码,函数,字符串,根号,自然数,问题,循环结束,个数,思路,条件,框图,结果,一个大,写一个,如何判断,判断是否,看一下,循环次数,转换为,电子表格,图中

2016-08-12 #故事会在线阅读