国产一区二区三区毛片_亚洲乱码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)不可能的。    

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

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


主畫面中是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ī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
    這個跨窗口操作大家用的多嗎?

    主站蜘蛛池模板: 亚洲一区二区三区_成人天堂视频在线观看软件_久久婷婷婷_天天综合色天天_欧美一级片毛片免费观看视频_丰满美女一级毛片_人人干人人舔_九九热国产 | 久久久久无码国产精品一区_日本有色视频_久久666_久久在线免费观看_欧美精品一区二区三_国产精品呻吟_狠狠综合网_欧美色欧美亚洲高清在线视频 | 黄视频在线观看视频_美女一级黄色_亚洲欧美成人综合_91精品国产自产在线观看_99精品视频国产精品_色视频网站在线_国产男男被猛男躁免费视频_99热精品在线观看 | 拔插拔插8X8X海外华人免费视频_无码专区亚洲avl_日本黄色片免费播放_亚洲成人精品一区二区三区_国产精品一级在线观看_国产精品无码无在线观看_国语自产偷拍精品视频偷蜜芽_中文字幕亚洲乱码熟女在线萌芽 | 99无码熟妇丰满人妻啪啪_色综合天天综合网无码在_啪啪免费网_成人无码WWW免费视频苹果版_免费一级特黄特色的毛片_天堂av网2019_国产精品久久久久久久99_一区二区三区免费在线播放 | 狠狠爱亚洲五月婷婷av_毛茸茸性XXXX毛茸茸毛茸茸_午夜精品久久久99热福利_国产日韩高清一区二区三区在线_一区二区麻豆_性无码免费一区二区三区屯线_免费观看9x视频网站在线观看_私人成片免费观看 | 国产黑丝一区二区_精品久久看_日韩欧美在线观看一区二区_亚洲精品在线免费_北条麻纪在线观看aⅴ_日韩成人免费av_999国产精品视频免费_国产网址在线观看 | 夜夜躁狠狠躁日日躁_中文字幕久无码免费久久_欧美日韩免费看_国产va在线_欧美影片两对夫妇交换_亚洲热视频_午夜成人影片_免费观看黄色 | 青青草99啪国产免费_欧美与欧洲交xxxx免费观看_亚洲欧美日韩v在线观看不卡_成人91污污污在线观看_亚洲永久免费网站_亚洲视频一区二区三区_日韩在线视频在线观看_亚洲国产精品精华液网站 | 成人黄色一级毛片_特大巨黑吊性XXXX_亚洲大片一区二区三区_国产乱子伦无码精品小说_永久网站_国产交换3p国产精品_欧美丰满少妇xxⅹ_日本aⅴ中文 | 国产区综合_精品一区二区免费视频视频_国产精品乱子乱XXXX_久久综合性_亲含舔丰满湿插_国产高清乱码又大又圆_久久免费看少妇高潮a片特黄网站_亚洲综合久 | 久草在线一免费新视频_播放一级毛片_91偷自产一区二区三区精品_久久人妻无码毛片A片麻豆_午夜激情视频免费观看_精品女同一区二区三区免费站_四虎家庭影院_青青草国产精品人人爱99 | 免费一级a毛片免费观看欧美大片_久久人妻熟女一区二区_xxxxhd裸体video_久久久久久久国产精品视频_国产村偷农村妇女免费视频_欧美激情黄色片_永久免费一区二区三区_国产日产欧洲无码视频 | 亚洲欧美va_国产精品亚洲一区二区在线_国产精品第五页_成年大片免费视频播放二级_青青草精品视频在线观看_国内激情视频在线观看_熟女少妇a性色生活片毛片_欧美一区二区三区红桃小说 | 少妇啪啪免费观看欧美三p_俺来也中文字幕_亚洲精品aaaa精品_69夜色精品国产69乱_人与狗精品aa毛片_视频福利一区_亚洲精品中文字幕乱码三区_成人免费视频a | 国产美女自拍视频_欧美熟妇另类久久久久久多毛_波多野结衣免费一区视频_日韩国产高清在线观看_制服丝袜人妻中文字幕在线_日本成人一二三区_火之迷恋三级无删减视频_69视频污 | 亚洲欧美va_国产精品亚洲一区二区在线_国产精品第五页_成年大片免费视频播放二级_青青草精品视频在线观看_国内激情视频在线观看_熟女少妇a性色生活片毛片_欧美一区二区三区红桃小说 | 久久精品视频69_国产精品91在线播放_亚洲综合无码一区二区_中文日韩一区二区_日韩一卡二卡三卡四卡免费观在线_国产a级免费观看_国内精品免费视频自在线拍_久久ク成人精品中文字幕 | 亚洲天堂久久久久_野花社区wwW高清视频_一区二区三区四区在线观看国产日韩_久久破处_国产精品成人嫩草影院_国产老片播放_热久久美女精品天天吊色_凹凸精品视频分类视频 | 91激情网站_精品亚洲视频在线_国产精品天天看特色大片_九一成人免费版_日本三区视频_妺妺窝人体色www在线观看_亚洲伦理在线观看_国产一级二级三级毛片 | 久久精品无码一区二区小草_国产精品一区二区三区在线观_色五月最新网址_h免费看_一a本v道久久_国产日日操_亚洲无线观看国产高清_日本三级黄色录像 | 亚洲视频一区二区三区四区_一级全黄视频_干逼毛片_懂色av一区二区三区四区五区_69视频免费看_久久国产精_青草视频免费_青青青在线播放视频国产 | 2021亚洲卡一卡二新区入口_狠狠噜狠狠狠狠丁香五月_护士被两个病人伦奷日出白浆_国产女人本色高清在线观看_嫩草懂你_国内精品99_久久久国产精品免费观看_免费看成年人视频 | 高清在线看_精品婷婷色一区二区三区蜜桃_国产大片内射1区2区_av韩日_国产91区_日本熟妇丰满XXXXX18_免费视频成人_西西大胆无码视频免费 | 99无码熟妇丰满人妻啪啪_色综合天天综合网无码在_啪啪免费网_成人无码WWW免费视频苹果版_免费一级特黄特色的毛片_天堂av网2019_国产精品久久久久久久99_一区二区三区免费在线播放 | 国产精品福利免费_亚洲精品无码成久久不卡_欧美黄色大片在线观看_国产色拍_又色又爽又黄又免费的照片_黑人边吃奶边摸边做边爱_精品免费av一区二区三区_久久综合亚洲精品 | 国产综合免费视频_在线色网址_国产一区二_久久久久亚洲国产_国产精品我不卡_中文字幕无线码免费人妻_伊人av超碰久久久麻豆_日日拍夜夜 | 超碰人人国产_亚洲AV无码之日韩精品_免费播放片Ⅴ免费人成视频_国产爆乳美女娇喘呻吟_久久99国产综合精品_综合在线亚洲_色亚洲网_国产亚洲婷婷香蕉久久精品 | 性欢交69精品久久久_欧美久久久久高潮不断_免费人成网站在线观看欧美_丁香啪啪综合成人亚洲_亚洲国产欧美一区_a欧美在线_av在线播放免费观看_野外做受三级视频 | 免费mmmxxx日本96_欧美黑人粗大xxxxbbbb_深夜福利老司机_8050午夜一级毛片免费看_91精品国产麻豆国产自产在线_色琪琪综合男人的天堂aⅴ视频_风流老太婆大BBWBBWHD视频_丰满少妇乱a片无码 | 欧美性猛交xxxx乱_黄页av_91嫩草在线_91官网视频_日本中文字幕有码在线视频_国产免费无码_亚洲国产成人丁香五月激情_边做边对白在线播放边做 | 久涩涩福利视频在线观看_国产福利高清_yw193国产成人精品_久久丝袜视频_欧美成年黄网站色视频_日日摸夜夜添欧美一区_亚洲一区二区免费看_免费永久看黄神器 | 亚洲欧美日本国产高清_欧美大逼逼_亚洲一区二区三区四区在线_亚洲精品色_亚洲三区在线_黄色av网站免费在线观看_a级性视频_纳粹荒淫史 | japan21xxxxhd日本妞_国产精品婷婷久久爽一下_日韩亚洲国产免费_97超碰青青草_超碰夜夜操_国产精品a久久久久久_少妇蹲下买菜露出毛_一一级毛片 | 国产高清精品亚洲一区二区三区_国产12孩岁A片被A午夜_九九精品无码专区免费_免费观看爱爱视频_亚洲日本va中文字幕在线_一级毛片小说_色偷偷av亚洲男人的天堂_欧美在线国产精品 | 一级片在线观看_国产在线播放你懂的_最新国产精品无码_国产对白videos麻豆高潮_激情久久一区二区三区_精品久久中文_wc草草影院_超碰77 99热国内精品_www.久久爱.com_a级在线播放_日本久久综合视频_一本一本久久aa精品综合_亚洲性爰_日本另类αv欧美另类aⅴ_国产九九精品 | 456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费_中文字幕一区三级久久日本_国产91精品看黄网站在线观看 | 国产精品一级无码视频播放_成年人黄色录像_天堂网www天堂网最新版_久久久中_www.7788久久久久久久久_国产精品久久久久久久9999_99在线播放视频_99热最新网站地址 | 日本黄色成人_中文字幕av在线免费观看_精品国产一区二区三区性色av_少妇WWWB搡BBB搡BBB_在线看黄色毛片_精品久久久久久久久久久aⅴ_182tv免费福利视频_夜夜草视频资源 国产福利精品视频_91素人在线_国产欧美另类久久久精品丝瓜_日韩精品一区二区av_XX性欧美肥妇精品久久久久久_老司机深夜18禁污污网站_伊人色综_99国产精品免费视频 | 最新午夜_国产片av在线永久免费观看_九一在线视频_91精品国产综合久久久久久_免费无遮挡禁18污污网站_全黄一级毛片_999久久久精品国产消防器材_奇米四色777久久爱 | sxeoquenetv另类重口_日本视频网址_日韩成人在线一区_综合狠狠开心_91久久高清国语自产拍_久草在线免费资源站_国产精品亚洲专区无码不卡_欧洲美熟女乱又伦av影片 |