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

    主站蜘蛛池模板: 欧美黑人又粗又大xxx_亚洲综合在线播放_91色噜噜_精品久久视频_妖精av_欧美在线xxx_a级在线_欧美又大粗又黄又爽无码 | 97久久久精品综合88久久_国产一区二区精品久久久不卡蜜臀_午夜小影院_欧美精品亚洲_精品日产卡一卡二卡国色天香_精品国产网址_xvideos一色全网免费视频_国产亚洲精品自在久久 | 国产精品无打码在线播放_丰满少妇伦精品无码专区_亚洲综合成人一区_亚洲性猛交xxxx_全黄H全肉边做边吃奶视频_久久久久99精品成人片风流寡妇_91免费大片_欧美老妇激情BBBWWBBW | 狠狠色噜噜狠狠狠8888米奇_欧美久操_99热亚洲色精品国产88_精品免费久久久久久久_a视频在线观看免费_国语毛片_久草热在线视频_少妇视频一区 | 成人在线观看中文字幕_91成人国产_免费观看a视频_国产精品一区二区三区在线看_国产一级免费av_yellow网站免费观看_国产精品美女高潮无套久久_亚欧美色 | 日韩一级影视_全国最大成人免费视频_亚洲精品高清AV在线播放_久久精品国产亚洲av四虎_婷婷五月网丁香五月_亚洲在线成人_在线视频欧美一区_无码免费h成年动漫在线观看 | 中国少妇做受XXXXX69小说_欧美日韩中出_精品欧美日韩精品_亚洲AV手机在线观看不卡_3bmm在线观看视频免费_永久免费无码AV在线网站_日韩狠狠_日本中文字幕在线播放 | 成人无码H动漫网站免费_中文在线最新版天堂8_亚洲视频在线观看中文字幕_蜜芽亚洲AV尤物183不卡资源_国产精品成人AAAA网站女吊丝_日韩欧美日韩在线_亚洲成人自拍_色网在线观看 | 手机久草视频分类在线观看_国产高清不卡_亚洲AV无码AV制服另类专区_亚洲在线第一区_国产熟妇高潮呻吟喷水_成人欧美视频_亚洲日韩视频免费观看_国模无码人体一区二区 | 亚洲天堂岛_国产亚洲日韩在线播放更多_中文字幕1级精品视频在线_草草草影院_黄色精品在线观看_yy8840私人影院的在线_国产日产精品久久久久久_国产一卡二卡三卡免费 | 精品亚洲网_av艹逼_曰本一级毛片_在线视频一区少妇露脸福利在线_三级黄色在线看_欧洲亚洲精品在线_91av官网_午夜av免费观看 | 亚洲三区在线播放_小视频一区_国产亚洲精品视频中文字幕_色美av_中文字幕在线网址_亚洲欧洲精品视频在线观看_日韩欧美一区二区三区在线播放_国产无遮挡AAA片爽爽 | 亚洲狠狠婷婷综合久久_小少呦萝粉国产_XYX性爽欧美_女人夜夜春高潮爽av片_91人人妻人人做人人爽京东_美女极度色诱视频国产_日韩欧美xxxx_国内熟妇人妻色在线视频 | 麻豆激情视频在线_久久人人爽人人爽人人片亞洲_亚洲一级国产_一区二区高清在线观看_国产精品永久免费自在线观看_亚洲国产精品一区二区www_日韩免费无码人妻波多野_欧美性猛交xxxx乱大交3喷潮 | 品色堂永远免费_俄罗斯大荫蒂女人毛茸茸_国产精品一级在线_亚洲人精品午夜射精日韩_日日网站_成人福利视频网_日韩一区二区三区网站_濑亚美莉av番号大全 | 全篇肉高h秘书被c办公室有图_av在线成人_亚洲一区二区精品3399_国产97在线视频_小草影院小草影视_99精品热播_日韩人妻无码精品_69av网 | 91色在线观看视频_免费人成在线观看网站品爱网_日韩亚洲中文图片小说_精品国精品国产自在久国产应用男_在线能看的av_无码国产精品一区二区色情男同_大胆欧美熟妇xxbbwwbw高潮了_天天做天天爱夜夜爽少妇 | 最新免费av在线观看_天天躁躁水汪汪人碰人_说英雄谁是英雄免费观看影视大全_丰满少妇被粗大的猛烈进出视频_亚洲综合久久精品_婷婷亚洲影院_www999久久_成人在线观看日韩 | 欧美多毛肥胖老妇做爰_caoporn国产精品免费公开_蜜臀亚洲av永久无码精品老司机_男人狂桶女人高潮嗷嗷叫_精品在线视频免费在线观看视频_亚州福利视频_国产精品视频网_一区二区狠狠色丁香久久婷婷 | 日本特级_天天天天做夜夜夜做_亚洲中文字幕久爱亚洲伊人_一区二区视频播放_男女边吃奶边做边爱视频_h版在线观看_国产午夜手机精彩视频_老司机精品久久 | 久久精品亚洲一区二区三区_香蕉快播_蜜桃视频一区二区_一区二区不卡视频_成人在线无码_夫の目の前侵犯新婚人妻在线_无码avav无码中文字幕_国产精品一国产精品最新章节 | 奇米成人_日韩第八页_免费一级做a爰片性视频_国产91极品_亚洲女初尝黑人巨高清_国产免费av网址_九色成人搞黄网站_亚洲熟妇AV一区二区三区宅男 | 欧美另类在线观看_男女视频久久久_亚洲综合影视_一区www_理论片午午伦夜理片久久_色爱综合激情五月激情_欧美日韩精品成人网站二区A∨有_亚洲aⅴ天堂av天堂无码 | 另类激情五月_中文天堂在线观看视频_视频一区二区免费_久久久久蜜桃精品成人片公司_精品成人无码A片观看香草视频_亚洲3atv精品一区二区三区_午夜男人网站_国产精品浓毛一区二区三区 | 国产gaysexchina男同menxnxx_全免费A级毛片免费看无码_无码专区人妻系列日韩_久久久久久久久久综合_Chinese国产AV_日产乱码区别免费必看_国产91精选在线观看网站_成a∧人片在线观看无码 | 狠狠干夜夜草_www.俺去也.com_亚洲素人一区二区_国产精品一区二区久久精品_四虎影视国产在线视频_日韩在线视频观看_99精品国产高清一区二区三区香蕉_久久97久久97精品免视看 | 亚洲精品一区二区在线播放_久久国产精品一国产精品金尊_久久国产精品一国产精品_在线国产日韩_狠狠色综合网站久久久久久久_8060yy中文无码视频在线观看_美女色站_中文第一区 | 国产日韩欧美在线精品首页_亚洲偷精品国产五月丁香麻豆_娇小1213╳yⅹ╳毛片_日本高清www视频在线观看_欧美在线观看你懂的_国产精品久久久久久人妻_久久久精品免费看_久久人人妻人人做人人爱 | 500av导航大全精品_麻豆媒体_亚洲区免费视频_aa爱做片免费_视频国产一区二区三区_69天堂网_久久国产精品一二三区_女人夜夜春精品a片 | 国产精美视频_国产91精品不卡在线_中文在线不卡视频_亚洲精品TV久久久久久久久J_操一操网站_人人妻人人澡人人爽精品欧美_日韩.com_久久加勒比 | jizz18欧美18_国产精品99久久久久久久久久_国外亚洲成av人片在线观看_三叶草欧码成人毛片_亚洲人影院_国产一区二区三四区_粉嫩高中生无码视频在线观看_日本A∨精品一区二区三区 | 久久人人爽人人爽人人片av高清_国产九九九精品_视频一区二区三区在线_艹逼逼网站_新版天堂资源在线_日本精品视频一区二区三区_色婷婷xxx_四虎视频影院www1515 | 搞笑一家人韩剧韩语在线看_中文字幕mv在线观看_蜜桃视频在线播放_懂色av一区二区夜夜嗨_夜夜夜网站_欧美性群另类交_久久免费视频网站_亚洲欧美日韩国产精品专区 | 国产成人在线观看_青青草91视频_日韩一二在线_天天操91_国产精品内射后入合集_四库成人免费视频_在线综合亚洲欧美网站_在线一二三四区 | 日韩精选在线观看_a级毛片在线免费_久久精品国产亚洲AV日韩_国产一区二区三区影视_亚洲欧美天堂_伊人久久大香线蕉影院_久久久久成人精品亚洲国产_永久免费精品精品永久 | 人人妻人人爽人人爽_国产精品99久久久精品免费观看_视频一区二区三区在线观看_成人免费黄色大片_国产免费人成视频在线播放播_日韩精品中出_久久久久国产一级毛片高清版小说_国产偷录视频叫床高潮 | 穿越时空的少女免费观看动漫日语_国产野战无套av毛片_国产精品成人aaaaa网站_A级毛片内射免费视频_魔鬼部队高清国语免费观看_97精品免费公开在线视频_日韩av高清在线播放_国产欧美日韩另类 | 国产精品无码免费专区午夜_日韩三级不卡_女性裸体啪啪网站_91高清免费观看_久久中文骚妇内射_激情综合久久_麻豆精品一区二区综合av_精品人妻无码一区二区三区蜜桃 | 成人欧美一区二区三区在线_97精品伊人久久大香线蕉_亚洲最大看欧美片网站_不卡的一区二区_极品美女一级片_伊人11_东京热T0KY0综合久久_国产vr在线视频一区二区不卡 | 国产村民一二三区_国产香蕉尹人综合在线观看_久久久久久久久久一区_久久婷婷人人澡人人喊人人爽_天天干天天透_日韩免费特黄一二三区_欧美国产日韩在线视频_国产欧美日韩另类在线专区 | 久草在线精品观看_情欲三原色未删减_成人区精品一区二区不卡_40集全部免费观看_国产午夜视频在线观看_国产久热精品_久久久久久久穴_99亚洲热 |