![wincc函數(shù)實例_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/cb2717eb-6a2c-441d-bb94-d3d5019488bf/cb2717eb-6a2c-441d-bb94-d3d5019488bf1.gif)
![wincc函數(shù)實例_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/cb2717eb-6a2c-441d-bb94-d3d5019488bf/cb2717eb-6a2c-441d-bb94-d3d5019488bf2.gif)
![wincc函數(shù)實例_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/cb2717eb-6a2c-441d-bb94-d3d5019488bf/cb2717eb-6a2c-441d-bb94-d3d5019488bf3.gif)
![wincc函數(shù)實例_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/cb2717eb-6a2c-441d-bb94-d3d5019488bf/cb2717eb-6a2c-441d-bb94-d3d5019488bf4.gif)
![wincc函數(shù)實例_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/cb2717eb-6a2c-441d-bb94-d3d5019488bf/cb2717eb-6a2c-441d-bb94-d3d5019488bf5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、如何在 WinCC 運行時通過按下一個按鈕來啟動一個程序,打印一個文本文件或者打開一個PDF文件?隱藏訂貨號顯示訂貨號訂貨號:說明:WinCC 在動態(tài)向?qū)Ю锾峁┝朔奖愕摹皢悠渌麘?yīng)用程序”功能來啟動一個外部程序。這個向?qū)梢粋€C 腳本。為了給這個程序添加參數(shù),可以打開該腳本并添加相關(guān)參數(shù)。下面提供了一些例子,這里只顯示了腳本中最重要的那一行語句。 序號.例程1調(diào)用標(biāo)準(zhǔn)程序: · ProgramExecute("C:WINDOWSwinhlp32.exe");2打開 PDF 文件: · ProgramExecute("C:progr
2、am filesAdobeReader 8.0ReaderAcroRD32.exe C:Tempdocument.pdf");3打印文本文件: · ProgramExecute("C:WINDOWSsystem32print.exe C:Tempdocument.txt /C");也可以在 WinCC 在線幫助中找到相關(guān)描述,在目錄 "WinCC 信息系統(tǒng) > 使用 WinCC > 用于創(chuàng)建函數(shù)和動作的 ANSI-C > ANSI-C 函數(shù)描述> 標(biāo)準(zhǔn)函數(shù) > Windows" ,如果您使用的是VBS,
3、則在目錄 "使用 WinCC > 用于創(chuàng)建程序和動作的 VBS > VBScript實例 > 常規(guī)例程"。 注意: · 在編寫 C 動作時,當(dāng)指定路徑時必須輸入雙斜線 ( "" ),否則會被解釋為一個控制字符。 · 當(dāng)調(diào)用某些文件類型(如 Microsoft Excel文件)時,需要輸入不止一個函數(shù)參數(shù)。因此,如果路徑規(guī)范里包含一個路徑,需要在函數(shù)參數(shù)里面將該路徑放在反斜線和雙引號標(biāo)志之間, (如,ProgramExecute("C:ProgrammeMicrosoft OfficeOFFICE1
4、1EXCEL.EXE "C:tempNew FolderMappe1.xls""))。 · 注意當(dāng)操作員打開系統(tǒng)窗口的時候,可能會有操作系統(tǒng)級別的系統(tǒng)操作。執(zhí)行完程序之后關(guān)閉這些窗口。 · 您可以用Win32 API函數(shù)終止一個程序,更多信息和例程可參考條目號 2976503。使用C函數(shù)“Sleep”隱藏訂貨號顯示訂貨號訂貨號:問題:如何在WinCC中編程“Sleep”等待功能? 解答:為此,可以使用Windows API功能“Sleep()”。下面的樣例程序演示了如何使用“Sleep”功能。 #pragma code("Kernel
5、32.dll")void Sleep(int Milliseconds);#pragma code() Sleep(1000); /time in milliseconds 警告:“Sleep”函數(shù)對動作處理性能有很大的負(fù)面影響。因此,如果想用此函數(shù)的話,請注意以下幾點: · 使用Sleep()時,C 腳本的處理在特定的一段時間內(nèi)被中斷。在此期間內(nèi),任何對于被中斷功能的請求將不被處理。 · 而且,使用相同觸發(fā)器的所有動作將不再被處理。使用相同的觸發(fā)器意味著用同一個循環(huán)觸發(fā)器所有動作或變量觸發(fā)器的所有動作將不再被處理。如果同步地調(diào)用動 作,這種調(diào)用通過一個變量觸發(fā)器
6、或事件被周期性地或非周期性地啟動,而且所有這些功能使用了Sleep()函數(shù),那么所有的動作會被終止。最壞情況下是; 由于啟動這四個動作將終止對所有動作的處理。 · 如果說,在一個帶10-秒延遲觸發(fā)器的動作中使用了Sleep()函數(shù)。那么所有被循環(huán)調(diào)用的動作將被中斷。結(jié)果是,如:用1-秒觸發(fā)器的動作操作中斷, 除此以外,所有后繼的動作也不被執(zhí)行。這就是說,不僅當(dāng)前的動作不被處理,其它還沒有啟動的動作也不會被處理。 · 作業(yè)不被處理是因為中斷仍儲存在隊列中。一旦中斷結(jié)束,所有在隊列中的動作將開始被處理。但是,中斷結(jié)束后,在隊列中的動作不會在他們原來指定的循環(huán)中被 處理。因此,如
7、同前面所述的那樣,那么隊列中剩下的動作將被一個接一個的處理而不再由觸發(fā)器啟動。并且這些動作只是盡可能快的被處理掉。 (理論上同步)。 如何打開一個應(yīng)用程序并保持其始終在前臺顯示?隱藏訂貨號顯示訂貨號訂貨號:描述:以 Adobe Reader 8.0 作為示例,我們將演示如何打開一個程序窗口并始終在前臺顯示。 No.程序1在按鈕事件的“鼠標(biāo)動作”中創(chuàng)建以下 C 語言函數(shù),例如: #include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszP
8、ropertyName) HWND Handle = NULL; Handle = FindWindow("AcrobatSDIWindow",NULL); if (Handle) ShowWindow(Handle, SW_SHOWNORMAL); else ProgramExecute("C:/Program Files/Adobe/Reader 8.0/Reader/AcroRD32.exe");
9、60; Handle = FindWindow(NULL, "Adobe Reader"); SetWindowPos (Handle, HWND_TOPMOST, 400, 200, 520, 420, 0); 注意:為了參數(shù)傳遞,Windows 函數(shù) “ HWND FindWindow(LPCSTR lpClassName, LPCSTR lpWindowName);” 需要窗口的類名或者窗口自己的名字。可以很容易的通過打開相關(guān)程序獲得窗口的名字(沒有文檔)。窗口名字會顯示在標(biāo)題欄。然而使用窗口名字時,當(dāng)打開文檔 時窗口名
10、字也許會發(fā)生改變。這也是為什么最好使用“ lpClassName ”參數(shù)的原因。2在按鈕事件的“鼠標(biāo)動作”中以下的 C 語言函數(shù), 從窗口名稱中確定了窗口的類名:為了顯示“ printf() ”函數(shù)的輸出,可以在 WinCC 畫面中加載“ GSC - Diagnostics ” 應(yīng)用程序窗口或者啟動“ apdiag.exe ”程序。 #include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) char winclass2
11、56; HWND Handle = NULL; Handle = FindWindow(NULL, "Adobe Reader"); if (!Handle) ProgramExecute("C:/Program Files/Adobe/Reader 8.0/Reader/AcroRD32.exe"); Handle = FindWindow(NULL, "Adobe Reader"); GetCla
12、ssName(Handle, winclass, sizeof (winclass)-1); printf ("Window Class Name: %s rn", winclass);在WinCC中如何加載用戶自定義DLLs?隱藏訂貨號顯示訂貨號訂貨號:描述:在WinCC中,您希望使用用戶自定義動態(tài)鏈接庫,在此條目,我們演示了如何在WinCC中加載一個實例DLL。在帶有VBS的WinCC運行 模式下,使用VB創(chuàng)建的DLLs不能被加載。 關(guān)于DLLs更多的信息可以在WinCC在線幫助系統(tǒng)下“使用WinCC>用于創(chuàng)建函數(shù)和動作的ANSI-C>在函數(shù)和動
13、作中使用DLL” 編號.過程1實例DLL:使用下面的程序代碼,利用C編譯器創(chuàng)建動態(tài)鏈接庫"T1_C.dll"。 在這里,您可以下載已經(jīng)可以編譯的DLL。T1_C.zip ( 17 KB ) extern "C" _declspec (dllexport) int aufruf1 (int a); #include <stdio.h>#include <windows.h>FILE *h_test;FILE *h_trace;extern "C" _declspec (dllexport
14、) int aufruf1(int a) h_test= fopen ("C:/temp/test_dll.txt","a"); if (h_test) fprintf(h_test, "Function 'aufruf1' was called!n"); fclose (h_test ); a+=100; return a;N.B. · 必須在無出
15、錯 信息后,創(chuàng)建動態(tài)鏈接庫。 · 所 有在WinCC中使用的DLL功能都必須使用相應(yīng)的語法在DLL的開始部分進行指定(在實例動態(tài)鏈接庫"T1_C.dll"的第一行)。 · 為 了能夠使用DLL功能,在WinCC中的動作或者函數(shù)中調(diào)用DLL,必須使用"#pragma code"語法。2在WinCC中的C腳本加載"T1_C.dll"動態(tài)鏈接庫并且執(zhí)行"aufruf1"功能:使用下列的WinCC變量: · var1 (signed 32-bit value) · result (s
16、igned 32-bit value)在一個按鈕的事件的“鼠標(biāo)單擊”C動作中輸入下面的C腳本: #include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) #pragma code ("c:/temp/T1_C.dll") int aufruf1(int a); #pragma code () int value; value = GetT
17、agDouble("var1"); /Return-Type: double SetTagDouble("result",aufruf1(value); /Return-Type: BOOL3結(jié)果: 圖. 01關(guān)鍵字:函數(shù)調(diào)用,API 調(diào)用打印機的狀態(tài)框隱藏訂貨號顯示訂貨號訂貨號:問題:如何從WinCC調(diào)用打印機的狀態(tài)框 ? 解答:“控制打印機”從控制面板上調(diào)用該框。 下面的動作必須在一個按鈕下加以編輯,比方說: #include "apdefap.h"void OnClick(char* lpszPictur
18、eName, char* lpszObjectName, char*lpszPropertyName)/ 打印機框的調(diào)用ProgramExecute("C:WIN.95control.exe printers"); 當(dāng)在WinCC腳本中結(jié)合一個DLL時,使用的內(nèi)存空間增加了隱藏訂貨號顯示訂貨號訂貨號:問題:如果使用Visual C+創(chuàng)建的一個DLL文件時,發(fā)現(xiàn)PC上使用的內(nèi)存增加了。對于這種情況,應(yīng)該怎么辦? 解答:檢查是否用正式發(fā)行的版本創(chuàng)建了DLL。所提供WinCC是正式發(fā)行的版本。這意味著WinCC也可以使用Microsoft DLL MFC42.DLL的發(fā)行版本。
19、如果在測試版本中有DLL文件,那么全局腳本中必須另外加載MFC42.DLL的 測試版本。另外,這會增加對內(nèi)存的用量。 在WinCC中始終使用DLL文件的發(fā)行版本。 可按如下方法創(chuàng)建發(fā)行版本: 1. 打開DLL的項目文件。 2. 檢查是否DLL已在Win32 Release組態(tài)下被創(chuàng)建。 3. 如有必要,把活化的組態(tài)切換到“Win32 Release”。在Microsoft Visual C+ Studio中的“創(chuàng)建”->“定義活化的組態(tài)”中做該切換。 4. 重新創(chuàng)建DLL。 5. 用DLL的發(fā)行版本替換測試版本的DLL。 在 WinCC 中通過 C 腳本輸出聲音隱藏訂貨號顯示訂貨號訂貨號
20、:問題:如何在 WinCC 中通過 C 腳本輸出聲音? 解答:附件是一個小實例。該 C 動作位于按鈕后,這樣只需單擊該按鈕就可產(chǎn)生聲音。 C 動作: #include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)#pragma code ("Winmm.dll ")VOID WINAPI PlaySoundA ( char* pszSound, char* hmo
21、de, DWORD dwflag );#pragma code()PlaySoundA("C:Winnt.400Mediatada.wav",NULL,1);該功能需要有聲卡。PlaySoundA 函數(shù)的說明: 1. 參數(shù) char* pszSound:指定聲音文件 (*.wav 文件) 的全路徑。 2. 參數(shù) char* hmode:總為 0。 3. 參數(shù) DWORD dwflag:SND_SYNC = 0x0000:聲音文件播放一次,該腳本一直等到播放結(jié)束SND_ASYNC = 0x0001:聲音文件播放一次,同時并行處理該腳本SND_NODEFAULT = 0x000
22、2:如果未找到該聲音文件,則不播放默認(rèn)值,而是什么也不播放。SND_LOOP = 0x0008:重復(fù)該聲音文件直到下個 PlaySoundA 調(diào)用 (只能通過 0x0001) => 總是指定 0x0009。這些參數(shù)也可通過逐位邏輯或進行組合 (如:SND_ASYNC | SND_LOOP)注意事項:如果想使用計算機內(nèi)部揚聲器的蜂鳴聲而不是聲音文件,則實現(xiàn)如下腳本:由于尋址內(nèi)部揚聲器,無需聲卡。
23、60; #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)#pragma code ("Kernel32.dll")BOOL Beep( DWORD dwFreq, DWORD dwDuration); /dwFreq 定義蜂鳴聲的頻率,單位:Hz
24、0;
25、0; /dwDuration 指定蜂鳴聲的持續(xù)時長,單位:ms#pragma code() Beep(1000,100);
26、
27、 /實例:頻率:1000 Hz,100 ms 如何創(chuàng)建 Windows MessageBox 并且確定操作員按下的是哪個按鈕?隱藏訂貨號顯示訂貨號訂貨號:說明:使用動態(tài)向?qū)А癙icture Functions > Display error box”可以創(chuàng)建在 WinCC 運行系統(tǒng)中顯示 Windows MessageBox 的 C 腳本。使用該向?qū)傻?C 腳本使用的是 Windows API 函數(shù)“MessageBox()”。關(guān)于這個函數(shù)的詳細(xì)信息可從 Microsoft 的“MSDN Library”中獲 得。 MessageBox() 函數(shù)的參數(shù):MessageBo
28、x 的顯示受以下這些參數(shù)的影響。 參數(shù)描述HWND hWnd父窗口的處理零 = 消息沒有父窗口LPCTSTR lpText消息文本LPCTSTR lpCaption文本的標(biāo)題如果該參數(shù)設(shè)為零,標(biāo)題將使用默認(rèn)的文本“Error”。UINT uTypeMessageBox 的類型;這個參數(shù)定義了 MessageBox 的外觀和行為。它是不同“Flags”的組合(逐位進行“或”操作)。 以下列出了一些主要的標(biāo)記:MB_OK,MB_OKCANCEL,MB_YESNO,MB_YESNOCANCEL,MB_ABORTRETRYIGNORE,MB_CANCELTRYCONTINUE,MB_HEL
29、P,MB_RETRYCANCEL使用這些標(biāo)記中的一個可以定義 MessageBox 中顯示哪些按鈕。MB_ICONEXCLAMATION,MB_ICONQUESTION,MB_ICONWARNING,MB_ICONINFORMATION,MB_ICONQUESTION,MB_ICONASTERISK,MB_ICONSTOP,MB_ICONERROR,MB_ICONHAND使用這些標(biāo)記中的一個可以定義 MessageBox 中顯示的圖標(biāo)。MB_DEFBUTTON1,MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4使用這些標(biāo)記中的一個可以定義默認(rèn)的按鈕。MB_SE
30、TFOREGROUNDMessageBox 顯示在最前面。MB_SYSTEMMODALMessageBox 定義為系統(tǒng)模式。消息直到確認(rèn)之前一直顯示在最前面。 重要事項:“MB_SYSTEMMODAL”標(biāo)記應(yīng)該總用于避免發(fā)生阻塞整個系統(tǒng)的可能。MessageBox() 函數(shù)的返回值: 返回值描述IDABORT,IDCANCEL,IDCONTINUE,IDIGNORE,IDNO,IDOK,IDRETRY,IDTRYAGAIN,IDYES函數(shù)的返回值是“int”類型并告知操作員按下的是哪個按鈕。 注意事項: · 如果 MessageBox 有“Cancel”鍵,并且操作員使用
31、“ESC”鍵終止 MessageBox,系統(tǒng)將返回 IDCANCEL 的值。 · 如果函數(shù)使用失敗,將返回“0”。更多的錯誤信息可通過調(diào)用“GetLastError()”函數(shù)獲得。 · 如果函數(shù)調(diào)用成功,函數(shù)將返回左邊給出的某個值(常數(shù))中的一個。下圖顯示了如何使用“MessageBox()”函數(shù)以及如何評價函數(shù)返回值。 ( 26 KB ) 圖 01 為何不能在 WinCC 中使用 Windows 消息框?隱藏訂貨號顯示訂貨號訂貨號:描述:不能在 WinCC 中使用 Windows 消息框有多個原因: · 只要打開消息框,就阻塞系統(tǒng)只要打開 Windows 消息框
32、,WinCC 運行系統(tǒng)保持“阻塞”狀態(tài),直到用戶關(guān)閉消息框。一旦關(guān)閉消息框,就緩沖并處理消息框外的鼠標(biāo)單擊事件。 · 可能阻塞整個系統(tǒng)打開消息框時如果沒有置位 "MB_SYSTEMMODAL" 標(biāo)志,則系統(tǒng)不能操作。這種情況下,如果在消息框外單擊鼠標(biāo)左鍵,則消息框切換到后臺,而單擊的應(yīng)用程序(通常為 WinCC 運行系統(tǒng))切換到前臺。打開消息框時不能操作 WinCC 運行時。但要關(guān)閉消息框,則消息框必須返回前臺。但是這在通過組合鍵(例如,"ALT-TAB")切換任務(wù)被阻止的情況下是不能實現(xiàn)的。只能通過斷開/接 通計算機來實現(xiàn)。當(dāng)仍然
33、需要使用消息框時,使用 "MB_SYSTEMMODAL" 標(biāo)志來確保系統(tǒng)保持可操作。 · 按鈕文本語言取決于 Windows 操作系統(tǒng)的語言在 Windows 消息框按鈕上顯示的文本取決于當(dāng)前為操作系統(tǒng)設(shè)定的語言。對于多種語言,則需要使用多語言版本(MUI)的操作系統(tǒng)。在運行時中,必須改變操作系統(tǒng)的語 言。欲知詳情,請參見條目號 21923800。 · 必須手動組態(tài)消息文本和標(biāo)題的語言切換條目號22907359介紹了如何組態(tài)消息文本和標(biāo)題的語言切換。補救措施:可使用 WinCC 工具來模擬 Windows 消息框功能。為此,可以將一個 WinCC 畫面窗口切換為可見。該
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人房屋租賃的合同(2篇)
- 2025年個人房屋買賣協(xié)議參考模板(2篇)
- 2025年二手房轉(zhuǎn)讓房產(chǎn)協(xié)議范文(2篇)
- 2025年五年級上班隊工作總結(jié)(二篇)
- 2025年主要農(nóng)作物新品種展示示范協(xié)議(6篇)
- 大型機械拆卸運輸合同
- 兒童樂園對公裝修合同
- 鐵路熱熔標(biāo)線施工方案
- 賓館改造瓦工單包合同
- 化妝品快遞配送合同范本
- 行政區(qū)域代碼表Excel
- 少兒財商教育少兒篇
- GB 1886.114-2015食品安全國家標(biāo)準(zhǔn)食品添加劑紫膠(又名蟲膠)
- 初二上冊期末數(shù)學(xué)試卷含答案
- envi二次開發(fā)素材包-idl培訓(xùn)
- 2022年上海市初中語文課程終結(jié)性評價指南
- 西門子starter軟件簡易使用手冊
- 隧道施工監(jiān)控量測方案及措施
- 桂花-作文ppt-PPT課件(共14張)
- 配電房日常檢查記錄表.docx
- 高一數(shù)學(xué)概率部分知識點總結(jié)及典型例題解析 新課標(biāo) 人教版 必修
評論
0/150
提交評論