WinCC 中获取鼠标位置的应用

2023-11-14

热线支持的过程中有时会遇到一些客户提出要在 WinCC 项目运行时,在画面中捕捉到鼠标的坐标值。多年的热线支持养成的习惯总是会驱使我考虑一下用户要这个坐标值干嘛用呢?当然,问客户是最直接的,得到最多的回答就是希望获取这个坐标的目的在于:当在 WinCC 画面中点击设备图标时弹出设备的子画面,希望弹出子画面的坐标根据鼠标的坐标来自动确定,而不是在脚本中写为固定的常数。当然答案也不全是这个,也有比较特殊用途的。

其实为解决客户自动确定弹出子画面窗口坐标位置的这个问题无需大费周章,WinCC 的鼠标事件中其实就已经包含了鼠标坐标值。当然也并不是所有鼠标事件中都包含,首先来看一下 WinCC 按钮中都有哪些鼠标事件:

  • 单击鼠标
  • 按左键
  • 释放左键
  • 按右键
  • 释放左键

那哪些事件能够简单的获取到鼠标坐标值呢?

很简单,只要随意打开一个按钮事件的动作脚本编辑器就能知道。

单击鼠标 C 动作:

按左键 C 动作:

按右键 VBS 动作:

细心的朋友应该从截图中就已经找到答案了。除了单击鼠标动作事件中没有提供鼠标坐标值,其它动作事件中都已经默认提供了鼠标坐标值,也就是截图红框中的 x 和 y 。

为什么唯独单击鼠标事件没有提供鼠标坐标值呢?这是因为单击鼠标指的是鼠标按下并释放的一个完整过程,当鼠标指针在一个可操作对象上按下鼠标左键时,这个过程并未完成,此时如果想放弃操作只需要在按住左键不释放而将鼠标移动至可操作对象范围之外再释放,相当于就放弃了此次单击操作。所以 WinCC 只提供了鼠标按下以及释放时的鼠标坐标值就已经能完全满足需要了。

清楚了这一点,其实接下来要实现弹出窗口自动确定坐标的功能也就很容易实现了。首先简单测试一下如何通过 C 脚本以及 VB 脚本来获取并输出鼠标的 x 和 y 坐标值,然后再应用到实际需求中即可。

首先在画面中添加两个按钮以及一个应用程序窗口(窗口内容:全局脚本;模板:GSC Diagnostics)。

1.鼠标按左键时 C 脚本获取并输出 x 和 y 坐标值:

在按钮“C 获取 x,y 坐标”的“按左键”事件中编写脚本

void OnLButtonDown(

char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

printf("C 获取的 x y 坐标:X: %d Y: %d\r\n", x, y);

}

2.鼠标按左键时 VB 脚本获取并输出 x 和 y 坐标值:

在按钮“VBS 获取 x,y 坐标”的“按左键”事件中编写脚本

Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)    

HMIRuntime.Trace "VBS 获取的 x y 坐标:" & " X: " & x & " Y: " & y & vbCrlf

End Sub

激活 WinCC 运行系统后,在画面中鼠标分别按下两个按钮后,应用程序窗口中将会输出鼠标按下时的 x,y 坐标值。

接下来就可以应用到实际需求中了。将刚才的两个按钮当作设备图标,当按下两个按钮时自动根据鼠标位置弹出子画面窗口(以 VBS 为例)。

1.添加并编辑一个子画面(DeviceDetail.pdl)

2.主画面中添加一个画面窗口(对象名称:SubPic)

3.给两个按钮编重新编写 VB 脚本

激活运行后,分别按下两个按钮时,弹出窗口则会自动根据鼠标按下时的坐标位置弹出

以上方法都是由鼠标动作事件来获取鼠标坐标值,如果希望在鼠标移动而不执行鼠标动作事件时也实时获取鼠标位置是否可行呢?答案是肯定的,通过强大的 C 脚本也是可以实现的,方法如下:

在 C 全局动作中添加一个全局动作,并将触发器设置为周期 250 ms

当项目激活运行后,在应用程序窗口中就可以看到实时变化的鼠标坐标值。

 通过这种方法也可以做出一些特殊的效果,例如导航菜单根据鼠标位置的自动弹出及隐藏。

 

重要提示

这种做法虽然可以实时获取到鼠标坐标值,但是毕竟是通过高频的执行 C 脚本来实现的。熟悉 WinCC 的工程师都知道,由于 WinCC 的脚本都是队列执行的,这种做法实际会很占用 WinCC 脚本运行资源。因此,在这里只是抛砖引玉,实际使用中千万要慎用!

欢迎访问西门子1847工业学习平台。这是一个官方的学习平台,能够帮助您高效获得实用和权威的资料。

西门子1847工业学习平台icon-default.png?t=M666https://www.ad.siemens.com.cn/1847/?utm_term=1847&channel_link_type=web&utm_campaign=1847%E4%B8%BB%E9%A1%B5%E6%8E%A8%E5%B9%BF&sat_cf=1&utm_medium=article&_channel_track_key=xlxc5BrE&utm_source=csdn&utm_content=article

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WinCC 中获取鼠标位置的应用 的相关文章

  • 西门子S7报文解析

    1 报文的基本格式 1 1 第1和第2个字节是 固定报文头03 00 这里我们就用到三种报文 a 初始化 b 读 c 写 都是这种格式 1 2 第3和第4个字节是 整个报文的长度 其它部分就是各种报文的个性化处理了 下面分析大量报文的案例进
  • Open3D 最小二乘拟合二维圆

    目录 一 算法原理 二 代码实现 三 结果展示 一 算法原理 见 Open3D 最小二乘拟合二维圆 python详细过程版 二 代码实现 import open3d as o3d import numpy as np import matp

