LabVIEW开发TCP网络通讯程序3

简介: LabVIEW开发TCP网络通讯程序3

LabVIEW开发TCP网络通讯程序3


将状态转换为插件


现在已经了解了进程的基本操作,需要下面围绕它包装更多的逻辑,以将其转换为可用的代码。


添加关机和错误处理


首先,如果这个新进程要在测试平台应用程序插件定义的结构中灵活使用,那将需要一种机制来在应用程序的其余部分停止时自行关闭。由于该机制已经定义,要做的就是注册正确的事件(Stop Application)并添加一个事件处理程序以使其执行某些操作。


95256159c8271e3aaf0be70d12abdbc3.png


通常情况下:当关闭事件触发时,处理程序将要执行的下一个状态设置为0,并将超时设置为0。请注意,它实际上并没有停止循环-如果它停止了最后一个状态(关闭侦听器引用)将永远不会有机会执行。最后,还需要提供错误处理。

7b849fec77f45a904ede9e54e8e84acf.png



定义协议


随着新的中间件插件丝滑地嵌入测试平台框架中,下面需要创建处理网络交互的可重入连接处理程序。但是,在这样做之前,需要准确定义通信协议的外观。


网络的一个关键概念是层的概念。已经讨论了用于建立连接的TCP协议,但这并不是全部。TCP建立在称为IP的较低级别协议之上,该协议本身构建在用于处理物理接口等内容的更低级别的协议之上。此外,该协议栈还可以向上扩展。例如,VI服务器至少部分建立在TCP之上,现在将创建自己的协议来定义用户希望如何通过TCP进行通信。


这种分层可能看起来令人困惑,但它提供了巨大的价值,因为每一层都是一个模块化实体,可以在不中断其他所有内容的情况下进行交换。例如,假设用户换掉了计算机中的NIC(网络接口卡),堆栈中唯一需要更改的部分是连接到硬件的最低级别。


用户需要做的第一件事是定义将通过连接来回传递的数据,以及这些数据在TCP通信通道中时将如何表示。理想情况下,想要一种在功能方面灵活的数据表示,其数据表示是严格的,并且即使在像C++这样的原始语言中也易于生成。为填补这一利基市场而创建的第一个标准是HTML的衍生产品,称为XML。问题在于,虽然它在前两点上表现出色,但第三点是一个问题,因为当用于编码小型数据结构时,相同的功能使其非常灵活和严格,合谋使其非常冗长。或者换句话说,对于小型数据结构,XML文档中的数据密度非常低。


幸运的是,有一个替代方案非常适合我们需要做的事情:JSON。首字母缩略词代表“JavaScript对象表示法”,顾名思义,该表示法最初用于促进JavaScript应用程序中的数据传递。巧妙的是,许多JSON概念可以很好地映射到本机LabVIEW数据结构。例如,就数据类型而言,用户可以拥有字符串、数字和布尔值,以及这些数据类型的数组。定义JSON对象时,需要将其定义为这些基本数据类型的集合—有点像LabVIEW中对Cluster执行的操作。但是JSON还允许用户在新对象的定义中包含其他JSON对象,只是LabVIEW允许用户将clusters 嵌入到clusters 中。最后,为了锦上添花,地球上几乎所有的编程语言(包括LabVIEW)都支持该标准。


为了解工作情况,可以考虑温度控制器参数的情况。想要配置此值时,远程应用程序需要发送以下字符串:


{


"Target":"DogHouseTC",


"Data":{


"ErrorHighLevel":100,


"WarningHighLevel":90,


"WarningLowLevel":70,


"ErrorLowLevel":60,


"SampleInterval":1


}


}


此字符串定义一个包含两个项目的JSON对象。第一个被标记,它包含一个字符串,用于标识它想要配置的特定插件。第二个项目的名称被标记。此子对象有5个值,表示配置温度控制器所需的各个参数。如果用户想知道,代码是这样将该字符串解析回LabVIEW数据结构:TargetDogHouseTCData


c9ac224f8874c28c2cda2b54da84fa3e.png


没错,只需要一个内置函数和一个typedef簇。神奇之处在于字符串和簇代表完全相同的逻辑结构,因此LabVIEW的内置函数很容易从一个映射到另一个。

aab215359762dd6d5ecd10c74eba3111.png



需要注意的另一件事是,集群中的值有一个与之关联的单位,在本例中为毫秒。LabVIEW处理此情况的方式与一般处理单位的方式一致:当将数据转换为无单位形式(如JSON值)时,它使用数据类型的基本单位表示值。在所显示的例例中,是时间,时间的基本单位是秒,因此LabVIEW将1000毫秒表示为1秒(以JSON表示)。同样,当将字符串解展回LabVIEW数据结构时,该函数会解释在集群中定义的值基本单位的输入值。


在开始采集数据之前,仍然需要添加一些内容。首先,需要记住以太网是一种串行协议,因此,如果接收器可以提前知道预期的数据量,则使用起来要容易得多。为了满足这一需求,将附加一个2字节的二进制值,作为总消息。另外以某种方式判断消息是否完好无损且没有损坏,因此还将附加一个2字节的CRC。此外,为了使CRC易于其他应用程序生成,使用标准的16位CCITT形式的计算。因此,一个命令数据包的样子如下图所示。



c92c175974d4eda16c0bb0aa38970b33.png


同样,可以对响应消息使用相同的基本结构。所要做的就是将JSON“有效负载”重新定义为具有两个对象的JSON对象:一个数字错误代码(其中0=“无错误”),以及一个包含响应需要返回的任何数据的字符串。


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
机器学习/深度学习 小程序 算法
基于bp神经网络的adp程序
基于bp神经网络的adp小程序
366 0
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
678 61
Vite使用svg-企业级开发(支持本地svg和网络svg渲染)
本教程介绍如何在Vite项目中集成SVG图标插件。首先安装`vite-plugin-svg-icons`,配置插件指向SVG图标目录,并注册全局组件。接着创建SVG图标组件,支持内部图标与外部图片展示。通过简单配置,即可在页面中灵活使用各类SVG图标,提升开发效率。
648 0
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
监控 安全 网络协议
恶意软件无处逃!国内版“Manus”AiPy开发Windows沙箱工具,进程行为+网络传输层级监控! 头像 豪气的
NImplant.exe 是一款后渗透测试工具,可实现远程管理与持久化控制。其优点包括无文件技术、加密通信和插件扩展,但也存在被检测风险及配置复杂等问题。为深入分析其行为,我们基于 aipy 开发了 Windows 沙箱工具,针对桌面上的 NImplant.exe 进行多维度分析,涵盖进程行为、网络连接(如 TCP 请求、目标 IP/域名)、文件控制等,并生成传输层监控报告与沙箱截图。结果显示,aipy 工具响应迅速,报告清晰易读,满足分析需求。
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
667 12
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
652 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
485 10
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
461 10

热门文章

最新文章