国产一区二区三区毛片_亚洲乱码AV中文一区二区_亚洲精品无码专区在线播放_日韩欧美一二_咪咪av影院_欧久久av一区二区

萬泉河
WX:ZHO6371995,歡迎+
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 140 個
工控威望: 265 點
下載積分: 878 分
在線時間: 11(小時)
注冊時間: 2021-06-11
最后登錄: 2025-05-03
查看萬泉河的 主題 / 回貼
樓主  發(fā)表于: 2022-12-27 12:00
1225 【跨新年】【萬泉河】WINCC中獲取窗口變量前綴以及跨窗口操控的方法

近段時間,不約而同的,網(wǎng)站論壇和煙臺方法學(xué)員中都有提出這樣的問題。

比如:
l C腳本如何獲得窗口中對象的變量前綴? VBS如何獲得?
l C腳本如何實現(xiàn)在一個窗口中操控父窗口下的另一個窗口內(nèi)的控件?
l VBS如何實現(xiàn)?

這些問題,都有個特點,提問的時候先把編程語言給限定了。

而咱就不太有辦法拒絕。畢竟,人家有可能是在完成一個更復(fù)雜的工作,已經(jīng)在選定的語言下實現(xiàn)了大部分的功能,現(xiàn)在就在這一點點功能搞不定被卡主了,過不去了,才來求助的。

而如果不指定語言的話,其實我都早就有答案,特別是VBS的解決方案,都寫在《西門子WINCC入門到精通》的書里了,所以只需要從書柜里把我自己的書拿出來,找到頁碼,把頁碼號告訴對方就可以了。

而且會發(fā)現(xiàn),大部分提問者其實是有我的那本書的,只是通讀不夠細(xì)致,沒發(fā)現(xiàn),或者沒記住有這方面的介紹。驗證了一個道理,對一本書,最了解的還是作者自己。

當(dāng)然,我也發(fā)現(xiàn)了我寫書時候遺漏的該寫而未寫的技巧知識點。可能潛意識里面,我自己覺得反正另一條路上有解決方案了,這邊這一條就沒必要去重復(fù)啰嗦實現(xiàn)了。特別是C腳本,對西門子來說自從20年前的WINCC版本支持VBS之后,官方逐漸在弱化C腳本的地位,我自己也逐漸淡化對其的研究和使用。想一碗水端平是永遠(yuǎn)不可能的。    

在此先提醒大家,提問問題的時候,盡可能不要限定編程語言。那樣的答案多的是,可以唾手可得。而非要限定語言了,尋找起來就會有一些難度。

所以,我這里做了個例子,進(jìn)行了測試,可以把這些坑填上了。也算是對我自己著作中遺漏部分的補充。


主畫面中是2個按鈕,分別演示了VBS腳本和C腳本彈出窗口的方法。

而彈出的窗口外觀相同,然而內(nèi)部的程序語言不同,分別有按鈕按下后可以彈出對話框提示讀取得到了前綴。

而后,將上述2個按鈕分別放到另一個叫做“窗口中操控”的窗口(PDL文件),腳本經(jīng)過稍微修改,實現(xiàn)了上述同樣的功能。

l 按鈕11的單擊鼠標(biāo)中的VBS程序為:
Sub OnClick(ByVal Item)
ScreenItems("畫面窗口1").TagPrefix="M001_"
ScreenItems("畫面窗口1").PictureName=Item.Text
ScreenItems("畫面窗口1").Visible=True

End Sub
而窗口中有2個獲取前綴的按鈕,同樣可以得到結(jié)果,腳本分別為:
Sub OnClick(Byval Item)
'MsgBOX(ITEM.Parent.Parent.TagPrefix)

MsgBOX(Parent.TagPrefix)
End Sub
注釋掉的腳本也同樣可以執(zhí)行。

Sub OnClick(Byval Item)
Dim name
name=HMIRuntime.Tags("aa").Name

Dim TagPrefix
TagPrefix=Split(name,"_")(0)
MsgBOX(TagPrefix)
End Sub
這里取了一個不存在的aa后綴的變量,然而也絲毫不影響功能。因為語法本身獲取的是變量名字,對變量是否有值是否合法根本不在意。

也注意兩種方式得到的前綴分別有分隔符和無分隔符的區(qū)別。

