文章目录
DataSocket
套接字(Socket)是网络应用层与TCP/IP协议族传输层中间的软件抽象层。
DataSocket是一项基于TCP/IP协议的技术,它可以在测量和自动化应用中用于共享和发布实时数据。
它并不是一种协议,而是封装了TCP/IP协议族的应用程序编程接口(API),实质是一个基于URL的单一的一元化末端用户API,它独立于协议、语言和操作系统。
DataSocket包括DataSocket Server Manager、DataSocket Server和DataSocket函数库三部分,及DSTP协议、URL、和文件格式等规程。
DataSocket提供三种数据目标:File、DataSocket Server、OPC Server,支持多进程并发。
通过TCP/IP协议进行多客户端数据传输时,需要编写代码维护与每个客户端间的连接。此外,TCP/IP以字节流形式传递数据因此通常会在发送端和接收端都需要进行应用程序数据结构或类型到字符串的转换才能进行传输。
DataSocket封装并优化了通信连接的维护和数据类型的转换工作,仅保留打开链接、数据读写和关闭链接等编程接口。
DataSocket通过URL定位数据源和目标,其中数据源可来自以下类型服务器
HTTP
FTP
OPC
DSTP
本地文件
DataSocket URL格式通常包括协议标识、数据源标识和数据标识。数据源位置可以是网络上的设备名称或IP地址,数据标识用于标记存放数据的缓冲区。
1 传输协议(http、ftp、dstp、file等)
2 数据源位置(网络上的计算机名,IP等)
3 数据缓冲区标识(在read/write操作中使用)
实现
无缓冲单向通信
打开DataSocket Server服务器
写
1 打开DataSocket链接,创建一个URL
2 发送数据至服务器
3 关闭连接
读
1 打开链接
2 读取数据
3 关闭连接
用数据绑定也可以做出相同的效果。
发送端
1 在前面板放置波形图表,右键-属性-数据绑定,把波形图表绑定至DataSocket,设置只写。
2 写一个使波形图表值改变的小程序
接收端
1 1 在前面板放置波形图表,右键-属性-数据绑定,把波形图表绑定至DataSocket,设置只读。
2 将波形图表放入while循环中。
通过前面板绑定,无需对程序框图进行任何操作便可更新绑定至DataSocket URL值的显示控件。相反,数据读取波形图将随时更新发布至服务器的新数据。这样程序框图只需确保VI保持运行,直至按下停止按钮。
数据读写在无缓存的情况下进行时,接收端收到的数据始终是发送端上传到服务器的最新值。在发送速度快于接收速度时,数据将会丢失。
要在客户端进行带缓冲的数据读取操作,可以在打开DataSocket连接后,通过连接的属性设置缓冲区大小(也可以直接通过URL后添加参数最大字节和最大包数量来设置,如dstp://server/numeric?maxbytes=1000&maxpackets=10),并在读取过程中通过BufferUtility属性监控缓存区使用情况,必要时对缓冲区大小进行调整。
用DataSocket传输图像时,需要先将图像转换成字符串再发送,如果直接传视觉函数的输出的话,则实际上传输的是指向图像的指针或引用。