【LabVIEW开发】如何使用LabVIEW进行TCP通信?

桃李春风一杯酒,江湖夜雨十年灯

一、 TCP简介

  ①特点

  TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP全称是:传输控制协议 (Transmission Control Protocol),在传输数据之前,必须使用严格的协议建立连接,也就是俗称的握手,握手成功才开始正确的交付数据。
  当连接到一个站点时,必须指明其地址和该地址的端口 : 地址是一个 32 位的数字,通常由32个以点分开的数组成的字符串表示,如 192.168.0.1;端口是介于 0和65535 之间的数,并且允许同时打开不只一个连接。
  优点:传输可靠稳定,即数据在传输过程中不会丢失;
  缺点:占用带宽较多,传输速率相对较慢。

  ②数据传输的流程

  客户端:

    (1)请求一个 TCP 连接(TCP open connection),可以设置超时以避免服务器未响应时挂起
    (2)读 /写数据,数据以字节流传递

  服务端:

    (1) 等待连接 ( TCP Listen )
    (2) 读 /写数据,数据以字节流传递
    (3) 关闭连接

  ③与UDP的区别

  我之前写过一篇关于LabVIEW UDP通信的文章LabVIEW如何使用UDP协议进行通信?大家可以参考对比下。后来我在网上找到一位大佬发布的图片,生动阐明了这两种传输协议的差别,我盗图过来给大伙瞧瞧!我只能说大佬不愧是大佬,废话一句没有,一图搞定所有:

二、 实战练习

  ①开发环境

   Win10家庭版(64位);LabVIEW2017(32位);网络调试助手5.0.2

  ②实例说明

  我写了两个简单的程序:Client端程序和Server端程序,然后分别与网络调试助手通信,并与网络调试助手之间进行数据的收发,为了方便数据展示,在前面板我把字符串显示框和字符串输入框均设置为16进制显示模式。LabVIEW与调试助手建立通信后,互相显示对方发送过来的数据。
  在LabVIEW中提供了多种网络通信方式:TCP、UDP以及Socket。与TCP相关的函数位于一个专门的面板中,如下图所示:



  使用该面板中的函数,就可以进行TCP相关的编程,下面给出了Client端和Server端的具体实现程序。

  ③Client端程序及结果

  TCP Client端前面板以及程序面板如下图所示,前面板比较简单,只有一个数据输入框(用来发送数据)和一个数据输入框(用来接收数据)。
  程序框图中,“打开TCP连接”模块有两个参数需要填写,分别是“IP地址”和“端口号”,即服务端程序所在主机的IP地址及服务器端程序设置的端口号,由于Client程序与调试助手都在一台主机上,所以IP地址直接用127.0.0.1,调试助手上端口号设置的是6666,所以程序上的端口号也设为6666。两个参数设置好以后,该模块就可以尝试与对应的Server端进行通信连接。
  “读取TCP数据”模块就是读取对应主机发送过来的数据,这个模块有个参数比较重要:读取的字节。Server端发送的数据有几个字节,这里就填写相应的数字,与发送端保持一致,不然会导致无法接收到数据或者收到的数据来回变动,不利于后期的数据处理,通信结束后断开连接。


Client端前面板及程序面板

  两端通信结果如下图所示:
  将网络调试助手设置TCP Server模式,然后设置好IP和Port,将发送和接收都设置为HEX模式,就可以与Client端通信了。分别在两端的数据输入框输入不同的数据,以便于观察。
  唯一需要注意一点就是,由于客户端的程序包含read和write两部分,当客户端和调试助手同时运行的时候,此时如果我们不点击调试助手的发送按钮,调试助手和客户端均收不到数据的,因为客户端的循环程序会卡在“read”这个模块这里,后面的write也就不会运行;所以,点下发送按钮或者勾选循环发送选项,双方就可以不停地收发了。
  通过下图可知,客户端收到了调试助手发送过来的数据,调试助手也受到了客户端发送的数据。


Client端运行结果

  ④Server端程序及结果

  TCP Server端前面板以及程序面板如下图所示,前面板与上面的client端是一样的,一收一发两个字符串框。程序面板的程序也大致一样,最大的不同就是“TCP侦听”模块,该模块需要设置IP地址和端口号,也就是服务端程序所在的主机的IP地址以及端口号。端口号可以随意设置,如果被主机的特定程序占用了,就换一个端口号。设置完以后参数以后,让程序运行,程序就开始监听,看是否有对应的客户端的尝试握手连接。


Server端前面板及程序面板

  两端通信结果如下图所示:
  将网络调试助手设置TCP Client模式,然后设置好IP和Port,将发送和接收都设置为HEX模式,就可以与Server端通信了。写入的字节这个参数可要可不要。


Server端运行结果

三、 小结

  (1)LabVIEW基于字节流的TCP传输协议决定了发送和接收的数据只能是字符串格式,一阵数据就是一个字符串,所以在对数据进行发送之前需要把不同类型的数据转换成字符串,然后再进行发送;数据转换部分可以参考我之前写的帖子。
  (2)在“读取TCP数据”这个模块上的“读取的字节数”这个参数一定要设置正确,不然接收到的会不停的滚动,为接下来的数据处理带来麻烦;例如我在上图Server端程序中设置该参数为8,但是我在网络调试助手里发送的一帧数据是18个字节,这个时候LabVIEW前面板读到的数据就会不停的滚动,这个时候就需要将该参数设置为18。
  (3)如果是在两台电脑上进行通信,那么需要两台硬件的IP地址设置为同一字段,不然将会出现无法连接的情况;由于我的LabVIEW编写的软件和网络调试助手都在一台电脑上运行,IP地址就可以直接使用“127.0.0.1”、空字符串或者使用本机设定的固定IP都行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容