在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WINCC中獲取窗口變量前綴以及跨窗口操控的方法

opkgjew ? 來(lái)源:PLC標(biāo)準(zhǔn)化編程 ? 2023-01-09 11:15 ? 次閱讀

近段時(shí)間,不約而同的,網(wǎng)站論壇和煙臺(tái)方法學(xué)員中都有提出這樣的問(wèn)題。

比如:

l用C腳本如何獲得窗口中對(duì)象的變量前綴?

l用VBS如何獲得?

l用C腳本如何實(shí)現(xiàn)在一個(gè)窗口中操控父窗口下的另一個(gè)窗口內(nèi)的控件?

l用VBS如何實(shí)現(xiàn)?

這些問(wèn)題,都有個(gè)特點(diǎn), 提問(wèn)的時(shí)候先把編程語(yǔ)言給限定了。

而咱就不太有辦法拒絕。畢竟,人家有可能是在完成一個(gè)更復(fù)雜的工作,已經(jīng)在選定的語(yǔ)言下實(shí)現(xiàn)了大部分的功能,現(xiàn)在就在這一點(diǎn)點(diǎn)功能搞不定被卡主了,過(guò)不去了,才來(lái)求助的。

而如果不指定語(yǔ)言的話,其實(shí)我都早就有答案,特別是VBS的解決方案,都寫(xiě)在《西門(mén)子WINCC入門(mén)到精通》的書(shū)里了,所以只需要從書(shū)柜里把我自己的書(shū)拿出來(lái), 找到頁(yè)碼,把頁(yè)碼號(hào)告訴對(duì)方就可以了。

而且會(huì)發(fā)現(xiàn),大部分提問(wèn)者其實(shí)是有我的那本書(shū)的,只是通讀不夠細(xì)致,沒(méi)發(fā)現(xiàn),或者沒(méi)記住有這方面的介紹。驗(yàn)證了一個(gè)道理,對(duì)一本書(shū),最了解的還是作者自己。

當(dāng)然,我也發(fā)現(xiàn)了我寫(xiě)書(shū)時(shí)候遺漏的該寫(xiě)而未寫(xiě)的技巧知識(shí)點(diǎn)。可能潛意識(shí)里面,我自己覺(jué)得反正另一條路上有解決方案了,這邊這一條就沒(méi)必要去重復(fù)啰嗦實(shí)現(xiàn)了。特別是C腳本,對(duì)西門(mén)子來(lái)說(shuō)自從20年前的WINCC版本支持VBS之后,官方逐漸在弱化C腳本的地位, 我自己也逐漸淡化對(duì)其的研究和使用。想一碗水端平是永遠(yuǎn)不可能的。

在此先提醒大家, 提問(wèn)問(wèn)題的時(shí)候,盡可能不要限定編程語(yǔ)言。那樣的答案多的是,可以唾手可得。而非要限定語(yǔ)言了,尋找起來(lái)就會(huì)有一些難度。

所以,我這里做了個(gè)例子,進(jìn)行了測(cè)試,可以把這些坑填上了。 也算是對(duì)我自己著作中遺漏部分的補(bǔ)充。

d0611658-8441-11ed-bfe3-dac502259ad0.png

主畫(huà)面中是2個(gè)按鈕,分別演示了VBS腳本和C腳本彈出窗口的方法。

而彈出的窗口外觀相同,然而內(nèi)部的程序語(yǔ)言不同, 分別有按鈕按下后可以彈出對(duì)話框提示讀取得到了前綴。

而后, 將上述2個(gè)按鈕分別放到另一個(gè)叫做“窗口中操控”的窗口(PDL文件),腳本經(jīng)過(guò)稍微修改,實(shí)現(xiàn)了上述同樣的功能。

l按鈕11的單擊鼠標(biāo)中的VBS程序?yàn)椋?/p>

Sub OnClick(ByVal Item)

ScreenItems("畫(huà)面窗口1").TagPrefix="M001_"