標(biāo)準(zhǔn)的用法當(dāng)然不能每次都通過腳本來獲取,而是會在子窗口打開時即執(zhí)行腳本,獲取到前綴后,賦值到一個靜態(tài)文本中,窗口中任何需要的地方,可以通過讀取文本內(nèi)容得到。

Sub OnOpen()
'MsgBOX(Parent.TagPrefix)
ScreenItems("窗口前綴").Text=Parent.TagPrefix
End Sub

而如果畫面窗口中不需要顯示這個前綴,可以設(shè)置靜態(tài)文本為隱藏。這是官方例程中慣用的手法。

l 按鈕12的單擊鼠標(biāo)中的C程序為:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char*lpszObjectName, char* lpszPropertyName)
{
SetPropChar(lpszPictureName, "畫面窗口1","PictureName","窗口12-C獲取前綴.Pdl");
SetPropChar(lpszPictureName, "畫面窗口1","TagPrefix", "M002_");

SetPropBOOL(lpszPictureName, "畫面窗口1","Visible", TRUE);
}

窗口內(nèi)獲取按鈕的腳本:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char*lpszObjectName, char* lpszPropertyName)
{
char Name[20];
HWND hwnd=NULL;

hwnd=FindWindow(NULL,"WinCC-運行系統(tǒng) -"); //獲得句柄
strcpy(Name,GetPropChar(GetParentPicture(lpszPictureName),GetParentPictureWindow(lpszPictureName),"TagPrefix")); //Return-Type: char*

MessageBox(hwnd,Name,"OK",MB_OK);
}
畫面打開事件中文本內(nèi)容得到的方法:
#include "apdefap.h"
void OnOpenPicture(char* lpszPictureName,char* lpszObjectName, char* lpszPropertyName)
{
char Name[20];
strcpy(Name,GetPropChar(GetParentPicture(lpszPictureName),GetParentPictureWindow(lpszPictureName),"TagPrefix")); //Return-Type: char*
SetPropChar(lpszPictureName,"窗口前綴","Text",Name); //Return-Type: BOOL
}

這里C腳本實現(xiàn)的核心是一個GetParentPicture的函數(shù),可以得到窗口的父窗口的文件名字。而這個函數(shù)是個神仙函數(shù),各種幫助資料中都沒有見過介紹。所以只有從已有的使用演示程序中獲取。

l 窗口中按鈕11的單擊鼠標(biāo)中的VBS程序為:
Sub OnClick(ByVal Item)
Parent.Parent.ScreenItems("畫面窗口1").TagPrefix="M001_"
Parent.Parent.ScreenItems("畫面窗口1").PictureName=Item.Text
Parent.Parent.ScreenItems("畫面窗口1").Visible=True
End Sub

l 窗口中按鈕12的單擊鼠標(biāo)中的C程序為:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char*lpszObjectName, char* lpszPropertyName)
{
char szParentPicture[512];
strncpy (szParentPicture,GetParentPicture(lpszPictureName), sizeof(szParentPicture));

SetPropChar(szParentPicture, "畫面窗口1","PictureName","窗口12-C獲取前綴.Pdl");
SetPropChar(szParentPicture, "畫面窗口1","TagPrefix", "M002_");

SetPropBOOL(szParentPicture, "畫面窗口1","Visible", TRUE);
}

分別實現(xiàn)了上述同樣的功能。

當(dāng)然,我們也可以隨意的組合搭配按鈕和窗口內(nèi)的程序,都可以實現(xiàn)同樣的功能。比如即便你程序的主體語言是C的或者VBS,然而窗口中的文本獲得前綴部分可以用VBS簡單得到。

最后,這些具體產(chǎn)品知識點的技巧內(nèi)容我近幾年確實很少觸及了。因為在我看來那都是基本功。我甚至也不去記憶具體的函數(shù)名字,比如上面的name還是tagname, TagPrefix還是Prefix都記不住的。我即便要使用,也都直接找現(xiàn)成的程序模塊看一眼,抄來用下即可。

而事實上,隨著標(biāo)準(zhǔn)化模塊化的推進(jìn),這些技能已經(jīng)很少用到了,因為早就封裝完善在模塊中了。

