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

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

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

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

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

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

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

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

當然,我也發現了我寫書時候遺漏的該寫而未寫的技巧知識點?赡軡撘庾R里面,我自己覺得反正另一條路上有解決方案了,這邊這一條就沒必要去重復啰嗦實現了。特別是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
    發帖數量: 453 個
    工控威望: 769 點
    下載積分: 23072 分
    在線時間: 108(小時)
    注冊時間: 2019-04-02
    最后登錄: 2025-05-06
    查看eaglesence的 主題 / 回貼
    1樓  發表于: 2022-12-30 12:14
    這個跨窗口操作大家用的多嗎?

    主站蜘蛛池模板: 日韩美a一级毛片国产_91视频官网_JAPAN少妇洗澡VIDEOS_黄色一级视频在线观看_天天干天天操天天搞_亚洲成a人蜜臀av在线播放_777奇米888色狠狠俺也去_99久久精品毛片免费播放高清 | 日本亚洲9999aⅴ_亚洲欧美99_欧美嫩交一区二区三区_亚洲成人免费网站_日本三级视频在线观看_免费黄色一级片_国产无人区卡一卡二卡三乱码_亚洲精品成人久久一区二区 | 日本黄色大片视频_freesex性中国熟妇_色香欲www7777综合网_国产精品无码不卡一区二区三区_一级毛片av_日韩中文字幕亚洲精品欧美_日本喷奶水中文字幕视频_不卡的毛片 | 国产精品影音_国产一级做a爰片在线看免费_老头把我添高潮了A片_午夜神器成在线人成在线人_亚洲精品中文字幕日本久久久_天天操天天谢_九色视频人porny_91久久久久久久国产欧美日韩- | 婷婷欧美一区二区三区_成人无码精品一区二区三区亚洲区_tube8欧美大屁股xxxx_精品一区二区三区欧美_久草在线新体验_一级毛片在线a_交换一乱一性一爱_日韩亚洲国产中文永久 | 操人视频_91操女人_国产尤物_极品少妇的粉嫩小泬视频_91综合久久爱com_久久网在线观看_精品久操_国产精在线 | 久久人妇_激情动漫_国产精品福利在线观看无码卡一_欧美日韩在线二区_国产精品aⅴ_天天爱夜夜爱_又爽又黄又无遮挡的视频在线观看_艳魔大战春荡女淫3 | 亚洲精品一区二区在线播放_久久国产精品一国产精品金尊_久久国产精品一国产精品_在线国产日韩_狠狠色综合网站久久久久久久_8060yy中文无码视频在线观看_美女色站_中文第一区 | 亚洲一区二区三区_成人天堂视频在线观看软件_久久婷婷婷_天天综合色天天_欧美一级片毛片免费观看视频_丰满美女一级毛片_人人干人人舔_九九热国产 | 视频免费一区二区_久久国产极品_米奇影院7777_成人黄视频在线观看_日本熟妇五十路重生七零甜婚似火_交换国产精品视频一区_亚洲污视频在线观看_久久国产系列 | 亚洲综合国产一区_www.狠狠操.com_91视频福利网_欧美99热_国产观看_日本一级片视频_国产永久免费_亚洲精品久久久AV无码专区 | 免费在线观看国产精品_www在线_www..com黄色_91福利社在线_97热视频在线观看99_欧美在线天堂_粗大的内捧猛烈进出欧美_91综合中文字幕乱偷在线 | 女人高潮抽搐潮喷www软件_中国护士xxxxhd少妇_久草视频在线免费播放_好爽别插了无码视频_亚洲视频在线观看视频_国产chinesehdxxxx老太婆_欧美日韩国产成人_国产大片在线观看 | 久久国产热播_天天艹天天干天天_caoporn视频在线_亚洲一级特黄_一二三级毛片_日韩在线亚洲_欧美日韩国产精品一区_免费观看性欧美大片无片 | 国产精品18久久久久久av小说_91高清一区_好男人资源在线www免费_久久久噜噜噜久久中文福利_日本中文字幕一级_99精品视频免费观看_免费看片源_亚洲精品国男人在线视频 | 国产精品久久国产精品久久_xxxwww免费视频_极品人妻的娇喘呻吟_a级无毛_亚洲你懂的_久久精品女人天堂av444_日本99热_小蜜被两老头吸奶头在线观看 | 国产真实乱全部视频_在线男人天堂网_超级av在线天堂东京热_ww久久综合久中文字幕_成人黄色一区二区_国产av午夜精品一区二区三_sdde在线播放一区二区_成全免费在线看片 中文人字幕第三页_无码纯肉视频在线观看_99re国产在线播放_日本欧美高清全视频_日韩七区_亚洲第一最快AV网站_中日韩欧美风情视频_欧美成人一区二 | 一个人看的www视频网站_好色综合_在线观看一区亚_国产精品久久久久久久久久久新郎_亚洲va久久久噜噜噜久久男同_久热青青_伊人久久大香线蕉无码麻豆_美国三级 | 国产成人无码精品午夜福利A_日本熟妇HD人妻_国产成年无码a∨片在线韩国_秋霞福利_午夜精品91_AA片子吇中文字处女_欧美夜噜噜免费观看_国产精品青青草原免费无码 | 久久久久久久久久网_精品视频在线免费观看_亚洲av午夜精品无码专区_美女牲交视频一级毛片动态图_亚洲国产成人综合精品_浴室人妻的情欲hd三级国产_涩涩的视频_bbwcuckold精品熟妇 | 久草色香蕉_色原网九区_影视在线观看免费观看_国内精品视频在线观看免费网站_午夜爱爱免费视频_国产福利久久久_欧美老肥妇做爰bbww_日本三级欧美三级人妇视频黑白 | 久草在线一免费新视频_播放一级毛片_91偷自产一区二区三区精品_久久人妻无码毛片A片麻豆_午夜激情视频免费观看_精品女同一区二区三区免费站_四虎家庭影院_青青草国产精品人人爱99 | mmmwww在线看片观看_欧美色欧美亚洲另类二区_国产高清成人_奇迹少女第5季正版中文_免费成人视屏_久久精品屋_国产在成人精品线拍偷自揄拍_欧美日韩视频 | 成人在线观看中文字幕_91成人国产_免费观看a视频_国产精品一区二区三区在线看_国产一级免费av_yellow网站免费观看_国产精品美女高潮无套久久_亚欧美色 | 女人在厨房被添高潮全过程A片_麻豆网神马久久人鬼片_麻豆秋葵绿巨人无限观看_2020国产自慰福利_欧美又黄又嫩大片a级_欧美人与性囗牲恔配视频0_国产成人AV免费网址_青青青久久 | 男啪女视频免费观看网站_国产成人啪精品视频网站午夜_欧亚久久日韩av久久综合_9a蜜桃久久久久久免费_国产综合18久久久久久_国产www_国产精品久久久久久久久亚洲美女_日日爱网站 | 午夜aaa_毛片免费观看视频_一级久久_又湿又紧又大又爽又a视频_四虎午夜剧场_中文字母av_毛片毛片毛片毛_日韩午夜伦伦午夜伦老司机 | 高清在线看_精品婷婷色一区二区三区蜜桃_国产大片内射1区2区_av韩日_国产91区_日本熟妇丰满XXXXX18_免费视频成人_西西大胆无码视频免费 | 精品性影院一区二区三区内射_又大又湿又紧又爽a视频_亚洲日本一线产区和二线产区_92在线_穿靴子的猫在线观看_国产在线h_农村妇女野外牲交一级毛片_亚洲欧洲国产综合aⅴ无码 | 国产精品久久久久久2021_91久久老司机福利精品网_亚洲色大成网站WWW永久在线观看_特黄熟妇丰满人妻无码_999久久久精品视频_无码AV永久免费专区麻豆_欧美激情一区二区三区成人_亚洲人成人天堂 | 四色永久网址在线观看_首页国产欧美日韩丝袜_国产丝袜视频一区二区三区_青青国产在线_欧美一a一片一级一片_国产午夜精品视频免费不卡69堂_亚洲伊人一本大道中文字幕_中字一区 | 国产日韩欧美在线精品首页_亚洲偷精品国产五月丁香麻豆_娇小1213╳yⅹ╳毛片_日本高清www视频在线观看_欧美在线观看你懂的_国产精品久久久久久人妻_久久久精品免费看_久久人人妻人人做人人爱 | 少妇啪啪免费观看欧美三p_俺来也中文字幕_亚洲精品aaaa精品_69夜色精品国产69乱_人与狗精品aa毛片_视频福利一区_亚洲精品中文字幕乱码三区_成人免费视频a | 妇女性内射冈站HDWWWOOO_亚洲av无码av日韩av网站_青草欧美亚洲a视频在线_福禄影院午夜伦_亚洲美女影院_日日操操_国产偷窥熟女精品视频大全_国产在线一区二区三区AV | 久久99精品久久久66_毛片性做爰aaaaa_中国产一级毛片_日日操夜夜添_九九热线视频精品99_日韩视频一级_黄色国产在线_日本xxxx10 | 456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费_中文字幕一区三级久久日本_国产91精品看黄网站在线观看 | 久久久久久国产免费视网址_亚洲尺码一区二区三区_国产精品专区一_免费一级片在线_免费女人高潮流视频在线_avtt在线观看_亚洲精品国偷拍自产在线_国产成人av综合 | 天天综合日日夜夜_日日鲁夜夜如影院_99re视频热这里只有精品7_日本一区二区三区四区_国产做A爰片久久毛片A片白丝_97天堂_99视频在线_国产成人精品免费视频大全最热 | 99国产欧美另娄久久久精品_国内自拍农村少妇在线观看_久久亚洲道色宗和久久_日本aⅴ大伊香蕉精品视频_亚洲国产欧美日韩欧美特级_日本视频免费在线观看_日日操影视_曰本女人牲交全视频免费播放 | 中文字幕无码网址_久久免费国产视频_波多野结衣在线播放一区_国产丰满麻豆videossexhd_成人午夜一区_老司机午夜福利视频免费播放_日本潮喷videos_欧美亚洲精品在线 | 日韩高清网站_69免费视频_亚洲成AV人片乱码色午夜_欧美成人伊人_日本三级在线播放线观看视频_亚洲男GAY视频_超碰午夜_国产手机在线无码播放视频 |