ScreenItems("畫(huà)面窗口1").PictureName=Item.Text

ScreenItems("畫(huà)面窗口1").Visible=True

End Sub

而窗口中有2個(gè)獲取前綴的按鈕,同樣可以得到結(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

這里取了一個(gè)不存在的aa后綴的變量,然而也絲毫不影響功能。 因?yàn)檎Z(yǔ)法本身獲取的是變量名字,對(duì)變量是否有值是否合法根本不在意。

也注意兩種方式得到的前綴分別有分隔符和無(wú)分隔符的區(qū)別。

標(biāo)準(zhǔn)的用法當(dāng)然不能每次都通過(guò)腳本來(lái)獲取,而是會(huì)在子窗口打開(kāi)時(shí)即執(zhí)行腳本,獲取到前綴后,賦值到一個(gè)靜態(tài)文本中,窗口中任何需要的地方,可以通過(guò)讀取文本內(nèi)容得到。

Sub OnOpen()

'MsgBOX(Parent.TagPrefix)

ScreenItems("窗口前綴").Text=Parent.TagPrefix

End Sub

而如果畫(huà)面窗口中不需要顯示這個(gè)前綴,可以設(shè)置靜態(tài)文本為隱藏。這是官方例程中慣用的手法。

l按鈕12的單擊鼠標(biāo)中的C程序?yàn)椋?/p>

#include "apdefap.h"

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

SetPropChar(lpszPictureName, "畫(huà)面窗口1", "PictureName","窗口12-C獲取前綴.Pdl");

SetPropChar(lpszPictureName, "畫(huà)面窗口1", "TagPrefix", "M002_");

SetPropBOOL(lpszPictureName, "畫(huà)面窗口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-運(yùn)行系統(tǒng) - "); //獲得句柄

strcpy(Name,GetPropChar(GetParentPicture(lpszPictureName),GetParentPictureWindow(lpszPictureName),"TagPrefix")); //Return-Type: char*

MessageBox(hwnd,Name,"OK",MB_OK);

}

畫(huà)面打開(kāi)事件中文本內(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腳本實(shí)現(xiàn)的核心是一個(gè)GetParentPicture的函數(shù),可以得到窗口的父窗口的文件名字。而這個(gè)函數(shù)是個(gè)神仙函數(shù),各種幫助資料中都沒(méi)有見(jiàn)過(guò)介紹。所以只有從已有的使用演示程序中獲取。

l窗口中按鈕11的單擊鼠標(biāo)中的VBS程序?yàn)椋?/p>

Sub OnClick(ByVal Item)

Parent.Parent.ScreenItems("畫(huà)面窗口1").TagPrefix="M001_"

Parent.Parent.ScreenItems("畫(huà)面窗口1").PictureName=Item.Text

Parent.Parent.ScreenItems("畫(huà)面窗口1").Visible=True

End Sub

l窗口中按鈕12的單擊鼠標(biāo)中的C程序?yàn)椋?/p>

#include "apdefap.h"

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

char szParentPicture[512];

strncpy (szParentPicture, GetParentPicture(lpszPictureName), sizeof(szParentPicture));

SetPropChar(szParentPicture, "畫(huà)面窗口1", "PictureName","窗口12-C獲取前綴.Pdl");

SetPropChar(szParentPicture, "畫(huà)面窗口1", "TagPrefix", "M002_");

SetPropBOOL(szParentPicture, "畫(huà)面窗口1", "Visible", TRUE);

}

分別實(shí)現(xiàn)了上述同樣的功能。

當(dāng)然,我們也可以隨意的組合搭配按鈕和窗口內(nèi)的程序,都可以實(shí)現(xiàn)同樣的功能。 比如即便你程序的主體語(yǔ)言是C的或者VBS,然而窗口中的文本獲得前綴部分可以用VBS簡(jiǎn)單得到。