有一些年輕人看到我近年來寫各種科普文章,很少提及這些具體的技術(shù)技能技巧,懷疑我從來沒掌握這些技能,DISS我,甚至來跟我PK,只能是他們眼光太短淺了,你要從事技術(shù)工作,不是要把一項項的技能從年輕到年老記憶地牢牢的,以隨時使用。相反的是,大部分技能是需要封裝的,封裝以后直接使用,甚至自己要主動把這些具體技能都遺忘掉,才可以有更多的精力去掌握更高層的知識。

最后,給大家的建議是,要盡量少自己從頭造輪子。

雖然我自己在成長過程中,是摸著石頭過河每個輪子逐個造過來的,遇到任何問題,也都抑制不住要自己親自造輪子的沖動。輪子的每一個細(xì)節(jié),如果不親自掌握,就會抓耳撓腮睡覺都不安心。

然而仍然要提醒同行后來者,這是一種非常低效率的行為。你可以有好奇心,精力充沛的情況下可以對別人造好的輪子仔細(xì)研讀原理,自己可以從中掌握些基本功,然而自己從頭造輪子這件事,就要盡量避免了。

上述例程的實現(xiàn)方法,西門子官方的例子中其實原本就有,而且功能比我這里介紹的要全面而細(xì)致得多得多。

西門子官方例程中, BST例程較多的是使用了C腳本,而LBP例程(或者叫做BPL)相同的功能則更多是用VBS實現(xiàn)的。

這些例程我都已經(jīng)寫文章推薦過多次了。這回就不再提供鏈接以及親自提供文件了,而只提供名字,需要者自己辛苦一點去找到并學(xué)習(xí)了解。看來太容易得到的資料通常都不珍惜,只有自己辛苦一點,千辛萬苦得到的才會更加倍的去學(xué)習(xí)。

