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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

標準的用法當然不能每次都通過腳本來獲取,而是會在子窗口打開時即執行腳本,獲取到前綴后,賦值到一個靜態文本中,窗口中任何需要的地方,可以通過讀取文本內容得到。

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

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

l 按鈕12的單擊鼠標中的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);
}

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

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

MessageBox(hwnd,Name,"OK",MB_OK);
}
畫面打開事件中文本內容得到的方法:
#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腳本實現的核心是一個GetParentPicture的函數,可以得到窗口的父窗口的文件名字。而這個函數是個神仙函數,各種幫助資料中都沒有見過介紹。所以只有從已有的使用演示程序中獲取。

l 窗口中按鈕11的單擊鼠標中的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的單擊鼠標中的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);
}

分別實現了上述同樣的功能。

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

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

而事實上,隨著標準化模塊化的推進,這些技能已經很少用到了,因為早就封裝完善在模塊中了。

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

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

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

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

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

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

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

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

    主站蜘蛛池模板: 91精品国产免费久久综合_无码无遮挡在线观看免费_精品国产乱码久久久久久1区2匹_欧美乱码卡1卡2卡三卡四卡_日本最新一区二区三区_一道精品一区二区三区_日日操日日插_成人做爰69片免费看网站野花 | 久草热久_无码任你躁久久久久久老妇_国产精品久久久久av_精品久久国产老人久久综合_国产成人久_精品一区二区久久久久久久网精_久久国产主播_日本一区二区欧美 | 精品国产乱码一区_亚洲AV中文无码乱人伦在线视色_天堂爱爱_久操热久操_国产农村妇女野外牲交视频_亚洲一区午夜_精品综合_国产资源免费在线观看 | 麻豆TV入口在线看_国产一区在线导航_青草视频在线免费观看_性色av无码专区一ⅴa亚洲_国产精品com_国产a三级久久精品_久久一区国产_精品国产日韩欧美一区二区 | 91久久精品国产一区二区三区_一本大的之伊人_国产免费观看视频_一级片aaa_国产国在线线免费费_久久精品国产亚洲αv忘忧草_WWW国产精品内射熟女_2012中文字幕在线视频 | 啪啪免费网站_婷婷色婷婷开心五月_亚洲人久久久_午夜香蕉成视频人网站_亚洲一线产区二线产区区别在_国产成人综合亚洲看片_成人性色生活片免费看_亚洲国产欧美人成 | 日本黄色成人_中文字幕av在线免费观看_精品国产一区二区三区性色av_少妇WWWB搡BBB搡BBB_在线看黄色毛片_精品久久久久久久久久久aⅴ_182tv免费福利视频_夜夜草视频资源 国产福利精品视频_91素人在线_国产欧美另类久久久精品丝瓜_日韩精品一区二区av_XX性欧美肥妇精品久久久久久_老司机深夜18禁污污网站_伊人色综_99国产精品免费视频 | 国产三区在线播放_色久综合_亚洲一区二区欧美_阿v片在线视_久久免费在线视频_中文人妻熟女乱又乱精品_好看的日韩精品视频在线_57pao成人国产永久免费视频 | 男女aa视频_97人人草人人_成人日韩在线_亚洲AV秘无码一区二区三区一_爱啪啪av网_亚洲一区美女_久久精品国产99国产毛片_久久久精品人妻无码专区不卡 | 欧美精品毛片久久久久久久_日韩人妻中文无码一区二区七区_久草最新在线_5566先锋影音夜色资源站在线观看_亚洲乱码国产乱码精品精可以看_国产精品呻吟高潮_成人看片黄A免费看那个网址_久久欧美AⅤ无码精品色午夜麻 国产成人一区二区三区影院动漫_国产成人在线视频免费观看_久久99女女久久99久久_www.久久爱.com狼人_国产又爽又刺激的视频_日韩中文在线观看_天天草天天爱_狠狠爱天天操 | 国语对白爽死我了_成人免费观看网址_欧美一级片_色aⅴ性欧美_人妻少妇邻居少妇好多水在线_粉嫩小泬BBBB免费看_日韩中文字幕专区_极品粉嫩饱满一线天在线 | www.日韩av_日韩日日操_国产免费又色又爽又黄又猛小说_日本在线一级_亚洲国产一区二区a毛片_亚洲成人综合视频_国产成人av三级在线播放_免费在线观看www | 色综合91_久久国产精品成人片免费_香蕉视频污黄在线观看_无码人妻精品一区二区三区66_chinese勾搭videos_成人a免费_亚洲a成人午夜天堂_99影视在线视频免费观看 | 美女mm131爽爽爽作爱视频_快色在线观看视频_天天躁夜夜躁狠狠躁2021西西_久久精品国产网址_欧洲一级片_精品美女_欧美性生交XXXXX无码_熟妇人妻久久中文字幕 | 97国产在线视频_国产色在线播放_西西人体大胆444WWW_久章草在线视频免费观看_国产成人综合在线视频_久久国产福利播放_成人免费黄视频_色吧综合 | 黑人巨茎精品欧美一区二区_小情侣高清国产在线播放_亚洲区欧美区综合区自拍区_视频一区中文字幕_超碰caoporn久久_亚洲AV成人无码网站在线_国产精品丝袜高跟鞋_九一精品在线观看 | www.日本高清_国产美女高潮视频_青青草伊人_亚洲第一a亚洲_久久人人妻人人做人人爽_午夜免费影视_av一片_精品国产乱码久久久久久蜜臂 | 午夜毛片视频_美女裸身裸乳视频网站_av成人永久免费看片本色_第一福利网站_xxxav在线_免费看男人操女人_国产精品麻豆99久久久久久_亚洲国产视 | 高清精品一区二区三区_欧美一级做a爰片久久高潮_欧美成人视_亚洲同性同志一二三专区_人与野鲁交xxxⅹ网站_国产成人精品福利一区二区_最新日本中文字幕在线观看_国产精品综合不卡av 亚洲九九精品_国产不卡视频一区二区三区_久操视频免费看_热99久久精品_婷婷久久精品一区二区_日本免费人成在线观看_xxxx免费_国产成人一区二区三区在线视频 | 特级黄视频_中文字幕av免费_日本夜夜精_国产一二区_亚洲天堂网站_五月婷婷俺也去开心_日本熟妇XXXXX乱_最新国产小视频 | 免费av一级_黄色片一区二区_天天爱天天操天天爽_啪啪一级片_亚洲一区四区_久久久久久久这里只有精品_性高朝大尺度少妇大屁股_99re伊人 | 国产小视频网址_奇米影视四色狠狠888俺去啦_欧美在线一二三四_91短视频官网_av播播_少妇一级淫片aaaaaaaaa_手机看片毛片日韩免费观看_日本不卡在线一区二区三区视频 | 处女膜往事_欧美日韩国产超高清免费看片_九九九九九九九九九九热_91美女片黄在线观看成欢阁_欧美精品区一区二区三区_亚洲成人无码AV_精品午夜福利1000在线观看_日本a网站 | 看真人一级毛片_亚洲欧美xxxx_成人亚洲a片v一区二区三区网址_欧美白人最猛性xxxxx_免费日本一区_av人人爽_av永久在线_曰韩精品 | 日韩成人在线网_精品国产自线午夜福利_午夜免费啪在线观看视频_开心成人激情_ab免费在线观看_美女黄网站18禁免费看胸罩_午夜成年人_大地资源网中文在线观看免费版高清 | 亚洲狠狠婷婷综合久久_小少呦萝粉国产_XYX性爽欧美_女人夜夜春高潮爽av片_91人人妻人人做人人爽京东_美女极度色诱视频国产_日韩欧美xxxx_国内熟妇人妻色在线视频 | 国产成人在线观看_青青草91视频_日韩一二在线_天天操91_国产精品内射后入合集_四库成人免费视频_在线综合亚洲欧美网站_在线一二三四区 | 蜜臀影院_亚洲一区二区三区91_欧洲AV色爱无码综合网_精品日产卡一卡二卡麻豆_亚洲AV最新在线网址尤物_免费看的国产视频网站_一区二区网站_特级黄色一级毛片 | 人人妻人人爽人人爽_国产精品99久久久精品免费观看_视频一区二区三区在线观看_成人免费黄色大片_国产免费人成视频在线播放播_日韩精品中出_久久久久国产一级毛片高清版小说_国产偷录视频叫床高潮 | 久久亚洲中文字幕不卡一二区_日日操综合_一区二区精品区_欧美一级片在线免费观看_亚洲毛片不卡AV在线播放一区_谍战剧《惊弦》在线观看免费高清_亚州中文无码aⅤ在线_国产午夜福利精品集在线观看 | se94se欧美_九一在线看_亚洲男女自偷自拍_日韩精品一区二区三区乱码_日韩人妻无码精品系列_天天热天天干_蜜桃免费视频_性视频1819p久久 | 国产av福利第一精品导航_国产综合亚洲区在线观看_一区二区三区内射美女毛片_成人av片在线观看免费_美女桃色网站_一级毛片a女人刺激视频免费_日本一级淫片日本高清小说_国产男女视频网站 | 91porn在线_国产精品免费aⅴ片在线观看_色一二三区_在线中文字幕播放_高潮又爽又黄又无遮挡免费_免费久久久久久_人成在线免费视频_91精品久久久久久久 | 深夜网站在线观看_xxxx中文字幕_91丨九色丨海角社区_亚洲AV日韩AV永久无码色欲_www.久久精品_精品少妇人妻AV免费久久洗澡_91成品人影院_最近2019免费中文字幕8 | 19禁国产精品福利视频_www黄在线观看_日韩av无码久久一区二区_97超碰国产在线_中文字幕.亚洲无码日_成人免费无码A毛片_青青草在久久免费久久免费_国产午夜性春猛交ⅹxxx | 中文字幕在线观看三区_国产三级农村妇女在线播放_国产91在线看_玩弄chinese丰满人妻videos_国产一区二区三区视频免费_久艹久久_成人网子_91女女互慰吃奶在线 | 日本黄色大片免费观看_色婷婷综合激情中文在线_91短视频版在线观看www免费_久久国产女人_国产在线视频一区二区三区_国产91在线观_黄色1级毛片_丰满岳跪趴高撅肥臀尤物在线观看 | 丁香五月亚洲综合在线国内自拍_国产精品色一区二区三区_av网在线看_少妇高潮太爽了在线观看免费_美女裸浴偷拍视频引爆副本_国产一区视频在线观看免费_后λ式动态后λ式动态图av_av免费在线免费观看 | 99久久99久久免费精品_日本黄色综艺_91青娱_干美女在线_国产又色又爽又黄的视频在线_色综合呦呦_亚洲人成网站18禁止久久影院_日韩精品视频中文字幕 | www日本xx_gay亚洲男男gv在线观看网站_99pao在线视频国产_国产精品亚洲网站_黄色一级大片在线免费看国产一_自慰系列无码专区_国产乱free国语对白_中文字幕综合 | 97视频在线精品国自产拍_91精品国产一区二区三区动漫_国产高清色高清在线观看_国产精品久久久久久久久污网站_久久狠狠干_日本高清H色视频在线观看_一级片视频在线播放_国产SUV精品一区二区四 |