国产清洁工av剧情精品_欧洲日韩av网站_国产视频手机在线播放_亚洲精品国产va在线观看蜜芽_AV网页在线好看_久久精品国产亚洲精品2023_一级日韩一级欧美_亚洲欧美日韩中文天堂_最近中文字幕mv在线视频_男女啪啪高潮激烈免费版网站

您好,歡迎訪問泰安宏盛自動(dòng)化科技有限公司!
20年專注工控自動(dòng)化研發(fā)制造 系統(tǒng)設(shè)計(jì)\制作\安裝一條龍服務(wù)
全國咨詢熱線:18605386049
當(dāng)前位置: 首頁 > 技術(shù)資料 > 程序案例

WinCC 中獲取鼠標(biāo)位置的應(yīng)用

作者:小編 時(shí)間:2023-06-11 23:52:00 點(diǎn)擊:

熱線支持的過程中有時(shí)會(huì)遇到一些客戶提出要在 WinCC 項(xiàng)目運(yùn)行時(shí),在畫面中捕捉到鼠標(biāo)的坐標(biāo)值。多年的熱線支持養(yǎng)成的習(xí)慣總是會(huì)驅(qū)使我考慮一下用戶要這個(gè)坐標(biāo)值干嘛用呢?當(dāng)然,問客戶是最直接的,得到最多的回答就是希望獲取這個(gè)坐標(biāo)的目的在于:當(dāng)在 WinCC 畫面中點(diǎn)擊設(shè)備圖標(biāo)時(shí)彈出設(shè)備的子畫面,希望彈出子畫面的坐標(biāo)根據(jù)鼠標(biāo)的坐標(biāo)來自動(dòng)確定,而不是在腳本中寫為固定的常數(shù)。當(dāng)然答案也不全是這個(gè),也有比較特殊用途的。

其實(shí)為解決客戶自動(dòng)確定彈出子畫面窗口坐標(biāo)位置的這個(gè)問題無需大費(fèi)周章,WinCC 的鼠標(biāo)事件中其實(shí)就已經(jīng)包含了鼠標(biāo)坐標(biāo)值。當(dāng)然也并不是所有鼠標(biāo)事件中都包含,首先來看一下 WinCC 按鈕中都有哪些鼠標(biāo)事件:

  • 單擊鼠標(biāo)
  • 按左鍵
  • 釋放左鍵
  • 按右鍵
  • 釋放左鍵

那哪些事件能夠簡單的獲取到鼠標(biāo)坐標(biāo)值呢?

很簡單,只要隨意打開一個(gè)按鈕事件的動(dòng)作腳本編輯器就能知道。

單擊鼠標(biāo) C 動(dòng)作:

按左鍵 C 動(dòng)作:

按右鍵 VBS 動(dòng)作:

細(xì)心的朋友應(yīng)該從截圖中就已經(jīng)找到答案了。除了單擊鼠標(biāo)動(dòng)作事件中沒有提供鼠標(biāo)坐標(biāo)值,其它動(dòng)作事件中都已經(jīng)默認(rèn)提供了鼠標(biāo)坐標(biāo)值,也就是截圖紅框中的 x 和 y 。

為什么唯獨(dú)單擊鼠標(biāo)事件沒有提供鼠標(biāo)坐標(biāo)值呢?這是因?yàn)閱螕羰髽?biāo)指的是鼠標(biāo)按下并釋放的一個(gè)完整過程,當(dāng)鼠標(biāo)指針在一個(gè)可操作對(duì)象上按下鼠標(biāo)左鍵時(shí),這個(gè)過程并未完成,此時(shí)如果想放棄操作只需要在按住左鍵不釋放而將鼠標(biāo)移動(dòng)至可操作對(duì)象范圍之外再釋放,相當(dāng)于就放棄了此次單擊操作。所以 WinCC 只提供了鼠標(biāo)按下以及釋放時(shí)的鼠標(biāo)坐標(biāo)值就已經(jīng)能完全滿足需要了。

清楚了這一點(diǎn),其實(shí)接下來要實(shí)現(xiàn)彈出窗口自動(dòng)確定坐標(biāo)的功能也就很容易實(shí)現(xiàn)了。首先簡單測試一下如何通過 C 腳本以及 VB 腳本來獲取并輸出鼠標(biāo)的 x 和 y 坐標(biāo)值,然后再應(yīng)用到實(shí)際需求中即可。

首先在畫面中添加兩個(gè)按鈕以及一個(gè)應(yīng)用程序窗口(窗口內(nèi)容:全局腳本;模板:GSC Diagnostics)。

1.鼠標(biāo)按左鍵時(shí) C 腳本獲取并輸出 x 和 y 坐標(biāo)值:

在按鈕“C 獲取 x,y 坐標(biāo)”的“按左鍵”事件中編寫腳本

void OnLButtonDown(

char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

printf("C 獲取的 x y 坐標(biāo):X: %d Y: %d\r\n", x, y);

}

2.鼠標(biāo)按左鍵時(shí) VB 腳本獲取并輸出 x 和 y 坐標(biāo)值:

在按鈕“VBS 獲取 x,y 坐標(biāo)”的“按左鍵”事件中編寫腳本

Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)

HMIRuntime.Trace "VBS 獲取的 x y 坐標(biāo):" & " X: " & x & " Y: " & y & vbCrlf

End Sub

激活 WinCC 運(yùn)行系統(tǒng)后,在畫面中鼠標(biāo)分別按下兩個(gè)按鈕后,應(yīng)用程序窗口中將會(huì)輸出鼠標(biāo)按下時(shí)的 x,y 坐標(biāo)值。

接下來就可以應(yīng)用到實(shí)際需求中了。將剛才的兩個(gè)按鈕當(dāng)作設(shè)備圖標(biāo),當(dāng)按下兩個(gè)按鈕時(shí)自動(dòng)根據(jù)鼠標(biāo)位置彈出子畫面窗口(以 VBS 為例)。

1.添加并編輯一個(gè)子畫面(DeviceDetail.pdl)

2.主畫面中添加一個(gè)畫面窗口(對(duì)象名稱:SubPic)

3.給兩個(gè)按鈕編重新編寫 VB 腳本

激活運(yùn)行后,分別按下兩個(gè)按鈕時(shí),彈出窗口則會(huì)自動(dòng)根據(jù)鼠標(biāo)按下時(shí)的坐標(biāo)位置彈出

以上方法都是由鼠標(biāo)動(dòng)作事件來獲取鼠標(biāo)坐標(biāo)值,如果希望在鼠標(biāo)移動(dòng)而不執(zhí)行鼠標(biāo)動(dòng)作事件時(shí)也實(shí)時(shí)獲取鼠標(biāo)位置是否可行呢?答案是肯定的,通過強(qiáng)大的 C 腳本也是可以實(shí)現(xiàn)的,方法如下:

在 C 全局動(dòng)作中添加一個(gè)全局動(dòng)作,并將觸發(fā)器設(shè)置為周期 250 ms

當(dāng)項(xiàng)目激活運(yùn)行后,在應(yīng)用程序窗口中就可以看到實(shí)時(shí)變化的鼠標(biāo)坐標(biāo)值。

通過這種方法也可以做出一些特殊的效果,例如導(dǎo)航菜單根據(jù)鼠標(biāo)位置的自動(dòng)彈出及隱藏。




QQ在線咨詢
聯(lián)系電話
17658151177
售后服務(wù)
17658151177