最后,這些具體產(chǎn)品知識(shí)點(diǎn)的技巧內(nèi)容我近幾年確實(shí)很少觸及了。 因?yàn)樵谖铱磥?lái)那都是基本功。我甚至也不去記憶具體的函數(shù)名字,比如上面的name還是tagname, TagPrefix還是Prefix, 都記不住的。我即便要使用,也都直接找現(xiàn)成的程序模塊看一眼,抄來(lái)用下即可。

而事實(shí)上,隨著標(biāo)準(zhǔn)化模塊化的推進(jìn),這些技能已經(jīng)很少用到了,因?yàn)樵缇头庋b完善在模塊中了。

有一些年輕人看到我近年來(lái)寫(xiě)各種科普文章,很少提及這些具體的技術(shù)技能技巧,懷疑我從來(lái)沒(méi)掌握這些技能,DISS我,甚至來(lái)跟我PK,只能是他們眼光太短淺了,你要從事技術(shù)工作,不是要把一項(xiàng)項(xiàng)的技能從年輕到年老記憶地牢牢的,以隨時(shí)使用。相反的是,大部分技能是需要封裝的,封裝以后直接使用,甚至自己要主動(dòng)把這些具體技能都遺忘掉,才可以有更多的精力去掌握更高層的知識(shí)。

最后,給大家的建議是,要盡量少自己從頭造輪子。

雖然我自己在成長(zhǎng)過(guò)程中,是摸著石頭過(guò)河每個(gè)輪子逐個(gè)造過(guò)來(lái)的,遇到任何問(wèn)題,也都抑制不住要自己親自造輪子的沖動(dòng)。 輪子的每一個(gè)細(xì)節(jié),如果不親自掌握,就會(huì)抓耳撓腮睡覺(jué)都不安心。

然而仍然要提醒同行后來(lái)者,這是一種非常低效率的行為。 你可以有好奇心,精力充沛的情況下可以對(duì)別人造好的輪子仔細(xì)研讀原理,自己可以從中掌握些基本功,然而自己從頭造輪子這件事,就要盡量避免了。

上述例程的實(shí)現(xiàn)方法,西門(mén)子官方的例子中其實(shí)原本就有,而且功能比我這里介紹的要全面而細(xì)致得多得多。

西門(mén)子官方例程中, BST例程較多的是使用了C腳本,而LBP例程(或者叫做BPL)相同的功能則更多是用VBS實(shí)現(xiàn)的。

這些例程我都已經(jīng)寫(xiě)文章推薦過(guò)多次了。這回就不再提供鏈接以及親自提供文件了,而只提供名字,需要者自己辛苦一點(diǎn)去找到并學(xué)習(xí)了解。 看來(lái)太容易得到的資料通常都不珍惜,只有自己辛苦一點(diǎn),千辛萬(wàn)苦得到的才會(huì)更加倍的去學(xué)習(xí)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • vbs
    vbs
    +關(guān)注

    關(guān)注

    1

    文章

    5

    瀏覽量

    11317
  • BPLC
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6482
  • plc編程語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    1177

原文標(biāo)題:1225 【萬(wàn)泉河】WINCC中獲取窗口變量前綴以及跨窗口操控的方法

