应用程序DDE读组态王的数据

简介: 应用程序DDE读组态王的数据

DDE是英文Dynamic Data Exchange的缩写,即动态数据交换。它最早是随Windows3.1而被提出的。目前的操作系统中仍然支持DDE技术,但微软已经停止发展该技术,只是保持对DDE技术的继续兼容和支持。


两个同时运行的程序之间通过DDE方式交换数据时是Client/Server关系。一旦Client和Server建立了连接关系,则当Server中的数据发生变化后,就马上通知Client。通过DDE方式建立的数据连接通道是双向的,即Client不但能够读取Server中的数据,而且可以对其进行修改。


Windows操作系统中有一个专门协调DDE通信的程序DDEML(DDE管理库)。实际上,Client和Server之间的多数会话并不是直达对方的,而是经由DDEML中转。一个程序可以同时是Client和Server。


DDE的方式有冷连接(Cool Link)、温连接(Warm Link)和热连接(Hot Link)3种。在冷连接方式下,当Server中的数据发生变化后不通知Client,但Client可以随时从Server读/写数据。在温连接方式下,当Server中的数据发生变化后马上通知Client,Client得到通知后将数据取回。在热连接方式下,当Server中的数据发生变化后马上通知Client,同时将变化的数据直接送给Client。


1.应用程序通过DDE读组态王的数据

新建一个VB工程,添加一个窗体,该窗体命名为“frmViewToVB”。在窗体中添加文本框,如TEXT1表示上水箱液位。而上水箱液位在组态王的数据词典中是“T1LEVEL”,其定义如图所示。

这里要注意,要在“允许DDE”选项前打钩。而且,只有I/O类型的变量才能通过DDE与应用程序通信,内存变量不能通过DDE与应用程序通信。

afb48d44113f4ffca6a7ecbf0f2f7423.png

 液位变量定义串口

在VB的应用程序中,在frmViewToVB_LOAD中添加如下代码:

9361cdfc4abe45a8b0ddf60cbaf205ba.png


通过上述设置,分别运行组态王与VB应用程序后,VB应用程序就可以读取组态王中的“T1LEVEL”实时数据了。


2.组态王通过DDE读应用程序的数据

这里要实现组态王读取应用程序中的文本框txtName,该变量表示向组态王中传递当前要进行实验的学生的名字。这是一个字符串变量。


在VB项目中添加窗体“frmVBToView”

,设置该窗体的LinkMode属性为“1”,LinkTopic为“formVBtoView”。在该窗体中建立文本框“StuName”。把该工程保存为VBToViewDDE.vbp,然后选择“工程→属性窗口”,设置工程的应用程序标题为“vbtoview”。然后可以生成可执行文件VBToViewDDE.exe。


在工程浏览器中,从左边的工程目录显示区中选择“设备\DDE”,然后在右边的内容显示区中双击“新建”图标,则弹出“设备配置向导”,添加一个名为VBDDE的DDE设备,该设备配置如图所示。这里要特别注意的是,图5.12中的服务程序名是在VB工程中所设置的应用程序名字,而非生成的可执行程序的名字。如本例所示,这里应该填入“vbtoview”,而非“vbtoviewdde”。否则组态王运行系统会提示找不到DDE设备。话题名就是VB窗体“frmVBToView”的LinkTopic属性中设置的“formVBtoView”。另外,数据交换方式要选择“标准的Windows项目交换”而不是“高速块交换”,否则DDE通信也不成功。

4b098b2436cb4934af636c91ce58f206.png

DDE设备定义好后,就可以在数据词典中定义变量了。变量定义窗口如图所示。这里连接设备就是建立的名为vbdde的设备,而项目名要填写VB工程窗体中的文本框的名字“StuName”。

0e07d97eb01e4f548367064a4213964c.png

通过上述扩展,可以把在组态王中较难实现的功能在独立的应用程序中来实现,而相关的变量通过DDE通信实现。这样做的好处是可以充分发挥组态王开发监控系统的优点,又可以发挥高级语言编程的优点,实现更加复杂的控制、管理功能。

除了可以采用DDE外,组态王还支持OPC规范,因此,还可以采用OPC技术,来扩展组态王的功能

相关文章
|
Web App开发 缓存 JavaScript
【安装指南】nodejs下载、安装与配置详细教程
这篇博文详细介绍了 Node.js 的下载、安装与配置过程,为初学者提供了清晰的指南。读者通过该教程可以轻松完成 Node.js 的安装,了解相关配置和基本操作。文章首先介绍了 Node.js 的背景和应用场景,随后详细说明了下载安装包、安装步骤以及配置环境变量的方法。作者用简洁明了的语言,配以步骤图示,使得读者能够轻松跟随教程完成操作。总的来说,这篇文章为初学者提供了一个友好的入门指南,使他们能够顺利开始使用 Node.js 进行开发。
5470 2
【安装指南】nodejs下载、安装与配置详细教程
|
6月前
|
机器学习/深度学习 数据可视化 算法
深度学习模型结构复杂、参数众多,如何更直观地深入理解你的模型?
深度学习模型虽应用广泛,但其“黑箱”特性导致可解释性不足,尤其在金融、医疗等敏感领域,模型决策逻辑的透明性至关重要。本文聚焦深度学习可解释性中的可视化分析,介绍模型结构、特征、参数及输入激活的可视化方法,帮助理解模型行为、提升透明度,并推动其在关键领域的安全应用。
587 0
|
5月前
|
传感器 算法 自动驾驶
【卡尔曼滤波跟踪】基于卡尔曼滤波的二维目标跟踪(Matlab实现)
【卡尔曼滤波跟踪】基于卡尔曼滤波的二维目标跟踪(Matlab实现)
312 0
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
134694 0
|
机器学习/深度学习 数据采集 人工智能
智能化运维:AI在IT运维中的应用探索###
随着信息技术的飞速发展,传统的IT运维模式正面临着前所未有的挑战。本文旨在探讨人工智能(AI)技术如何赋能IT运维,通过智能化手段提升运维效率、降低故障率,并为企业带来更加稳定高效的服务体验。我们将从AI运维的概念入手,深入分析其在故障预测、异常检测、自动化处理等方面的应用实践,以及面临的挑战与未来发展趋势。 ###
|
存储 边缘计算 人工智能
|
数据挖掘
R语言中的广义线性模型(GLM)
【4月更文挑战第27天】R语言中的`glm`函数用于构建和分析广义线性模型(GLM),适用于分类、计数和生存分析。GLM包含随机组件(如泊松、二项或伽玛分布)、系统组件(线性预测子)和连接函数。通过`glm(formula, family, data)`构建模型,例如泊松回归设`family=poisson`。应用实例可分析影响医院病人感染率的因素。模型解释和验证涉及拟合优度、系数显著性和残差图检查。R还支持混合效应模型、多层次模型和GEE等高级主题,助力复杂数据分析。
1207 0
|
XML Java Android开发
Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!
📢前言 🎬SO文件生成 🍺通过Android Studio生成.so文件 🏳️‍🌈第一步:下载配置好NDK 🏳️‍🌈第二步:新建一个AS工程,新建一个JniTest.java文件 🏳️‍🌈第三步:选中JniTest.java文件,进行Make Project 🏳️‍🌈第四步:新建一个jni文件夹,生成.h头文件 🏳️‍🌈第五步:新建 一个c/c++source file文件test.c 和 Android.mk、Application.mk文件 🏳️‍🌈第六步:关联下载好的NDK包 🏳️‍🌈第七步:简单在AS端调用一下 💬总结
Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!