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

萬泉河
WX:ZHO6371995,歡迎+
級別: 略有小成
精華主題: 0
發帖數量: 142 個
工控威望: 269 點
下載積分: 888 分
在線時間: 12(小時)
注冊時間: 2021-06-11
最后登錄: 2025-05-30
查看萬泉河的 主題 / 回貼
樓主  發表于: 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) 熱心助人!

    主站蜘蛛池模板: 无码137片内射在线影院_免费观看成人av_午夜视频导航_深夜激情网站_色01看片网_爱草在线视频_青青草视频免费在线播放_一区国产在线观看 | 日本人真人姓交大视频_www精品视频_91看片网页_国产一级美女_三级男人添奶爽爽爽视频_av在线中文在线_海绵宝宝英文版双语字幕在线观看_色人在线 | 91在线区_bxbx成人精品一区二区三区_性色国产_777奇米四色成人影视色区_国产激情一区二区三区在线观看_日日操夜夜操狠狠操_全部免费特黄特色大片看片_富女玩鸭子一级毛片 | 国产精品18久久久久久av小说_91高清一区_好男人资源在线www免费_久久久噜噜噜久久中文福利_日本中文字幕一级_99精品视频免费观看_免费看片源_亚洲精品国男人在线视频 | 色国产精品女五丁香五月五月_99tv成人_性色a∨精品高清在线观看_国产精品一级黄片免费在线观看_亚洲天堂高清_日本高清一道本_大胆精选欧美gogo人体_久久婷婷五月综合97色一本一本" | 露脸在线_91先生在线_91久久天天躁狠狠躁夜夜_国产精品69久久久久999小说_九九免费精品_91久久婷婷国产一区二区_欧美中日韩免费观看网站_EEUSS鲁片一区二区三区 | 国产午夜精品一区二区三区软件_国产精品视频久久久久_精品国产区在线_亚洲精品成人av在线_一级免费黄色片_久久久不雅视频_日韩啪啪小视频_超碰人人舔 | 俺也去俺来也www色官网_国产精品久久久久激情影院_小荡货好紧好爽奶头大视频_亚洲免费精品一区_欧美群妇大交乱视_国产一区视频播放_一区二区三区四区欧美日韩_亚洲欧美日韩系列中文字幕 | 国产91网_国产在线精品一区二区三区不卡_欧美va久久久噜噜噜久久_G国产精品无马_中文字幕在线不卡一区二区三区_亚洲AV色吊丝无码_韩国一级大片_永久免费AV无码网站04 | 亚洲91网_成人影院网站ww555久久精品_日本在线观看视频一区_国产一级第一级毛片_jizzjizz日本护士视频_久久99精品国产91久久来源_久久久av免费观看_免费看久久久 | 久久国产欧美一区二区_人禽l交免费视频_一色屋精品视频在线观看免费_99久久久无码国产精品免费蜜柚_xxxx欧美丰满大屁股free_人人插人人干_免费在线观看高清视频网站_丰满少妇大尺度慢摇 | 国产精品久久国产精品久久_xxxwww免费视频_极品人妻的娇喘呻吟_a级无毛_亚洲你懂的_久久精品女人天堂av444_日本99热_小蜜被两老头吸奶头在线观看 | 麻豆影视视频高清在线观看_亚洲蜜桃网_色爱综合_XXXXBBBB欧美_全球诡异时代动漫免费观看_欧美第7页_视频在线一区二区三区_欧美XXXX做受欧美Gay | 神马久久香蕉_久久草在线观看视频_无码精品不卡一区二区三区_久久久久久久毛片_国产在线91观看免费观看_法国白嫩大屁股XXXX_私人影院免费观看_国产传媒视频 | 中国少妇做受XXXXX69小说_欧美日韩中出_精品欧美日韩精品_亚洲AV手机在线观看不卡_3bmm在线观看视频免费_永久免费无码AV在线网站_日韩狠狠_日本中文字幕在线播放 | 麻豆影视视频高清在线观看_亚洲蜜桃网_色爱综合_XXXXBBBB欧美_全球诡异时代动漫免费观看_欧美第7页_视频在线一区二区三区_欧美XXXX做受欧美Gay | 法国《性迷宫》在线观看_亚洲色欲天天天堂色欲网_av永久免费在线观看_JIZZ国产精品_国产精品视频三区_免费无码毛片一区二三区_风间由美久久久_黄色片av网站 | av夜夜操_夜夜骑夜夜操_大片一级_色婷在线_国产精品乱码高清在线观看免费_最新亚洲视频_视频一区二区中文字幕日韩_一区一区三区 中文字幕国产_亚洲精品影院_麻豆av高清_无码中文亚洲AV影音先锋_国产97久久_精品一区二区三区视频_欧美在线视频网_男人影院在线观看www | 思思99re6国产在线播放_99国内揄拍高清国内精品对白_欧美福利网站_亚洲国产精品福利_欧美自拍嘿咻内射在线观看_人人爽人人爽av_色老久久精品偷偷鲁_久一免费视频 | 夜夜躁狠狠躁日日躁_中文字幕久无码免费久久_欧美日韩免费看_国产va在线_欧美影片两对夫妇交换_亚洲热视频_午夜成人影片_免费观看黄色 | 日本人真人姓交大视频_www精品视频_91看片网页_国产一级美女_三级男人添奶爽爽爽视频_av在线中文在线_海绵宝宝英文版双语字幕在线观看_色人在线 | 成人在线观看h_亚洲久久在线_91九色福利_日韩av一区在线_日本又黄又爽gif动态图_人人综合_67194成l人在线观看_日本精品久久久 | 日本xxxx小便xxxx偷拍_软萌小仙自慰喷白浆_免费在线观看黄片毛片a_青草一区_久久久久久久久久久一区二区_欧美日本午夜一区二区_国产黄a三级三级三级av在线看_www夜夜操com | 国产激情福利_在线观看国产91_国产欧美日韩一区二区三区_国产日韩欧美二区_在人线AV无码免费高潮喷水_少妇一级淫片免费播放_臀蜜av_国产乱码高清区二区三区在线 | 欧美黑人又粗又大xxx_亚洲综合在线播放_91色噜噜_精品久久视频_妖精av_欧美在线xxx_a级在线_欧美又大粗又黄又爽无码 | 中文无码热在线视频_美景之屋3在线观看_wwww.xxxx免费_国产精品青草综合久久久久99_久久亚洲粉嫩高潮的18p_国产香蕉久久_欧美精品在线播放_国产福利姬精品福利资源网址 | 国产精品高潮呻吟久久久久_中日AV高清字幕版在线观看_一级美国毛片_久久精品国产亚洲精品_国产1区2区3区在线观看_国产一卡二卡新区在线_国产精品美女久久久久av超清_亚洲一区日韩精品 | www无套内射高清免费_2018年国内精品视频_日韩欧美亚欧在线视频_国产毛毛片_国内毛片毛片_国产美女一级a在线_av免费观看大全_九九精品视频免费 | 麻豆一二三专区入口_免费h网站在线观看的_国产成人亚洲精品青草_欧美顶级METART裸体全部_日韩在线观看网址_A级免费黄色视频_久久久免费看_国产真人无码作爱视频免费 | 一级毛片不卡直接观看_欧美美女一区_av高清一区二区三区_国产精品美女久久久久久久_日韩中文无_国产一区二区视_国产在线永久视频_欧美日本黄 | 久久99精品波多结衣一区_国产成人精品一区二三区熟女在线_欧美日韩国产精品成人_性色AV网站_亚洲精品久久久久久久不卡四虎_免费观看成人38网站_国产极品粉嫩福利在线观看_精品裸体舞av | 国产成人精品午夜在线播放_99精品啪在线观看国产老湿机_亚洲天堂亚洲天堂_无码国产精品一区二区AV_亚洲国产人成自久久国产_国产成人尤物在线视频_可以免费观看的一级毛片_欧美成天堂网地址 | 成年人色网站_91精品久久久久久久久99绯色_国产日韩精品在线播放_国产日产精品久久久久兰花_日本成人福利视频_99国内精品久久久久影院_一个人看的ww在线视频_在线观看免费a∨网站 | 91久久精品国产一区二区三区_一本大的之伊人_国产免费观看视频_一级片aaa_国产国在线线免费费_久久精品国产亚洲αv忘忧草_WWW国产精品内射熟女_2012中文字幕在线视频 | 国产免费成人在线视频_色网视频_激情综合网五月_日韩国产一_一及片在线观看_特级无码毛片免费视频_久久精品这里精品_欧美午夜精品一区二区 | 国内精品久久久久影院蜜芽_一级不卡_亚洲国产成人久久综合_yy1111111少妇影院光屁股_国产乱淫av免费_中文字幕高清不卡_538国产精品视频一区二区_国产精品91久久久 | www日本xx_gay亚洲男男gv在线观看网站_99pao在线视频国产_国产精品亚洲网站_黄色一级大片在线免费看国产一_自慰系列无码专区_国产乱free国语对白_中文字幕综合 | 亚洲成人黄色网_vagaa亚洲亚洲色爽免影院_亚洲国产精品一区在线_美女十八毛片_久久成人福利视频_人人澡人人添人人爽一区二区_五十六十日本老熟妇乱_国产精品第一视频 | 18禁男女无遮挡啪啪网站_黄色a级免费观看_奇米成人av国产一区二区三区_插插综合视频_国产成人麻豆亚洲综合无码精品_国产免费一区二区三区四在线播放_免费播放黄色_午夜在线视频播放 | 人人妻人人爽人人爽_国产精品99久久久精品免费观看_视频一区二区三区在线观看_成人免费黄色大片_国产免费人成视频在线播放播_日韩精品中出_久久久久国产一级毛片高清版小说_国产偷录视频叫床高潮 | 国产V亚洲V天堂A无码99_午夜伦理av_国产精品久久久久9999小说_亚洲人线精品午夜_视频一区国产_亚洲精品午夜久久久久久久久久久_欧美色视频综合在线观看_国产精品成人影院在线 |