技术论坛

 超多类似画面对象编辑-巧用对象名-暂时只有C脚本

返回主题列表
作者 主题
RENHQ
至圣

经验值: 68887
发帖数: 12218
精华帖: 59
楼主    2021-09-01 10:26:35
主题:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

6.1 前言

这两天有网友问,画面上如果有N多按钮需要做,怎么做简单一些,碰巧前段时间帮朋友做了一个项目,里面有个类似的要求,要求是这样的:画面上有好几十个图片,每个图片代表一个设备,鼠标放上去之后能够显示该设备的名称、状态等。这位网友的要求差不多,不过之前的那个我是用VBS实现的,而且还是有些繁琐,这位网友要用C脚本做,这里试着实验一下。

6.2 要求

       画面上有N多按钮如附图:


为了减小图片大小,做9个按钮作为示例

为了编辑简单,减少工作量,总结有这样的要求:

1)     按钮上需要显示不同的问题,文本为”骨仓XX#”,XX为编号0-200

2)     点击按钮,弹窗显示“确认选择仓位XX吗”,点击是,把XX送入变量bin_select里面

3)     增加按钮的时候,只复制粘帖,然后根据需要排布位置,改一下按钮对象编号即可。

6.3 实现方法

利用WinCC在复制粘帖对象时,会自动把对象名称的最后的数字自动加1(如果对象是从1开始,不是从1开始的,那可能就自动变成1或者1不重复的数字),这样利用脚本获取按钮对象的对象名称,然后把编号获取出来,再进行字符串拼接,就能实现这个功能。

  按钮对象取名按”BT_GC_1”为”骨仓1#”开始,至”BT_GC_9”为”骨仓9#”

  bin_select变量为内部无符号32位整数,用来防止点击按钮之后的编号。


  为方便脚本修改,脚本在全局脚本的项目函数里面写。思路主要就是获取按钮对象名称比如:”BT_GC_1”,然后查找”_”符号,把最后面的数字给提取出来,然后再根据需要连接字符串等操作。

详细脚本如下:

6.3.1 按钮文本的相关脚本

按钮脚本:

 

函数脚本:


6.3.2 按钮动作:

鼠标动作脚本:


其函数脚本:


6.4 测试图



6.5 补充点

这个主要是用于做项目的时候,有多个类似多项的时候用,而且需要对脚本有一定的了解,按钮里面的脚本组态完全一样,做好一个按钮,其他的复制粘帖就好了,特别是编号能连续起来,如果不能连续起来的话,那就后期删除用不到的对象,或者手动改成需要的编号,能减少不少重复的操作,其他的功能比如打开不同的画面,修改其他的属性,也一样能实现,具体就是修改函数脚本了。

由于C脚本不是很熟悉,在字符串截取的时候,费了挺长时间,而且也不知道采用的是不是最好的方案。个人对VBS更熟悉一些,实现起来可能也能更简单点。

后面再附上VBS的脚本吧


我没怎么做过项目,具体的客户需求了解的还是不多。如果你还有别的需求,可以留言讨论。


Q群:https://jq.qq.com/?k=9BDuEgf6
RENHQ
至圣

经验值: 68887
发帖数: 12218
精华帖: 59
1楼    2021-09-01 10:27:12
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

嗯,脚本忘了做注释了,有不明白的留言讨论哈

Q群:https://jq.qq.com/?k=9BDuEgf6
贤贤易色
奇侠

经验值: 8087
发帖数: 1308
精华帖: 6
2楼    2021-09-01 11:38:04
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

建议还是不用系统弹窗,容易造成脚本堵塞,,,有时候返回值,返回的不准确

养活一团春意思,撑起两根穷骨头
夜owl
游民

经验值: 105
发帖数: 4
精华帖: 0
3楼    2021-09-01 13:25:17
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

作为文中提到的网友,表示脚本非常好用,对于没有学过VBA和VBS的小白来讲,学了半个月的WINCC想要实现批量生成对象和批量链接变量的功能简直不敢想象,但是扩展这个脚本就可以实现,感谢大佬,项目效率翻了几倍,支持支持

RENHQ
至圣

经验值: 68887
发帖数: 12218
精华帖: 59
4楼    2021-09-01 14:23:14
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

这个倒是没考虑,那种返回的,最好改成打开画面的时候刷新一次,这样就好了,然后再操作的时候就不会因为弹窗导致返回的脚本堵塞了,主要还是一种思路吧,也节省时间

Q群:https://jq.qq.com/?k=9BDuEgf6
天芯
至圣

经验值: 18789
发帖数: 2104
精华帖: 0
5楼    2021-09-01 18:53:30
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

跟着学习,感谢分享哦

Fscosa
侠士

经验值: 1073
发帖数: 25
精华帖: 2
6楼    2021-09-01 20:36:18
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本
以前测试一个画面里超多IO域(比如100个),使用画面周期触发脚本显示output值,打开这个画面的时候跟放幻灯片一样,对象一个一个刷新,看着特别难受。不知道版主这个会不会有这个问题?
RENHQ
至圣

经验值: 68887
发帖数: 12218
精华帖: 59
7楼    2021-09-01 21:32:24
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

呃,如果一个画面类似的对象多了,用变量前缀做,然后都显示出来,会有这种情况


脚本的话,如果是对象超多,可能会出现这种情况,我用虚拟机测试,按钮用了79多个,画面打开的时候,感觉不是很明显,1秒之内全部显示完成吧

IO域可能也是由于和PLC通讯的原因,延迟可能更明显一些

Q群:https://jq.qq.com/?k=9BDuEgf6
WOWUWUWU
至圣

经验值: 10367
发帖数: 1793
精华帖: 0
8楼    2021-09-01 21:42:28
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本


谢谢分享,学习了。

手机用户20200103FZF48F
奇侠

经验值: 5679
发帖数: 767
精华帖: 1
9楼    2021-09-01 21:44:26
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本
值得学习,谢谢分享。
Zaxife
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
10楼    2021-09-02 13:19:05
主题:回复:超多类似画面对象编辑-巧用对象名-暂时只有C脚本

我一般不会这样做,因为这样做每个按钮的脚本都有脚本有可能还不一样这工作量得累死人的。

我一般是在画面里面放一个IO域输出绑定到一个内部变量,然后每个按钮抬起直接动作赋对应的按钮序号1~n值给上面的内部变量。最后在上面的IO域的输出改变事件里面根据输出值执行不同的脚本。这样所有脚本统一在一起可以避免很多很多问题。

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。