【LabVIEW开发】如何使用UDP协议进行通信

海上月是天上月,眼前人是心上人

一、 UDP简介

  Internet 协议集支持一种无连接的传输协议,该协议称为用户数据报协议(User Datagram Protocol)即UDP。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法,对应的需要建立连接才能发送数据包的Internet协议就是TCP。
  由于UDP是一种无连接的传输层协议,因此不对传送数据包进行可靠性保证,UDP传输的可靠性由应用层负责,这是UDP的缺点。
  但是,UDP的优点也很明显,无需连接开发简单,数据传输过程中延迟小、数据传输效率高,适合于一次传输少量数据,或者一点对多点的通信情况。所以通常音频、视频、监控界面等传输时通常使用UDP,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大的影响。
  在LabVIEW中,对UDP协议进行了高度封装,我们只需要简单调用这些封装的函数,就可以比较轻松地实现以太网通信。UDP函数模块位于:右键程序框图面板→函数面板→数据通信→协议→UDP即可进如UDP函数子模块。
  下面我们通过一个实例,来比较详细地讨论一下在LabVIEW中如何使用UDP进行数据通信。

二、实战练习

① 示例说明

  平时我们从网上查到的UDP教程或者编程书籍上给的示例一般都是这样的:先建一个VI程序,作为UDP服务端,用于发送数据;然后再建一个VI程序,作为UDP客户端,用于接收数据。一个VI发送,一个VI接收,这看起来弄得UDP像一个半双工协议,其实不是的。在LabVIEW中UDP协议不像TCP协议,是没有严格的服务器端和客户端之分。
  为了让大家更好的理解UDP通信,本示例用一个单独的VI程序作为服务端,与网络调试助手进行UDP通信,双方之间同时进行数据的发送和接收,VI程序发送给数据给网络调试助手,然后接收网络调试助手发送过来的数据并在前面板显示出来,而网络调试助手可以清楚的显示接收和发送的数据。
  当然,两个LabVIEW UDP程序之间的通信更简单,程序基本是一样的,大家感兴趣可以自己去尝试一下;也可以将编写的LabVIEW程序与具备网口的硬件如单片机、PLC等用网线连接起来,让LabVIEW与各种硬件进行UDP通信,也是很容易实现的操作。后面有时间我再写一下LabVIEW如何与西门子S7-1200进行以太网通信。

② 服务端程序设计

  服务端是一个VI程序,由于服务器端和客户端都是在同一台电脑上方运行,所以远程地址直接使用“127.0.0.1”,当然也可以使用本机的静态IP地址。
  VI程序比较简单,设置一下本地和远程端口,就可以进行数据的发送和接收。发送端先将一个6个元素的布尔数组转化为一个字符串,当数组元素为0时,字符串为AABB CCDD;当数组元素为1时字符串为1122 3344(16进制字符串,总共4个字节)。那么最后写入UDP的字符串数据就是:AABB CCDD 1122 3344 AABB CCDD 1122 3344 AABB CCDD 1122 3344,总共24个字节的16进制数据。
  UDP读取模块直接接收客户端发送过来的数据,并在前面上显示出来。实现方法如下:


③ 客户端使用说明

  客户端是一个网络调试助手,在网上可以下载,各种版本的功能都大同小异。先设置协议类型为UDP,然后设置本地主机地址、本地主机端口6060,再打开端口,就可以接收数据了。
  在发送端设置远程主机地址以及端口6050(也就是我们VI程序中的本地端口),然后在数据发送框中填写要发送的数据,并设置发送的循环周期,点击发送按钮,就可以以UDP协议周期性发送数据,我发送的一帧数据是:A1 A2 B1 B2 C1 C2 D1 D2 E1 E2 F1 F2 共12个字节的16进制数据。


三、小结

  1 .通过上面两图我们可以发现,VI服务端的前面板正常显了网络调试助手发过来的12个字节数据;而网络调试助手的数据接收栏也显示了Labview程序发送过来的24个字节数据。这也说明VI程序与网络调试助手之间的UDP通信是正常的。
  2 .服务端和客户端谁先启动都可以,对数据收发没有影响。
  3 .在Labview中,UDP的读取和写入模块都只支持字符串格式的数据,如果我们要发送或接收的数据是数组或者其他标量数据,都需要先进行数据处理转换成字符串后,才能使用UDP模块进行数据的收发。
  4 .LabVIEW中字符串的正常显示模式是ASCII模式,为了便于我们观察数据的收发,我们需要把前面板的2个字符串模块右键改为16进制显示模式;然后把网络调试助手的数据发送和接收模式都统一改为16进制模式,这样LabVIEW接收的字符串就不会显示乱码。

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

推荐阅读更多精彩内容