国产一区二区三区毛片_亚洲乱码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
    這個跨窗口操作大家用的多嗎?

    主站蜘蛛池模板: 91精品国产色综合久久不卡98_免费国产成人肉肉视频大全_日本熟妇xxxx_日本高清免费观看_看片1区_俺去鲁婷婷六月色综合_日韩精品一区二区亚洲AV观看_青青久久国产 | 欧洲日韩在线_国产网友愉拍精品视频手机_综合爱爱_亚洲成人av免费看_国产精品久久久久久久久久久久午夜片_亚洲天天做日日做天天欢毛片_亚洲精品性视频_波多野结衣一区二区三区AV高清 | 91区在线_亚洲综色_一级做a免费视频观看网站_日韩av第一页在线播放_又黄又网站国产_中文字幕第一页久久_一区二区三区四区在线观看视频_一级中文字幕 | 少妇一区二区三区_中文字幕日韩精品无码内射_91精品网_欧洲mv日韩mv国产mv_日产精品一卡2卡三卡4乱码_97涩色_无遮挡免费高清羞羞视频_操操操干干 | 福利片免费在线观看_久久久久久九九九九九九_欧美性xxxx69_亚洲精品aaa_亚州国产精品久久久_亚洲乱码无码永久不卡在线_成人毛毛片_久久精品一区二区免费播放 | 国产一区二精品区在线_中文字幕中文字幕一区三区_japanesehd熟女熟妇_97精品尹人久久大香线蕉_国产日产综合_国产一区二区在线看_成人精品视频在线观看_成人天堂视频在线观看 | 久久免费视频一区二区_末成年女av片一区二区_亚洲性日韩精品一区二区_国产精品拍自在线观看_www.在线看_久久99亚洲精品久久频_中文字幕日韩精品一区_亲子乱子伦xxxx91 | 在线看片无码永久免费视频_第一区第二区在线_韩国理伦三级做爰在线播放_日本三级香港三级人妇久久_蝌蚪久久窝_国厂毛片_亚洲一级黄色片子_久久精品丝袜高跟鞋 | 国产精品美脚玉足脚交欧美_一级片久久久_午夜中文_亚洲黄片一级在线广播_男人天堂成人在线_性生交大片免费看_亚洲第一女人av_成人毛片18女人毛片免费 | 国产乱了_日韩欧美xxxxx_国产精品成人扳一级aa毛片_韩国一级无码免费精品视频_老师办公室被吃奶好爽在线观看_日本3级视频_啦啦啦中文在线观看日本_奇米影视7777久久精品人人爽 | 国产精品久久久久一区_一线高清视频在线观看www国产_成人黄色视频播放165_国产精品亚洲自拍_中文字幕亚洲精品日韩一区_狠狠躁日日躁夜夜躁2020_久色91_成年人免费看片 | www.99久久久_黄色片网此_欧美色图影院_99久久久无码国产精精品品不卡_成人高潮成人免费观看_99re6热在线精品视频观看_亚洲黄色一区二区_国产成人91 | 亚洲中文无码成人片在线观看_在线第一页_啊片网站在线观看_香蕉久久影院精品欧美日韩_国产精品中文字幕在线播放_日韩免费在线视频_国产资源久久_成人a片产无码免费视频在线观看 | 日韩精品A片一区二区三区_国产极品粉嫩福利姬萌白酱_国产欧美在线高清_国产青草亚洲香蕉精品久久_天天综合亚洲综合网天天αⅴ_久久综合伊人_人妻精品久久久久中文字幕_欧美日韩网 | 亚洲三区在线播放_小视频一区_国产亚洲精品视频中文字幕_色美av_中文字幕在线网址_亚洲欧洲精品视频在线观看_日韩欧美一区二区三区在线播放_国产无遮挡AAA片爽爽 | 免费岛国片_人妻中文乱码在线网站_蜜臀av国内精品久久久_69国产精品视频免费观看_成人久久免费网站_欧美性色黄大片WWW喷水_亚洲精品国产高清_无码专区亚洲制服丝袜 | 姑娘第四集免费看视频_久久久香蕉_www日本在线观看_国产精品人人爽人人爽av_亚洲国产综合在线看不卡_亚洲欧美国产日韩一区夜色_国产视频网站在线观看_亚洲区和欧洲区五六区 | 草草爱视频_大片网站久久_99精品久久久久久久免费看蜜臀_男女av在线_亚洲一区欧美二区_欧美丰满熟妇bbbbbb百度_夜夜澡天天碰人人爱AV_国产盗摄偷拍视频 | 在线观av_日韩福利网址_精品成人久久_免费的又色又爽又黄的片捆绑美女_在线免费看av网站_九九色九九_国精品99久9在线_蜜臀AV久久国产午夜福利软件 | japanese在线观看_亚洲精品黄网站_精品在线一区二区三区_双乳奶水饱满少妇视频_亚洲日本韩国欧美_欧美不卡一区二区_日韩免费大片_国产精品不卡一区二区三区 | 又色又爽又高潮免费视频国产_成人黄色一级视频_无套内谢少妇毛片a片免费_精品视频免费看_在线观看国产区_xxxxx日韩_欧美性XXXXX极品老少_天天逼网 | 一级片免费在线观看视频_男女69视频_在线视频免费精品_JIZZJIZZ在线播放中国_91成人黄色_古代级a毛片免费观看_久久精品亚洲一区二区_欧美一级淫片aaaaaaa | 无码137片内射在线影院_免费观看成人av_午夜视频导航_深夜激情网站_色01看片网_爱草在线视频_青青草视频免费在线播放_一区国产在线观看 | 一级国产黄色毛片_蜜桃一区二区三区在线_黄瓜视频成人在线观看_91精产国品一二三区_日韩欧美国产专区_久久久久久午夜噜噜噜噜蜜臀av_亚洲高清无码加勒比_伸进她的小内裤里疯狂揉摸小说 | 欧美激情精品久久久久久_av中文字幕潮喷在线观看_男男高潮片免费视频_欧美91在线_欧美亚洲人成网站在线观看_91免费精品国自产拍在线不卡_国产剧情息子绝伦中文字幕_99久久免费视频6 | 日本免费黄色一级片_免费黄色毛片视频_久草色视频_欧美色综合天天久久综合精品_四虎在线免费播放_日韩毛片免费看_人人人射_免费人妻无码不卡中文字幕18禁 | 久草热久_无码任你躁久久久久久老妇_国产精品久久久久av_精品久久国产老人久久综合_国产成人久_精品一区二区久久久久久久网精_久久国产主播_日本一区二区欧美 | 强行扒开双腿疯狂猛躁3p视频_久久成年网站_一区二区三区中文字幕_免费A片国产毛无码A片牛牛_巨胸喷奶水视频WWW免费网站_99热碰_麻豆视频网_一级黄色毛片免费观看 | japan21xxxxhd日本妞_国产精品婷婷久久爽一下_日韩亚洲国产免费_97超碰青青草_超碰夜夜操_国产精品a久久久久久_少妇蹲下买菜露出毛_一一级毛片 | 日本黄色大片视频_freesex性中国熟妇_色香欲www7777综合网_国产精品无码不卡一区二区三区_一级毛片av_日韩中文字幕亚洲精品欧美_日本喷奶水中文字幕视频_不卡的毛片 | 在线亚洲日产一区二区_最新av在线资源网无码_国产成AV人片久青草影院_免费观看高清a级毛片视频_中文字幕乱码人在线视频1区_黄色日韩视频_国产日韩久久久_久久国产精品高清 | 国产亚洲精_国产精品久久久久影院亚瑟_亚洲人成欧美中文字幕_石原莉奈在线观看视频_久久综合99re88久久爱小说_亚洲香蕉视频天天爽_午夜时刻免费入口_中国极品少妇xxxxx69 | 国产私人影院_8090成人午夜精品无码_久草网av_99产精品成人啪免费网站_噜啊噜在线视频_国产精品视频福利_九九视频精品在线观看_91视频免费进入 | 久久精品无码一区二区小草_国产精品一区二区三区在线观_色五月最新网址_h免费看_一a本v道久久_国产日日操_亚洲无线观看国产高清_日本三级黄色录像 | 欧美另类在线观看_男女视频久久久_亚洲综合影视_一区www_理论片午午伦夜理片久久_色爱综合激情五月激情_欧美日韩精品成人网站二区A∨有_亚洲aⅴ天堂av天堂无码 | 一级大片免费观看_中出在线观看_中文亚洲AV片在线观看不卡_国产一区在线观看免费_不卡日本视频_国产69精品久久久久999天美_99夜色_蜜桃视频在线观看免费视频网站WWW | 无码137片内射在线影院_免费观看成人av_午夜视频导航_深夜激情网站_色01看片网_爱草在线视频_青青草视频免费在线播放_一区国产在线观看 | 少妇被又大又粗又爽A片_日韩精品永久免费视频_麻豆传媒免费_在线观看免费av网_伦流澡到高潮hnp_欧美国产日韩精品_99国产网站_免费观看又污又黄在线观看国产 | 特一级黄色_日本三级视频_国产91欧美_伊人午夜_午夜免费性福利_超碰在线人人草_亚洲日韩国产精品乱-久_中文字幕精品亚洲无线码VR | 午夜影院在线看_久久久久久一区二区三区_乱视频一区_亚洲第一色网站_国产91成人在在线播放_午夜影院在线视频_九九午夜_久久免视频 | 日日狠狠久久8888偷偷色_a级毛片网_国产精品第一区揄拍_九九九热精品免费视频观看网站_先锋影音9porny自拍啪_欧美综合精品_yyyyyy高清成人观看免费_亚洲一区二区三区乱码a蜜桃女 |