另外,考慮到上面的乏味的語言講述不夠直觀,有可能很多人看了并不能理解。 我有計劃在元旦期間做2次視頻直播講座,專門講解展示這個例程的實現(xiàn)方法。第一次直播會在煙臺方法學(xué)員群中,第二次直播會面向大眾。有感興趣者請關(guān)注公眾號、朋友圈,及時獲取通知。  
本帖最近評分記錄:
  • 下載積分:+1(hsiung) 熱心助人!
    eaglesence
    eaglesence
    級別: 家園常客
    精華主題: 0
    發(fā)帖數(shù)量: 453 個
    工控威望: 769 點
    下載積分: 23072 分
    在線時間: 108(小時)
    注冊時間: 2019-04-02
    最后登錄: 2025-05-10
    查看eaglesence的 主題 / 回貼
    1樓  發(fā)表于: 2022-12-30 12:14
    這個跨窗口操作大家用的多嗎?

    主站蜘蛛池模板: 高潮毛片无遮挡高清免费_黄色sp_成年人国产视频_www99视频_精品一区91_3344成人免费看A片_老司机亚洲_高清无码午夜福利视频 | 亚洲综合人成网免费视频_亚洲妓女综合网99_久别的草原在线看视频免费_欧美黄色三级视频_7777国产欧美日韩亚洲黑人_亚洲成色www_伊人天天干_男女性杂交内射妇女BBWXZ | 美女黄频视频大全免费的_99视频精品_亚洲人妖网站_国产精品1区2区3区4区_黄色毛片视频在线观看_爆乳熟女高潮大叫_99视频在线播放_爱爱免费小视频 | 白浆av导航_菲律宾一级片_牛夜精品久久久久久久99黑人_精品无码中文字幕在线_九色一区二区_aⅴ一区二区三区无卡无码_青草视频在线观看国产_欧美日韩在线观看成人 | 性高潮久久久久久久久_国产白嫩精品久久久久久_黄片毛片一级片_久久久福利_九色97_超碰在线国产_久操网在线观看_99在线播放 | av黄色免费看_aⅴ中文字幕不卡在线无码_我不卡一区二区_欧美日韩一区二区三区高清_最近免费中文字幕中文高清6_日本色老头_99久久国语露脸精品对白_最美女人体内射精一区二区 | 免费一级特黄3大片视频_免费的黄色_91视频免费在线_亚洲精品久久久久私欲_性高湖久久久久久久久aaaaa_成人影院在线观看免费_偷拍精品一区二区三区_国产精品无线一线二线三线 手机在线播放国产女主播_国产精品一区二区久久不卡小说_久久夜靖品2区_精品视频色一区_品久久久久久久久久96高清_农村乱视频一区二区三区_久久久久无码精品国产情侣_黄又色又污又爽又高潮动态图 | 色久悠悠婷婷综合在线亚洲_国产精品区区久久久狼_国产一级免费_超级碰99_中文字幕亚洲无线码在一区_91精品久久久久久久99_国产专区视频在线观看_久久天堂 | 神马久久香蕉_久久草在线观看视频_无码精品不卡一区二区三区_久久久久久久毛片_国产在线91观看免费观看_法国白嫩大屁股XXXX_私人影院免费观看_国产传媒视频 | 午夜dj免费视频在线观看_日韩在线观看视频免费_神马久久春色视频_国产精华7777777_亚洲一区影院_九九久久网_国产日韩一区二区在线_国产精品亚欧美一区二区 | 成年人色网站_91精品久久久久久久久99绯色_国产日韩精品在线播放_国产日产精品久久久久兰花_日本成人福利视频_99国内精品久久久久影院_一个人看的ww在线视频_在线观看免费a∨网站 | 久草在线一免费新视频_播放一级毛片_91偷自产一区二区三区精品_久久人妻无码毛片A片麻豆_午夜激情视频免费观看_精品女同一区二区三区免费站_四虎家庭影院_青青草国产精品人人爱99 | 亚洲天堂岛_国产亚洲日韩在线播放更多_中文字幕1级精品视频在线_草草草影院_黄色精品在线观看_yy8840私人影院的在线_国产日产精品久久久久久_国产一卡二卡三卡免费 | 国产成人精品aa毛片_亚洲欧美日韩综合一区_久久久久久曰本av免费免费_精品国产V无码大片在线观看_99视频中文字幕_www免费视频_美女末成年视频黄是免费网址_91chinese老女人 | 91综合视频在线观看_免费人妻av无码专区_jlzzjlzz国产精品久久_狠狠躁夜夜躁人人爽天天古典_黑人与中国女一级毛片不卡_少妇的肉体aa片在线观看_亚洲国产精品一区在线观看_就要干就要操就要日 | 五月天色婷婷丁香_午夜三级A三级三点自慰_国产免费播放一区二区_中文在线观看免费视频_se吧提供在线看片免费人成久网_欧美日韩大片在线观看_久草在线视频免费资源_91久精品 | av色偷偷_欧美xyx_人人澡人人射_久久人妻天天AV_超碰777_亚洲欧美不卡视频在线播放_国产欧美在线一区二区_高潮娇喘抽搐喷水潮喷视频网站 | 日本男女啪啪_欧美国产日韩久久_亚洲在线视频观看_亚洲AV乱码专区国产乱码_国产一级不卡毛片_怡红院av_国产乱子伦精品免费无码专区_亚洲AV无码国产一区二区三区 | 91视频免费_亚洲精品中文字_亚洲高清视频免费看_日韩中文字幕手机在线_国产免费一级高清淫曰一本篇_狂野欧美精品_亚洲欧美日韩区_日韩成人无码 | 国产免费永久黄色国产_国产女人18毛片水真多_91.成人天堂一区_日本在线看片_欧美男同志网站_国产69精品久久久久9999_成人啪精品视频网站午夜_北条麻妃黄网 | 丁香婷婷六月综合交清_素人视频在线观看免费_亚洲精品国精品久久99热一_亚洲AV无码无在线观看_亚洲AV无码片一区二区三区_任你操免费视频_亚洲av日韩av天堂久久_色欲天天婬色婬香视频综合网 | 亚洲精品无码成人A片体验区在线_精品无码一区二区三区亚洲桃色_国产九九久久_国产乱精品一区二区三区视频了_淫片网站_少妇人妻一级a毛片_天天干天天射综合网_1769国内精品视频在线 益日韩欧群交P片内射中文_1313午夜精品理论片_综合爱爱网_纯肉无遮挡h肉动漫在线观看3d_男人的天堂久久精品_99久久精品午夜一区二区_亚洲七七久久桃花影院_国产91色在线亚洲 | 午夜dj免费视频在线观看_日韩在线观看视频免费_神马久久春色视频_国产精华7777777_亚洲一区影院_九九久久网_国产日韩一区二区在线_国产精品亚欧美一区二区 | 亚洲Aⅴ无码专区在线观看春色_免费成人_国内三级在线_综合久久久久久久_妞干网福利视频_日韩高清影视_日本超乳排名100位_成年黄色片 | 国产成人无码精品久久久性色_国产精品呻吟久久av图片_男人激烈吮乳吃奶视频免费_www.伊人.com_亚洲日韩中文无码久久_欧美人与动性行为视频_黄色在线视屏_国产色综合一区 | av色偷偷_欧美xyx_人人澡人人射_久久人妻天天AV_超碰777_亚洲欧美不卡视频在线播放_国产欧美在线一区二区_高潮娇喘抽搐喷水潮喷视频网站 | 奇米影视官网_亚洲色国产欧美日韩_国产在线观看免费人成视频_无码人妻av久久久一区二区三区_国产精品不卡二区三区综合_亚洲成人av在线_国产成人精品午夜_欧美精品爱爱 | sxeoquenetv另类重口_日本视频网址_日韩成人在线一区_综合狠狠开心_91久久高清国语自产拍_久草在线免费资源站_国产精品亚洲专区无码不卡_欧洲美熟女乱又伦av影片 | 夜夜躁狠狠躁日日躁_中文字幕久无码免费久久_欧美日韩免费看_国产va在线_欧美影片两对夫妇交换_亚洲热视频_午夜成人影片_免费观看黄色 | 亚洲成人黄色网_vagaa亚洲亚洲色爽免影院_亚洲国产精品一区在线_美女十八毛片_久久成人福利视频_人人澡人人添人人爽一区二区_五十六十日本老熟妇乱_国产精品第一视频 | 亚洲欧洲久久av_极品美女国产精品免费一区_老司机网站免费_免费视频入口_人妻网站成熟人妻VA网站_福利视频网站_亚洲天堂第一区_男人粗大一进一出视频 | 亚洲免费看看_91日韩精品久久久久身材苗条_999久久久精品_拔插拔插影院_日本免费新一区视频_国产一区二区三区四区三区_91精品久久久久久久浪潮_亚洲色大成网站WWW永久网 | 色综合狠狠爱_国产精品又又酱在线午夜_野外少妇愉情中文字幕_在线观看国产精品一区二区_开心五月综合亚洲_一本久久a久久精品亚洲_成人免费在线网_国产精品人妻熟女毛片av久久 | 免费操比视频_久久久久久精品无码午夜按摩师_中文乱码字幕高清在线观看_91精品国产91久久久娜娜_黄色影视网址_色爱99_啊轻点内射在线视频_www.久久艹 | 免费无码va一区二区三区_国产精品嫩草无码AⅤ在线播放_免费在线观看AV_91少妇_国产免费区一区二区三视频免费_毛茸茸av_国产在线不卡AV精片观看_色综合视频 | 姑娘第四集免费看视频_久久久香蕉_www日本在线观看_国产精品人人爽人人爽av_亚洲国产综合在线看不卡_亚洲欧美国产日韩一区夜色_国产视频网站在线观看_亚洲区和欧洲区五六区 | 精品国产品香蕉在线_老版包青天83版在线观看_日本中文在线观看_美女mm131爽爽爽作爱_日本女人一区二区三区_欧美精品免费在线_全免费又大粗又黄又爽少妇片_亚洲欧美国产高清vA在线播放 | 久久婷婷国产_亚洲伦理片在线_色五月色开心色婷婷色丁香_青青在线视频观看_波多野结衣视频一区_日韩在线理论_国产成人免费在线_久久中文免费视频 | 九月婷婷色_国产精品免费专区_精品国产综合_超碰在线公开_亚洲精品粉嫩美女一区_亚洲色欲综合天堂亚洲_自拍中文字幕_国产午夜草莓视频在线观看 | 亚洲精品国产精品国自产观看浪潮_成年人在线观看视频_欧美一级片毛片_国产又黄又猛又粗又爽的A片漫_日韩精品一区av_成人无码h真人在线网站_日本毛茸茸的丰满熟妇_国产精品黑丝 | 日本亚洲9999aⅴ_亚洲欧美99_欧美嫩交一区二区三区_亚洲成人免费网站_日本三级视频在线观看_免费黄色一级片_国产无人区卡一卡二卡三乱码_亚洲精品成人久久一区二区 |