文章出處:【微信號(hào):PLC標(biāo)準(zhǔn)化編程,微信公眾號(hào):PLC標(biāo)準(zhǔn)化編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用SNRBoost 3G技術(shù)的窗口

    電子發(fā)燒友網(wǎng)站提供《使用SNRBoost 3G技術(shù)的窗口.pdf》資料免費(fèi)下載
    發(fā)表于 10-18 09:44 ?0次下載
    使用SNRBoost 3G技術(shù)的<b class='flag-5'>窗口</b>

    控制臺(tái)窗口主機(jī)是什么

    主機(jī)是Windows操作系統(tǒng)的一個(gè)系統(tǒng)進(jìn)程,它負(fù)責(zé)管理和控制控制臺(tái)窗口的顯示和行為。 功能 : 承載控制臺(tái)窗口:conhost.exe進(jìn)程是控制臺(tái)窗口的宿主進(jìn)程,它負(fù)責(zé)創(chuàng)建和顯示控制
    的頭像 發(fā)表于 10-08 18:12 ?2263次閱讀

    中值濾波窗口大小對(duì)結(jié)果影響有哪些

    中值濾波是一種常用的數(shù)字濾波技術(shù),它通過(guò)將信號(hào)的每個(gè)點(diǎn)用其鄰域內(nèi)的中值替換來(lái)實(shí)現(xiàn)信號(hào)的平滑和去噪。中值濾波窗口的大小對(duì)濾波結(jié)果有很大的影響,以下是對(duì)中值濾波窗口大小對(duì)結(jié)果影響的分析。 窗口
    的頭像 發(fā)表于 07-29 09:10 ?1140次閱讀

    鴻蒙開(kāi)發(fā)接口圖形圖像:【@ohos.window (窗口)】

    窗口提供管理窗口的一些基礎(chǔ)能力,包括對(duì)當(dāng)前窗口的創(chuàng)建、銷毀、各屬性設(shè)置,以及對(duì)各窗口間的管理調(diào)度。
    的頭像 發(fā)表于 05-30 10:07 ?1182次閱讀
    鴻蒙開(kāi)發(fā)接口圖形圖像:【@ohos.window (<b class='flag-5'>窗口</b>)】

    emWin刪除子窗口后,焦點(diǎn)沒(méi)有返回父窗口為什么?

    emWin刪除子窗口后,焦點(diǎn)沒(méi)有返回父窗口
    發(fā)表于 05-14 06:43

    OpenHarmony實(shí)戰(zhàn)開(kāi)發(fā)-管理系統(tǒng)窗口(僅Stage模型支持)

    過(guò)程,開(kāi)發(fā)者可以自定義窗口的顯示動(dòng)畫(huà)。在隱藏系統(tǒng)窗口過(guò)程,開(kāi)發(fā)者可以自定義窗口的隱藏動(dòng)畫(huà)。本文以顯示和隱藏動(dòng)畫(huà)為例介紹主要開(kāi)發(fā)步驟。 開(kāi)
    發(fā)表于 05-06 15:32

    OpenHarmony實(shí)戰(zhàn)開(kāi)發(fā)-如何實(shí)現(xiàn)窗口開(kāi)發(fā)概述

    操作系統(tǒng)而言,窗口模塊提供了不同應(yīng)用界面的組織管理邏輯。 窗口模塊的用途 在OpenHarmony窗口模塊主要負(fù)責(zé)以下職責(zé): 提供應(yīng)用和系統(tǒng)界面的
    發(fā)表于 05-06 14:29

    IAR斷點(diǎn)停止后,鼠標(biāo)放在watch窗口中查看變量,IAR卡死退出怎么解決?

    IAR版本:8.32 操作過(guò)程如下: 1.在IAR設(shè)置相關(guān)端點(diǎn); 2.在觀察(watch)窗口中加入相關(guān)變量或數(shù)組,用于在程序斷點(diǎn)停止后觀測(cè)其數(shù)值變化; 3.運(yùn)行程序至端點(diǎn)停止后,一定會(huì)發(fā)生以下2
    發(fā)表于 04-19 07:21

    如何使用RA MCUADC窗口比較功能

    如何使用RA MCUADC窗口比較功能
    的頭像 發(fā)表于 04-12 08:06 ?410次閱讀
    如何使用RA MCU<b class='flag-5'>中</b>ADC<b class='flag-5'>窗口</b>比較功能

    鴻蒙OS元服務(wù)開(kāi)發(fā):【(Stage模型)設(shè)置應(yīng)用主窗口

    在Stage模型下,應(yīng)用主窗口由UIAbility創(chuàng)建并維護(hù)生命周期。在UIAbility的onWindowStageCreate回調(diào),通過(guò)WindowStage獲取應(yīng)用主窗口,即可
    的頭像 發(fā)表于 04-03 18:28 ?1237次閱讀
    鴻蒙OS元服務(wù)開(kāi)發(fā):【(Stage模型)設(shè)置應(yīng)用主<b class='flag-5'>窗口</b>】

    MCGS嵌入版組態(tài)軟件主控窗口的屬性設(shè)置

    MCGS嵌入版組態(tài)軟件的主控窗口是組態(tài)工程的主窗口,是所有設(shè)備窗口和用戶窗口的父窗口,主控窗口
    發(fā)表于 03-28 11:34 ?1344次閱讀
    MCGS嵌入版組態(tài)軟件主控<b class='flag-5'>窗口</b>的屬性設(shè)置

    窗口子系統(tǒng)基本概念與流程分析

    設(shè)置 ACE 的 UIContent 用于加載展示 UI 界面。基本上所有的 UI 視圖都是在窗口中展示的,比如彈窗、toast、系統(tǒng)狀態(tài)欄導(dǎo)航欄、應(yīng)用等。因此窗口子系統(tǒng)是系統(tǒng)圖形界面顯示所需
    的頭像 發(fā)表于 03-05 09:45 ?602次閱讀
    <b class='flag-5'>窗口</b>子系統(tǒng)基本概念與流程分析

    鴻蒙應(yīng)用/元服務(wù)開(kāi)發(fā)-窗口(Stage模型)體驗(yàn)窗口沉浸式能力

    的),達(dá)到預(yù)期效果。 二、開(kāi)發(fā)步驟 1.獲取應(yīng)用主窗口。 通過(guò)getMainWindow接口獲取應(yīng)用主窗口。 2.實(shí)現(xiàn)沉浸式效果。 調(diào)用setWindowSystemBarEnable
    發(fā)表于 02-06 15:08

    鴻蒙應(yīng)用/元服務(wù)開(kāi)發(fā)-窗口(Stage模型)設(shè)置應(yīng)用主窗口

    獲取應(yīng)用主窗口,即可對(duì)其進(jìn)行屬性設(shè)置等操作。還可以在應(yīng)用配置文件設(shè)置應(yīng)用主窗口的屬性,如最大窗口寬度maxWindowWidth等。 二、
    發(fā)表于 02-05 14:45

    鴻蒙實(shí)戰(zhàn)基礎(chǔ)(ArkTS)-窗口管理

    界面布局的編寫(xiě),并實(shí)現(xiàn)沉浸式效果。步驟如下: 獲取窗口window實(shí)例。 設(shè)置主窗口全屏顯示。 設(shè)置狀態(tài)欄與導(dǎo)航欄不顯示,其中names參數(shù)決定狀態(tài)欄、導(dǎo)航欄顯示狀態(tài),如需全部顯示,該參數(shù)設(shè)置為
    發(fā)表于 01-12 17:51
    主站蜘蛛池模板: 99久久精品费精品国产| 亚洲欧美日韩色图| 日本19xxxxxxxxx69| 最近在线观看免费完整视频| 五月激情丁香| 欧美丝袜一区| 亚洲国产精品久久婷婷| 亚洲色妞| 日本特黄特色| 另类视频色综合| 成年大片免费视频播放手机不卡| 亚洲精品亚洲人成人网| 婷婷精品视频| 天天干天天干天天| 色综合色综合| 午夜黄视频| 欧美不卡视频在线| 天天看爽片| 老色皮永久免费网站| 99久久综合狠狠综合久久男同| 欧美日本色| 特级做a爰片毛片免费看一区| 久久婷人人澡人人爽| 正在播放国产巨作| 四虎在线观看免费视频| 六月激情| 午夜999| 2020天天干| 国产叼嘿视频网站在线观看| 天堂bt种子资源地址在线| 看片地址| 天天操夜夜干| 国产免费好大好硬视频| 一级aaaaaa片毛片在线播放| 欧美三级视频在线| 午夜视频在线免费看| 日本69xxxxxxx69| 亚洲国产人成在线观看| 男女爱爱爽爽福利免费视频| 一区二区精品| 免费黄色欧美|