随机推荐

  • FBX SDK下载安装教程

    目录 FBX SDK介绍 FBX SDK下载安装 FBX SDK介绍 Fbx 是 Autodesk MotionBuilder 固有的文件格式 用于创建 编辑和混合运动捕捉和关键帧动画 也常用于动画文件在不同的DCC 三维软件 之间的互导
  • SpringBoot 场景开发多面手成长手册

    小册介绍 SpringBoot之强大 SpringBoot 的强大之处不言而喻 其底层 SpringFramework 强大的 IOC 容器和 AOP 机制 加之 SpringBoot 的自动装配 使得 SpringBoot 成为当今 Ja
  • 聊聊你不知道的Java变量转型

    单枪匹马你别怕 一腔孤勇又如何 这一路你可以哭 但不能怂 请关注 源码猎人 目录 简介 标识符命名规则 类变量 静态变量 实例变量 局部变量 变量数据类型 基本类型之间的转换 常见面试题 简介 Java变量分为类变量 实例变量 局部变量 在
  • 自动化测试工具大盘点

    本系列文章我们将带大家一起了解一下互联网大厂中通科技的自动化测试平台的搭建历程 从以下四个方面展开介绍 为什么要做这样一个统一的自动化测试平台 是如何做到统一的 平台上线后的收益 最后一部分会给大家分享一下他们未来的一些开发计划 在本系列文
  • 通过一份经典的UML类图来学会如何读懂UML类图

    一份经典的UML类图如下 继承关系 实线 空心三角形 鸟 动物 鸟继承动物 实现接口 虚线 空心三角形 大雁 飞翔 大雁实现了飞翔接口 实现接口 棒棒糖表示法 唐老鸭 讲人话 唐老鸭实现讲人话接口 关联关系 gt 实线剪头 企鹅 gt 气候
  • there.js3d模型动画交互

    there js3d模型动画交互 https blog csdn net qq 38316721 article details 81281749
  • Python+OpenCV开发环境搭建

    Python OpenCV开发环境搭建 本文主要介绍了Win7 64位系统下Python OpenCV开发环境的搭建 1 安装Python 2 7 13 从官网上或这里http download csdn net detail sysuzh
  • drools 7.x KIE API解析

    https blog csdn net wo541075754 article details 75004575 http dyingbleed com drools 2
  • git生成SSH密钥提示ssh文件不存在-已解决

    参考文章 https blog csdn net qq 41530816 article details 100179808 utm medium distribute pc relevant none task blog 2 7Edefa
  • 【腾讯云 Cloud studio 实战训练营】真正做到让你的开发成本只在编码

    文章目录 写在前面 CODING Cloud studio工具 在线编码 运行项目 代码上传 Cloud Studio 开发贪吃蛇 写在最后 写在前面 期待已久的体验活动终于来了 Clound Studio用了才知道有多爽 Cloud St
  • 给即将学习大数据的几点建议

    以下内容摘自一位学习大数据技术的朋友的感想和总结 文采飞扬 字字肺腑 产生共鸣 经本人同意 发布至此 希望给很多站在大数据门口驻足 犹疑 徘徊的小伙伴一些建议 大数据行业发展不等人 要想改变现状 现在出发 即可动手 大数据学习现在开始 为时
  • 静态类型和动态类型的区别

    一 静态类型和动态类型的区别 引自MDN Web Docs 动态类型 the interpreter assigns variables a type at runtime based on the variable s value at
  • Failed to replace DataSource with an embedded database for tests

    Failed to replace DataSource with an embedded database for tests 错误提示 Caused by java lang IllegalStateException Failed t
  • 如何完全卸载Android Studio

    打开控制面板或360软件管家等执行常规的卸载操作 找到SDK的安装目录手动删除SDK 进入 C Users lt 你的用户名下 gt 目录下 手动删除 android AndroidStudioX X gradle 目录 完成
  • hdu 1255 覆盖的面积

    Problem acm hdu edu cn showproblem php pid 1255 Reference hdu 1255 覆盖的面积 矩形面积并 矩形面积交 矩形周长并 线段树 扫描线总结 Meaning 给出 n 个矩形 求它
  • vs调试问题

    说明 生成的service服务 由外部html网页调用接口打印 操作步骤 Debug下运行service项目 菜单栏 调试 下点击 附加到进程 找打外部引用的html进程 ID 可在任务管理器进程内查看 然后设置断点调试对应的测试接口即可
  • 云孚科技受邀参加2023年大连数交会

    2023年7月6日至9日 由商务部 科技部 中国贸促会和辽宁省政府共同主办的2023中国国际数字和软件服务交易会 简称 数交会 在辽宁大连举行 云孚科技受中关村软件园孵化器邀请 与其他23家数字与软件服务企业组成北京展团共同参加本届数交会大
  • 代码中获取系统相关信息的函数

    1 GetModuleFileName 函数返回当前进程已加载可执行或DLL文件的完整路径名 以 0 终止 DWORD WINAPI GetModuleFileName HMODULE hModule 应用程序或DLL实例句柄 NULL则为
  • cmake指定编译器以及32位、64位版本

    概述 本文演示环境 win10 VS2017 1 指定变量值 咱们常用命令 cmake 在build目录下配置生成项目和解决方案 其实 这个命令还有其他用法 指定CMakeLists txt中的变量值 比如 fmt 库 的CMakeList
  • WinCC 中获取鼠标位置的应用

    热线支持的过程中有时会遇到一些客户提出要在 WinCC 项目运行时 在画面中捕捉到鼠标的坐标值 多年的热线支持养成的习惯总是会驱使我考虑一下用户要这个坐标值干嘛用呢 当然 问客户是最直接的 得到最多的回答就是希望获取这个坐标的目的在于 当在