TWI448860B - 擷取機台之圖形介面視窗之元件的程式參數的方法和機台之操作方法 - Google Patents
擷取機台之圖形介面視窗之元件的程式參數的方法和機台之操作方法 Download PDFInfo
- Publication number
- TWI448860B TWI448860B TW100150006A TW100150006A TWI448860B TW I448860 B TWI448860 B TW I448860B TW 100150006 A TW100150006 A TW 100150006A TW 100150006 A TW100150006 A TW 100150006A TW I448860 B TWI448860 B TW I448860B
- Authority
- TW
- Taiwan
- Prior art keywords
- component
- window
- machine
- data group
- associated component
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Description
本發明是有關於一種擷取機台之圖形介面視窗之元件的程式參數的方法和一種機台之操作方法。
有許多工廠內,例如半導體廠,仍有正在線上服務的機台採用基於視窗的圖形介面(GUI),而多數機台的程式為封閉性,亦不具彈性延伸功能硬體上。如此,此等機台難以與新一代的整廠設備通訊或是整合。
但是,這些機台的資料、狀態與控制仍然必須整入到工廠的電腦整合製造(CIM)系統中。故此,傳統的處理方式為程式人員使用「攔截」工具(Hooking Tool)進行人手收集上述機台的GUI上程式參數的動作,以取得機台主控軟體GUI上程式參數。但是,在進行上述人手收集程式參數的動作,會花費很多時間。由於產線吃緊,不能停機;為了收集程式參數而讓機台暫停會影響產能。
更何況是所收集到的程式參數具有不確定性,很可能會在程式下次執行時或多次以後改變。一般程式撰寫為將收集到的程式參數直接固定(hard-coded)的引用於專屬的程式中。若某一軟體參數的不確定性的狀況沒有被發現,這隻程式會產生錯誤,程式人員需要多次重新的收集程式參數或反覆的測試或重新改寫程式,才能修正或確定正確可以使用的程式參數。如此,輕則增加機台暫停的時間,嚴重則造成錯誤的分析或控制結果。又當目標程式參數過多,人工比對耗費時間以指數增加。
一座工廠中可能有百種以上不同類型的機台,而機台價格動輒數千萬元,加上產線吃緊,停機是萬不得已的事情。為此,需要有別於上述傳統做法的新技術產生以有效的延伸機台的功用。
實施例提供有關於一種擷取機台之圖形介面視窗之元件的程式參數的方法和一種機台之操作方法。
根據一實施例,提供一種擷取機台之圖形介面視窗中之元件的程式參數的方法,其包括以下步驟。檢測一機台之一圖形介面視窗中之一元件的選取行為。取得用以尋找此選取之元件之一第一資料組。呈現此第一資料組於一視窗畫面並伴隨對應到此資料組的複數個指示,以得到一確認之第二資料組。回應一接受操作,儲存此確認之第二資料組於一資源檔案中。此資源檔案包括至少一儲存資料組,各該至少一儲存資料組用以定位該機台之該圖形介面視窗中之一關聯之元件且用以定義在該關聯之元件上執行之一對應的操作,其中該至少一儲存資料組包括該確認之第二資料組。
根據一實施例,提供一種機台之操作方法,其包括以下步驟。提供一資源檔案,其中該資源檔案包括至少一儲存資料組,各該至少一儲存資料組用以定位該機台之該圖形介面視窗中之一關聯之元件且用以定義在該關聯之元件上執行之一對應的操作。讀取此資源檔案。從一圖形介面中取得由此資源檔案的各該至少一儲存資料組對應之該關聯之元件的一視窗控制代碼。回應代表透過取得之該至少一視窗控制代碼之一對應之一關聯之元件執行一對應的操作之一要求訊息,選擇與該視窗控制代碼對應之一參數模板。依據該視窗控制代碼及該參數模板,對該關聯之元件執行該對應的操作。
上述的對應的操作可以是資料讀取操作或使用者操作。
為了對上述及其他方面有更佳的瞭解,下文舉實施例,並配合所附圖式,作詳細說明如下:
實施例提供有關於一種擷取機台之圖形介面視窗之元件的程式參數的方法和一種機台之操作方法。在一實施例中,利用機台之操作方法,藉由一資源檔案,可以延伸機台之通訊功能,讓機台得以接收要求訊息而進行對應的操作,例如是資料讀取操作或使用者操作。在一實施例中,更得以遠距方式監控。
第1圖是為依據一實施例的延伸機台之通訊功能的架構。首先假設一機台10如工廠中的生產設備如半導體製程設備。機台10除了包括生產上的機器或電機設備外,更具有一提供人機介面的電腦系統或嵌入式系統,例如包括處理模組、記憶體或通訊模組。此電腦系統或嵌入式系統是採用一圖形介面視窗之任何作業系統如Windows或Unix之類的系統,其中執行一應用程式,如第2圖所示意的應用程式的圖形介面20,例如用以監察和控制機台的運作。也就是,應用程式的圖形介面20一方面輸出此程式或機台的操作參數(如機台的運作中的參數如壓力、溫度、狀態);另一方面讓使用者藉由此圖形介面20進行操作,舉例而言:如設定程式、輸入資料或選擇項目等等可能之使用者操作,以設定或改變應用程式或機台的運作方式,例如是選取或改變機台的製程配方(recipe)。
例如半導體機台必須於運轉生產期間與主機保持密切的通連,以接受來自主機電腦的控制或詢問,並且能即時回應主機之要求與回報執行結果;除此之外亦需主動回報目前機台的異常狀況。故此,如第1圖所示,延伸機台之通訊功能的架構包括:前端處理程式100及後端處理程式102。在前端處理中,使用者依據各種後端應用的的需求,利用前端處理程式100擷取應用程式的圖形介面20中與輸出操作參數和與執行使用者操作對應之多個元件的資料組,產生至少一資源檔案。這些資料組是用以於後端處理中,據以用以取得所對應的元件的視窗控制代碼的內容。
在後端處理中,執行後端處理程式102以從運作中的應用程式的圖形介面20中取得此資源檔案所指出的這些元件的視窗控制代碼,並藉由一通訊連結LK與機台10之外的一運算裝置連結,例如為閘道器12。請同時參閱第4圖,閘道器12具有此通訊連結LK所需的通訊介面,例如為TCP/IP、SECS(SEMI Equipment Communication Standard,半導體設備通訊標準)或其他通訊協定,以作為機台10與其他系統通訊的中介者,其中閘道器12例如包括一處理器120和一通訊單元121,通訊單元121用以提供通訊介面。故此,機台10藉由後端處理程式102能回應閘道器12發出之資料讀取請求(如要求訊息RQ1,RQ2),從機台10之應用程式中取得操作參數而輸出至此閘道器12,以及回應閘道器12發出之使用者操作請求,對機台之應用程式進行使用者操作。在此架構下,使用者更可建構其他的後端處理,例如自動化的監控程式於閘道器12之中或整合到工廠的電腦整合製造(CIM)系統,以延伸機台10的通訊及自動控制的功能。例如實現SECS的SVID的訊息流作為機台10與閘道器12通訊的方式,尤其是在應用程式200為不具有SECS支持的封閉系統之情況下。
第3圖為第1圖之實施例中之前端處理的軟體實施示意圖。第3圖示意機台10的作業系統30中執行應用程式200之時,執行前端處理程式100(或實現為由多個程式模組所組成的軟體),讓使用者利用前端處理式100,在應用程式200之圖形介面20上選取圖形介面的元件並配合前端處理式100的圖形介面的操作,以產生一資源檔案。前端處理程式100實現一擷取機台之圖形介面視窗中之元件的程式參數的方法。第5圖為擷取機台之圖形介面視窗中之元件的程式參數的方法之一實施例的流程圖。如第5圖所示,步驟S110檢測機台10之圖形介面視窗中之一元件的選取行為。例如第2圖所示,前端處理程式100讓使用者能利用滑鼠或觸控方式或其他輸入裝置,框選或點選在應用程式200之圖形介面20上的任何圖形介面視窗的元件。這些元件例如主視窗的下拉式命令列201和202、輸出之文字方框203、輸入之文字方框204、按鈕213,或主視窗的分頁210之中的元件,如下拉式選項211或按鈕213。
步驟S120取得用以尋找此選取之元件之一第一資料組。此第一資料組例如包括此選取之元件對應之一視窗類別以及相對座標和大小和相對於此選取之元件之至少一父元件之一視窗類別以及相對座標和大小。例如,使用者(如第2圖之虛線框S1所示)框選出輸出之文字方框203之後,前端處理程式100視之為一目標元件,故取得此目標元件的第一資料組,即此目標元件的視窗控制代碼(handle)以及有關的視窗的參數。例如以作業系統30為Windows系統為例,Windows系統的Win32應用程式介面(API)提供了多個相關的API:GetCursorPos(),WindowFromPoint(),GetWindow(),EnumChildWindows(),GetParent()。前端處理程式100在實現步驟S120時,可以藉由使用作業系統30提供的API藉由取得滑鼠指標的位置(或所框選的範圍)所對應到的元件的視窗控制代碼(handle),並進一步取得其他程式參數,例如類別名稱(Class Name)、元件的座標和大小、元件的標題(Title)、處理程序的路徑(Process Path)之各種程式參數。
步驟S130呈現此第一資料組於一視窗畫面並伴隨對應到此第一資料組的複數個指示,以得到一確認之第二資料組。例如第6圖示意前端處理程式100實施步驟S130的一示意圖。在第6圖中,前端處理程式100列舉了一個被選取之元件,例如一子視窗的元件,所得到的程式參數的結果,其中畫面600呈現每項程式參數,並且在其右邊,伴隨了核取方塊(checkbox)且在合適的參數上加注了以鉤號代表的指示,讓使用者知道該項是建議的項目並預設選取了該項,可作為在後端處理時據以作為取得相同元件的視窗控制代碼的程式參數。此外,使用者可以設定目前資料組所對應的元件所卻執行的對應的操作,例如:使用者可以按下在第6圖中,對應到「資料讀取操作」及「使用者操作」之按鈕以作設定。此時,若使用者同意,例如可透過按下「存為檔案」的按鈕,以將接受的程式參數項目存進資源檔案之中,得到一確認之資料組。若使用者認為需要或不需要某項,可以自由選擇。另外,可設定「編輯」按鈕於此畫面中,可讓使用者用手動輸入或更改。而上述只是舉例而已,在程式設計領域之通常知識當知呈現資料組之實現步驟S130的方式並不以此為限。
步驟S140回應一接受操作(例如按下如第6圖中的「存為檔案」或「OK」的按鈕或其他操作指令),儲存確認之第二資料組於一資源檔案中,其中第二資料組也就是被選取的程式參數經確認後被儲存到資源檔案中。步驟S140儲存到資源檔案中的第二資料組,統稱為儲存資料組。資源檔案包括至少一儲存資料組,各該至少一儲存資料組用以定位該機台之該圖形介面視窗中之一關聯之元件且用以定義在該關聯之元件上執行之一對應的操作,即「資料讀取操作」或「使用者操作」,其中該至少一儲存資料組包括該確認之第二資料組。對應的操作例如在資源檔案中以「輸出」的標示代表「資料讀取操作」,以「輸入」的標示代表「使用者操作」,其中有關的標示是相對於機台的應用程式而言的命名方式,僅為舉例而已,實作時當可改以其他命名方式標示,故不以此為限。而對應的操作為「輸出」的儲存資料組,又可稱為輸出資料組;對應的操作為「輸入」的儲存資料組,又可稱為輸入資料組。資源檔案可能只有包括至少一輸出資料組;或只有包括至少一輸入資料組;或是包括兩種資料組。在另一實施例中,資源檔案例如包括一輸入部分及一輸出部分,例如第9圖所示意的結構化方式呈現,例如以結構化的標示語言,如XML來製作。輸出部分代表至少一輸出資料組,資料組用以定位一關聯之元件且資料能從該關聯之元件被讀取。輸入部分代表至少一資料組,資料組用以定位一關聯之元件且一使用者操作能執行於此關聯之元件之上。此使用者操作例如是為資料輸入(如從第2圖之輸入文字框204中輸入)或指標點選和指標控制之動作,如從一列中選取一者(如第2圖之下拉式選單211中選取其中一製程配方之項目)或按一按鈕(如第2圖中的按鈕205)。此外,上述方法可實施為重覆步驟S110-S140以讓使用者繼續進行擷取元件的程式參數的作業。
故依上述步驟S120及S130實現之前端處理程式100具有過濾功能,即列舉被選取之元件的各種對應的程式參數,並依據專家經驗知識指出建議選取的程式參數項目,並呈現在視窗中。上述實施例提出的做法係依據專家的經驗知識,要讓後端處理正確尋找到前端處理時選取的元件的視窗控制代碼,必須使用多個程式參數的配合作為條件,才能確定,例如是元件的類別名稱(Class name)、座標和大小以及其父元件的資料組。故此,在步驟S130中,依據專家知識,給予適當的指示,以助使用者決定用哪些程式參數作為描述被選取之元件之資料組。
依據專家的經驗知識的過濾功能,舉例說明如下。例如,雖然元件的視窗控制代碼可以在視窗系統中控制此元件,而且在同一時間並不會有相同的視窗控制代碼。但是,在經過重開機、應用程式重新執行時,同一元件的視窗控制代碼是不同。故此步驟S130之一實施例如第6圖示意,並不建議選取視窗控制代碼,但建議選取其他不因重開機或應用程式重新執行而改變的程式參數。
此外,在實際的應用程式中,有主視窗以及其中的子視窗。主視窗或子視窗中,可能有不同的視窗元件,如按鈕(Button),按下後可能會觸發新的表格視窗(Form)或對話框視窗(DialogBox);而後來產生的視窗中呈現的數據或信息,可能是使用者需要擷取及加以利用的資料,例如是機台操作資料(如壓力、溫度等)。因應上述視窗產生的不同情況,依據專家的經驗知識,將視窗元件分為可列舉及不可列舉的兩種。
可列舉的視窗元件,例如第2圖示意的應用程式200的主畫面20,以及主畫面中20中元件如201、202、203。這些元件的視窗控制代碼在應用程式200執行期間都一直存在且不會改變,藉由作業系統30所提供的API,這些元件皆可以列舉(enumerable)。在上述步驟130之一實施例中,可依據此專家知識而作出如第6圖所作的指示,基本上預設「類別名稱」、「視窗標題」、「座標和大小」、「處理路徑」。而一般的情況下,被選取之元件和其他父元件的「類別名稱」、「座標」即可據以正確描述被選取之元件。
另外,可列舉的元件可能建立在多層的視窗元件之上,例如第2圖所示的複合框(ComboBox)211。在一實施例中,是採用「自下而上」的方式來列舉出此元件的資料組。也就是說,在取得此元件的程式參數之後,進而取得其父節點(即父元件)和更上一層的父元件的程式參數,如此類推至此根節點(即主視窗)的程式參數,以作為在後端處理時取得選取之元件的視窗控制代碼的條件。請參照第8圖,各個視窗元件之間關係的樹狀圖。如第8圖所示意,當使用者利用前端處理程式100選取了一個元件(如稱為目標元件1)之後,前端處理程式100除了取得目標元件1的程式參數以外,更往上去取得其父元件的程式參數,直至視窗1的程式參數取得為止。若以第2圖所示的複合框(ComboBox)211為例,可得出或濾過出如下表一的資料組以描述此目標元件:
在上述的資料組中,第一行的hwnd1301是此組資料組的別名(alias)是可自行設定或由前端處理程式100設定的,接著第二行於小於符號(<)及大於符號(>)之間的符號是描述被選取之元件的程式參數,特別是類別名稱(ClassName)為TComboBox,座標和大小(RECT)為(-89,-56)與201x21以及表示被選之元件(當時的控制代碼hWnd_Target=1070c)所對應的父元件(當時的控制代碼為Parent=106e6)。接著,第三行表示上述的父元件(當時的控制代碼為hWnd_Target=106e6)的程式參數,如類別名稱為TPanel,座標和大小為(0,0)與381x310,以及表示此元件(hWnd_Target=106e6)對應的父元件(當時的控制代碼為Parent=10704)。如此類推,直至根節點(應用程式身)<Root>的程式參數為止,其中有些節點為程式參數更利用到題目(Title)。如前所述,由於控制代碼是不需要記錄於中,所以在步驟S140之實施時,可以用別名來代替上述的控制代碼,或是以其他方式表示前後的父元件關係即可。
至於不可列舉的視窗元件,是指在應用程式200執行期間,動態生成及銷毀的視窗及元件。例如第7圖所示,當按鈕213被點選時,產生另一子視窗700(即表格視窗Form),其中子視窗700具有另外文字方框701和702,各顯示機台的參數。此子視窗700以及其中的這些元件的視窗控制代碼在應用程式200執行期間,只有子視窗700產生時才會存在,當其被關閉後,隨即銷毀。故此,在應用程式200執行期間,上述的元件並非一直存在,故分類為不可列舉。上述的情形如第8圖所示意,視窗1執行中的某一段時間依附在視窗1的一個子節點,所生成及銷毀的視窗及元件,如以虛線方框示意目標元件2。
而另一種不可列舉的視窗元件是在視窗1執行中的某一段時間獨立生成及銷毀的視窗及元件,如以虛線方框示意的視窗2以及其目標元件3。
雖然如此,在前端處理時,藉由使用者對應用程式200的操作,當產生了上述的不可列舉的視窗元件,如子視窗700後,仍然可以用前述的「自下而上」的方式來列舉選取元件以及取得被選取之元件(如701,702)的資料組。而到了後端處理階段,就要相對應的在適當時候利用不可列舉的元件的資料組作為條件,去抓取對應的元件的控制代碼。有關後端處理的實施例,將於後面再舉例說明。
以下針對一個獨立且不可列舉的對話框(DialogBox)作為第8圖中視窗2的例子,使用前端處理程式100實現步驟S120及S130的過濾功能,產生的對話框的三個元件的資料組如下:
在此例子中對話框的標題(window caption)為「開啟序列」(Open Sequence),三個元件分別是一列舉框(ListBox)、一示意開啟(Open)的按鈕和一示意取消(Cancel)的按鈕並舉有相對的標題分別是ListBox,Open,Cancel。根據專家知識,除了此元件和其他父元件的「類別名稱」、「座標和大小」外,尚需要有其他固定不變的程式參數作為依據以正確描述這種獨立且不可列舉的元件。從上述的資料組可以得知,上述三個元件的父元件以標題「Open Sequence」作為判別的父視窗的元件來區別。
此外,由於應用程式200的主視窗20及其子視窗或元件的座標會隨主視窗的位置而改變,故一實施例中,的資料組所描述的元件的座標皆採用相對座標。即資料組中所記載的某一元件的座標是為相對於該元件的上一層的元件(即父元件)的相對座標值。例如以一被選取之元件的左上(top left)座標及右下(bottom right)座標取得以後,進一步取得此元件的父元件的左上及右下座標,並作相減的計算得到被選取之元件相對於其父元件的相對座標及大小。例如表二中所描述的「Open」按鈕的左上及右下座標分別為(749,464)和(829,486),父元件之左上及右下座標分別之(518,405),(952,605),故相對座標為(518-749,405-464)=(-231,-59)及大小為(829-749)x(486-464)=80x22。以公式為來概括此計算之實施例,如:
相對座標:((P.left-c.left),(P.top-c.top)) 公式1
大小:(c.right-c.left)x(c.bottom-c.top) 公式2
其中座標系以電腦螢幕慣用的方式表示,目前的元件的左上及右下座標為(c.left,c.top),(c.right,c.bottom),父元件的左上座標為(P.top,P.left)。上述例子是舉例以父元件的左上座標為作為參考點而已,計算相對座標的實施方式當可以其他父元件的點作為參考點來作計算,例如是父元件的右下座標或是中心點,並不以此為限。此外,在其他實施例中,若是一元件以兩個座標來代表,其作用亦等價於使用相對的座標。
此外,在一實施例中,步驟S120之實現更可在如第8圖所示意的從目標元件開始從下往上尋取各層的父元件之同時,取得對應的程式參數以及計算各元件的相對座標和大小,從而產生目標元件之資料組。
至於步驟S140之資源檔案,例如以XML(延伸標示語言)來描述,以下表三為一例子。
第10圖是機台之操作方法之一實施例的流程圖。請參考第4圖,其中示意由後端處理程式102(或由多個軟體模組組成)實現第10圖之方法,參考結構化的資源檔案,機台之操作方法。如第10圖所示,步驟S210,提供一資源檔案,其中資源檔案可以不同格式實現。資源檔案例如為一對映表(mapping table),資源檔案包括如上所定義的至少一儲存資料。資源檔案可能只有包括至少一輸出資料組;或只有包括至少一輸入資料組;或是包括兩種資料組。前述之一實施例之資源檔案,可分別兩部分:輸入部分的敘述(input description)以及輸出部分的敘述(output description)。輸出部分包括至少一輸出資料組,輸出資料組用以定位一關聯之元件且資料能從該關聯之元件被讀取,例如表三中由<outputs></outputs>所標示的敘述。輸入部分包括至少一輸入資料組,輸入資料組用以定位一關聯之元件且一使用者操作能執行於該關聯之元件之上,例如表三中由<inputs></inputs>所標示的敘述。此使用者操作例如是為資料輸入、指標選取或指標控制之操作,也就是使用者一般利用鍵盤或滑鼠器或觸控之操作。這些資料組例如各包括此關聯之元件對應之一視窗類別以及相對座標和大小和相對於此關聯之元件之至少一父元件之一視窗類別以及相對座標和大小。
步驟S220,讀取此資源檔案。例如,藉由語言分析,如XML以格式進行語意分析(parsing),以讀取資源檔案中的輸入資料組或輸出資料組,又或者是輸入部分及輸出部分之各個資料組。
步驟S230,從一圖形介面中取得由此資源檔案的至少一儲存資料組對應之各個之一關聯之元件的一視窗控制代碼。資源檔案中的資料組所關聯之元件,可藉由資料組之資訊建立判斷的條件,確保可以找到正確之關聯之元件的目標視窗控制代碼。例如利用Windows作業系統中的API,如以FindWindow()作為過濾的功能(Filter)以找出。又例如利用Callback EnumChildwindows()列舉所有子視窗控制代碼以找出目標視窗控制代碼。
在步驟S230取得中各個儲存資料組關聯到的元件的視窗控制代碼之後,例如後端處理程式102就可以回應從閘道器12所輸出的請求項訊息從而執行資料讀取操作或使用者操作,如第10圖中步驟S240-S270所示。值得注意的是,第10圖中的步驟S240-S270是示意此方法能回應不同的要求訊息而進行相對的處理而已。此處步驟S240-S270之執行次序並沒有限制,故此可能是先執行步驟S260-S270,再來執行步驟S240-S250。若資源檔案只有包括一儲存資料組,則只執行S240-S250或S260-S270之一者。
步驟S240,回應代表透過取得之至少一視窗控制代碼之一第一視窗控制代碼執行一第一對應的操作之一第一要求訊息,選擇與第一視窗控制代碼對應之一第一參數模板。步驟S250,依據第一視窗控制代碼及第一參數模板,執行第一對應的操作,例如是使用者操作。例如後端處理程式102實作為事件驅動的Windows程式,對於輸出資料組所關聯的元件,是利用視窗系統的API如GetMessage()及PostMessage()函式進而達到與此目標視窗元件之使用者操作目的。例如:PostMessage(hwnd_1311_TBitBtn_yes,WM_LBUTTONDOWN,0,0);PostMessage(hwnd_1311_TBitBtn_yes,WM_LBUTTONUP,0,0)代表以視窗控制代碼為hwnd_1311_TBitBtn_yes之元件,進行滑鼠器的左鍵點擊的操作。
步驟S260,回應代表透過取得之至少一視窗控制代碼之一第二視窗控制代碼執行一第二對應的操作之一第二要求訊息,選擇與第二視窗控制代碼對應之一第二參數模板。步驟S270,依據第二視窗控制代碼及第二參數模板,執行第二對應的操作,例如是資料讀取操作。例如後端處理程式102實作為事件驅動的Windows程式,對於輸入資料組所關聯的元件,是利用視窗系統的API如SendMessage()函式輸出訊息給某一目標視窗,進而取得此目標視窗元件呈現的數據或信息。例如:iComboBoxindex=SendMessage(hwnd_1105_TComboBox,CB_GETCURSEL,0,0);SendMessage(hwnd_1105_TComboBox,CB_GETLBTEXT,iComboBoxindex,(LPARAM)tempstr);代表以視窗控制代碼為hwnd_1105_TComboBo之元件,進行資料讀取操作,讀取一參數,並由tempstr變數代表回傳的此參數。
上述步驟S240、S260選取出不同的參數模板是因為不同的視窗元件它的API參數欄位都不盡相同。以下表四是舉例在實現步驟S250時,選擇不同參數模板(template)的例子。
在表四中,當ifilter的值,代表不同藉由視窗元件的「類別名稱」以及其他參數,所對應的數值,例如ifilter為1是,代表關聯到的元件為ListBox,而所對應的使用者操作是從多個字串(string)中選擇其中之一,故利用SendMessage()發出訊息給目標元件時,相關的參數設定如表四所示為利用視窗控制代碼(以別名hwnd_1301_Leve109_TComboBox表示)和參數:LB_SELECTSRTING,-1,(LPARAM)cCPVAL。此外,表四中,ifilter==2時,示意目標元件是ComboBox,而所要達成的使用者操作是設定文字(Set Text)。ifilter==4時,示意目標元件是ComboBox,而所要達成的使用者操作是選擇多個字串之一者。步驟S250當可如此類推的實現。而對於其他的視窗元件如子視窗:Button,Check Box,Scroll Bar,Edit Control等的模板,亦可如此類推的實現。此外,不同程式開發平台的視窗元件亦有所不同,例如Borland、Delphi、VC等對於元件如按鈕亦有不同的參數定義,故可以用不同的類別名稱加以區分。
對於上述步驟S230,在一實施例中,係利用資源檔案中所描述的一關聯的元件之儲存資料組作為判斷條件,利用「自上而下」的方式尋求其根節點至此關聯的元件,去抓取對應的元件的控制代碼。請參考表一、第4圖及第8圖,當後端處理程式102讀取了資源檔案針對一關聯的元件如表一的儲存資料組後(如步驟S220),藉由作業系統30的API如FindWindow(),首先取得根節點,也就是應用程式200的視窗控代碼,並以如表一中最後一行的程式參數:如類別名稱、題目以及座標和大小之類,作為比對的條件,以確定由應用程式200的視窗控代碼所取得的相對的程式參數是否符合。若是,則可以繼續利用API如EnumChildwindows()列舉所有子視窗控制代碼,如第8圖,從視窗1往下一個元件「自上而下」的方式直至找出目標的視窗控制代碼。
上述步驟S230的實施例可應用於尋找可列舉的元件。對於不可列舉的元件,係為動態產生,亦可採用相似的作法。實施時可利用迴圈或執行緒不斷的尋找,也可以如第11圖所示,當閘道器12有訊息指示要尋求動態產生的元件時,始進行尋找。依據一實施例,如步驟S310所示,對於對應到動態產生之元件的請求信息,尋找對應之元件的視窗控制代碼,如前述尋找可列舉的元件的方式進行。步驟S320,是否符合於此元件的儲存資料組之判斷條件。若是,則步驟S330,取得此元件的視窗控制代碼。若否,則重覆步驟S310。
此外,在上述步驟S230的執行時,除了「自上而下」去尋找方式外,在找到的一個節點之時,可以計算節點間座標的關係,利用與前端處理中建立資源檔案中儲存資料組時所採用相同的計算方式(例如前述的公式1及2),可以此作為判斷條件,從而確認目標的元件。
在其他實施例中,機台之操作方法,並不受限於資源檔案的產生方式,只要能符合資源檔案格式,能描述所要使用的元件皆可。此外,在其他實施例中,後端處理程式102如第1圖所示意,可以實施為不同的模組,例如一處理模組1020及一通訊模組1022,通訊模組1022可以實現TCP/IP、SECS或其他通訊協定,以提供不同的通訊管道延伸機台10的通訊功能。
上述之實施例的圖形介面視窗之系統如Windows系列的作業系統為例,但只要能實現結構化的資源檔案讓前端處理及後端處理可以銜接之各種實施方式皆可。故上述實施例並不限於Windows系統,其他Linux、Unix或其他嵌入式作業系統之類的視窗為基的作業系統亦可用於實施上述實施例。
此外,在前端處理階段,如步驟S110的選取行為可配合機台與監控有關的行為,例如依據SECS所定義的狀態變數識別碼(Status Variable ID,SVID)所對應的機台與外界主機的互動來選取合適的軟體元件,以收集獲得的資源檔案。分析並且寫程式碼來鎖定這些屬性,以利下次開啟時也可以抓到同樣的軟體元件,將這些軟體元件上所呈現的機台操作資料(如壓力、溫度等),透過網路等方式傳輸到外界。如此,做資料收集或是分析,同樣也可以讓外界透過後端處理程式102令來控制此機台的應用程式200。
此外,揭露一種電腦可讀式資訊儲存媒體,其上儲存有程式,此程式可用於執行上述實施例如第5或10圖之實施例的方法。本實施例的電腦可讀式資訊儲存媒體比如但不受限於:光學式資訊儲存媒體(如CD、DVD、藍光DVD)、磁式資訊儲存媒體(如軟碟機、硬碟機、磁帶機等)或如記憶體裝置(如快閃記憶體、USB記憶裝置等)。此外,電腦可讀式資訊儲存媒體亦包括可在網路/傳遞媒介(如空氣等)上傳遞的程式碼等。
上述實施例,一種擷取機台之圖形介面視窗之元件的程式參數的方法和一種機台之操作方法,其中前端利用上述擷取方法產生結構化的資源檔案(resource file),而後端則進一步處理此結構化的資源檔案並提供符合工廠CIM的或其他通訊介面。對於讓封閉的機台的操作參數(此機台的資料、狀態)能有效及可靠地再利用,使機台能擴充為具有符合工廠CIM或通訊協定如SECS的功能,使機台能有效的被監控及控制的可擴充性功能。由於此架構的前端與後端藉由結構化的資源檔案作為溝通,故能提高實作上的彈性,亦加速程式開發的時間,讓程式人員在更有效率及可靠的情況下,完成機台操作資料的收集及利用的工作。一些實施例中,後端處理程式能提供介面達成監控的可能。
綜上所述,雖然以實施例揭露如上,然其並非用以限定本案之實施方式。本揭露所屬技術領域中具有通常知識者,在不脫離本揭露之精神和範圍內,當可作各種之更動與潤飾。因此,本案之保護範圍當視後附之申請專利範圍所界定者為準。
10...機台
12...閘道器
20...圖形介面
30...作業系統
100...前端處理程式
102...後端處理程式
120...處理模組
121...通訊單元
200...應用程式
201、202...下拉式命令列
203...文字方框
204...輸入之文字方框
205、213...按鈕
210...分頁
211...下拉式選項
700...子視窗
701、702...文字方框
1020...處理模組
1022...通訊模組
RQ1,RQ2...要求訊息
LK...通訊連接
S110-S140、S210-S270、S310-S330...步驟
第1圖是為依據一實施例的延伸機台之通訊功能的架構。
第2圖示意一機台上的圖形介面視窗執行之一程式的畫面。
第3圖為第1圖之實施例中之前端處理的軟體實施示意圖。
第4圖為第1圖之實施例中之後端處理的軟體實施示意圖。
第5圖為擷取機台之圖形介面視窗中之元件的程式參數的方法之一實施例的流程圖。
第6圖為第5圖之實施例之步驟S130以程式實施的一示意圖。
第7圖示意第2圖之程式的畫面在操作過程中產生另一子視窗的例子。
第8圖是為一機台上的圖形介面視窗執行之一程式中各個視窗元件之間關係的樹狀圖。
第9圖示意一資源檔案的格式之一實施例。
第10圖是機台之操作方法之一實施例的流程圖。
第11圖是第10圖之實施例之步驟S230對於不能列舉的元件的視窗控制代碼之取得方法之一實施例的流程圖。
10...機台
12...閘道器
100...前端處理程式
102...後端處理程式
1020...處理模組
1022...通訊模組
LK...通訊連接
Claims (17)
- 一種擷取機台之圖形介面視窗中之元件的程式參數的方法,包括:檢測一機台之一圖形介面視窗中之一元件的選取行為;取得用以尋找該選取之元件之一第一資料組;呈現該資料組於一視窗畫面並伴隨對應到該第一資料組的複數個指示,以得到一確認之第二資料組;以及回應一接受操作,儲存該確認之第二資料組於一資源檔案中;其中該資源檔案包括至少一儲存資料組,各該至少一儲存資料組用以找出該機台之該圖形介面視窗中之一關聯之元件於該圖形介面視窗中之位置且用以定義在該關聯之元件上執行之一對應的操作,其中該至少一儲存資料組包括該確認之第二資料組;其中該資源檔案之該至少一儲存資料組包含至少一輸入資料組,各該輸入資料組用以找出該關聯之元件於該圖形介面視窗中之位置且定義在該關聯之元件上執行之該對應的操作為一使用者操作。
- 如申請專利範圍第1項所述之擷取機台之圖形介面視窗中之元件的程式參數的方法,其中該資源檔案之該至少一儲存資料組更包含至少一輸出資料組,各該輸出資料組用以找出該關聯之元件於該圖形介面視窗中之位置且定義在該關聯之元件上執行之該對應的操作為一資料讀取操作。
- 如申請專利範圍第1項所述之擷取機台之圖形介面視窗中之元件的程式參數的方法,其中該使用者操作是為資料輸入、指標點選或指標控制之動作。
- 如申請專利範圍第1項所述之擷取機台之圖形介面視窗中之元件的程式參數的方法,其中該第一資料組包括該選取之元件對應之一視窗類別以及相對座標和大小以及相對於該選取之元件之至少一父元件之一視窗類別以及相對座標和大小。
- 如申請專利範圍第4項所述之擷取機台之圖形介面視窗中之元件的程式參數的方法,其中取得用以尋找該選取之元件之該第一資料組之該步驟包括:k1.取得該選取之元件對應之複數個程式參數,該些程式參數包括一對應之視窗控制代碼、該視窗類別、絕對座標;k2.依據該選取之元件之該視窗控制代碼,取得該選取之元件對應之一父元件之複數個程式參數,該些程式參數包括一對應之視窗控制代碼、該視窗類別、絕對座標;k3.依據該選取之元件及對應的該父元件之該些程式參數,計算該選取之元件之相對座標和大小;k4.把步驟k1中的該選取之元件以步驟k2中的該父元件代替,自步驟k1重覆該方法以取得下一父元件,直至該選取之元件之根節點為止;其中該選取之元件之該第一資料組至少包括該選取之元件之該視窗類別及該相對座標和大小以及該些對應的父元件之視窗類別及該相對座標和大小。
- 如申請專利範圍第1項所述之擷取機台之圖形介面視窗中之元件的程式參數的方法,其中在呈現該第一資料組於一視窗畫面之該步驟中,該些指示代表該第一資料組中的複數個項目是否要成為該確認之第二資料組之內容。
- 如申請專利範圍第1項所述之擷取機台之圖形介面視窗中之元件的程式參數的方法,其中該資源檔案是以延伸標示語言(XML)格式儲存。
- 一種機台之操作方法,包括:提供一資源檔案,其中該資源檔案包括至少一儲存資料組,各該至少一儲存資料組用以找出該機台之該圖形介面視窗中之一關聯之元件於該圖形介面視窗中之位置且用以定義在該關聯之元件上執行之一對應的操作;讀取該資源檔案;從一圖形介面中取得由該資源檔案的各該至少一儲存資料組對應之該關聯之元件的一視窗控制代碼;回應代表透過取得之該至少一視窗控制代碼之一對應之一關聯之元件執行一對應的操作之一要求訊息,選擇與該視窗控制代碼對應之一參數模板;以及依據該視窗控制代碼及該參數模板,對該關聯之元件執行該對應的操作。
- 如申請專利範圍第8項所述之機台之操作方法,其中該資源檔案之該至少一儲存資料組包含至少一輸入資料組,各該輸入資料組用以找出該關聯之元件於該圖形介面視窗中之位置且定義在該關聯之元件上執行之該對 應的操作為一使用者操作。
- 如申請專利範圍第8項所述之機台之操作方法,其中該資源檔案之該至少一儲存資料組包含至少一輸出資料組,各該輸出資料組用以找出該關聯之元件於該圖形介面視窗中之位置且定義在該關聯之元件上執行之該對應的操作為一資料讀取操作。
- 如申請專利範圍第10項所述之機台之操作方法,其中該資源檔案之該至少一儲存資料組更包含至少一輸入資料組,各該輸入資料組用以找出該關聯之元件於該圖形介面視窗中之位置且定義在該關聯之元件上執行之該對應的操作為一使用者操作。
- 如申請專利範圍第9或10項所述之機台之操作方法,其中該使用者操作是為資料輸入、指標點選或指標控制之動作。
- 如申請專利範圍第8項所述之機台之操作方法,其中該至少一儲存資料組各包括該關聯之元件對應之一視窗類別以及相對座標和大小和相對於該關聯之元件之至少一父元件之一視窗類別以及相對座標和大小。
- 如申請專利範圍第13項所述之機台之操作方法,其中取得由該資源檔案的各該至少一儲存資料組之該關聯之元件的一視窗控制代碼之該步驟,包括:g1.依據該關聯之元件之儲存資料組,尋找該關聯之元件之一根節點;g2.依據該關聯之元件之儲存資料組,尋找該關聯之元件之該根節點之一子節點; g3.依據該根節點及該子節點所對應的之程式參數,計算該子節點之元件之相對座標和大小並確認是否與該關聯之元件之資料組符合;g4.若是,把步驟g2中的該根節以步驟g3中的該子節點代替,自步驟g2重覆該方法以取得下一子節點,直至該關聯之元件找到且與該關聯之元件之儲存資料組符合為止;其中各子節點之程式參數至少包括該子節點之一視窗類別及絕對座標。
- 如申請專利範圍第14項所述之機台之操作方法,其中該關聯之元件為一動態生成之元件,當接收該要求訊息使用該關聯之元件,始針對該關聯之元件自該步驟g1執行該方法。
- 如申請專利範圍第8項所述之機台之操作方法,其中選擇與該視窗控制代碼對應之一參數模板之該步驟,是依據該視窗控制代碼之該關聯之元件對應之該視窗類別,選擇該參數模板。
- 如申請專利範圍第8項所述之機台之操作方法,其中該資源檔案是以延伸標示語言(XML)格式提供。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100150006A TWI448860B (zh) | 2011-12-30 | 2011-12-30 | 擷取機台之圖形介面視窗之元件的程式參數的方法和機台之操作方法 |
US13/612,697 US20130174075A1 (en) | 2011-12-30 | 2012-09-12 | Method for acquiring program parameters of component in graphical user interface of equipment and method for operating equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100150006A TWI448860B (zh) | 2011-12-30 | 2011-12-30 | 擷取機台之圖形介面視窗之元件的程式參數的方法和機台之操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201327077A TW201327077A (zh) | 2013-07-01 |
TWI448860B true TWI448860B (zh) | 2014-08-11 |
Family
ID=48696001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100150006A TWI448860B (zh) | 2011-12-30 | 2011-12-30 | 擷取機台之圖形介面視窗之元件的程式參數的方法和機台之操作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130174075A1 (zh) |
TW (1) | TWI448860B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI682318B (zh) * | 2018-12-05 | 2020-01-11 | 英業達股份有限公司 | 依據特徵區域判斷監測區域以進行監控之系統及方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI498698B (zh) * | 2014-03-27 | 2015-09-01 | Genesis Technology Inc | 使用者介面以及電腦程式產品 |
CN109213528A (zh) * | 2017-07-06 | 2019-01-15 | 北大方正集团有限公司 | Web前端界面集成方法及Web前端界面集成装置 |
TWI650638B (zh) * | 2017-08-17 | 2019-02-11 | 凌華科技股份有限公司 | 架構於非侵入式資料擷取系統以模擬機台操作畫面的系統模組 |
CN107368380A (zh) * | 2017-09-05 | 2017-11-21 | 深圳市兆驰数码科技股份有限公司 | Windows系统下向任意窗口发送消息的方法 |
TWI709010B (zh) * | 2019-07-04 | 2020-11-01 | 臺灣塑膠工業股份有限公司 | 設備異常原因診斷方法及系統 |
CN112130734B (zh) * | 2020-08-27 | 2021-10-01 | 北京云动智效网络科技有限公司 | 基于浮层技术的文档管理方法及设备 |
CN114546226B (zh) * | 2020-11-27 | 2024-05-07 | 北京中关村科金技术有限公司 | 窗口元素抓取方法、装置以及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070083813A1 (en) * | 2005-10-11 | 2007-04-12 | Knoa Software, Inc | Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682486A (en) * | 1995-03-14 | 1997-10-28 | International Business Machines Corporation | Video display and control of multiple graphical interfaces |
US5889518A (en) * | 1995-10-10 | 1999-03-30 | Anysoft Ltd. | Apparatus for and method of acquiring, processing and routing data contained in a GUI window |
KR100475432B1 (ko) * | 2002-02-26 | 2005-03-10 | 삼성전자주식회사 | 그래픽 사용자 인터페이스의 디자인 변경 방법 및 이를 위한 기록매체 |
US7203905B2 (en) * | 2002-12-17 | 2007-04-10 | International Business Machines Corporation | System and method for platform independent desktop lockdown |
US8799793B2 (en) * | 2005-10-05 | 2014-08-05 | Invensys Systems, Inc. | Tool for creating customized user interface definitions for a generic utility supporting on-demand creation of field device editor graphical user interfaces |
US9298350B2 (en) * | 2009-05-27 | 2016-03-29 | Microsoft Technology Licensing, Llc | Menu searching of a hierarchical menu structure |
US8555190B2 (en) * | 2010-06-30 | 2013-10-08 | Honeywell International Inc. | Apparatus and method for optimizing maintenance and other operations of field devices in a process control system using user-defined device configurations |
-
2011
- 2011-12-30 TW TW100150006A patent/TWI448860B/zh active
-
2012
- 2012-09-12 US US13/612,697 patent/US20130174075A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070083813A1 (en) * | 2005-10-11 | 2007-04-12 | Knoa Software, Inc | Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI682318B (zh) * | 2018-12-05 | 2020-01-11 | 英業達股份有限公司 | 依據特徵區域判斷監測區域以進行監控之系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201327077A (zh) | 2013-07-01 |
US20130174075A1 (en) | 2013-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI448860B (zh) | 擷取機台之圖形介面視窗之元件的程式參數的方法和機台之操作方法 | |
CN108351636B (zh) | 工程设计工具、系统及模块 | |
US9465726B2 (en) | Abstract layer for automatic user interface testing | |
US10152041B2 (en) | Method and apparatus for enabling model driven navigation | |
JP4381436B2 (ja) | シナリオ生成装置およびシナリオ生成プログラム | |
TW200941214A (en) | Executing software performance test jobs in a clustered system | |
CN105765471B (zh) | 定序程序创建辅助装置 | |
US11960925B2 (en) | Program generating device, program generating method, and information storage medium | |
JP2018147198A (ja) | 分析プロジェクト用作業手順解析支援システム | |
TWI292540B (en) | Semiconductor test data analysis system, method for displaying therein, and method for analyzing semiconductor test data implemented therein | |
JP6917998B2 (ja) | 自動分析装置および情報処理装置 | |
KR20150110063A (ko) | 빅데이터 처리를 위한 맵리듀스를 통합하는 장치 및 방법 | |
TW574639B (en) | Method and apparatus for integrating multiple process controllers | |
US9164746B2 (en) | Automatic topology extraction and plotting with correlation to real time analytic data | |
JPH09212394A (ja) | データ処理装置 | |
US9395872B2 (en) | Facilities controlling device, screen displaying method, and recording medium | |
JP6458157B2 (ja) | データ分析装置および分析方法 | |
JP4879137B2 (ja) | 情報連携ウィンドウシステムおよびプログラム | |
JP2022118286A (ja) | 検出装置、テストシステム、検出方法、およびプログラム | |
JP5957299B2 (ja) | 情報処理装置、情報処理方法、および情報処理プログラム | |
US20040169684A1 (en) | Linking images for navigation | |
JP2010204840A (ja) | ユーザインターフェース操作統合システムのカスタマイズ方法及び端末装置並びにコンピュータプログラム及び情報記録媒体 | |
JP5039506B2 (ja) | シーケンス生成システム、シーケンス生成方法及びシーケンス生成プログラム | |
US20220317650A1 (en) | Analysis apparatus, control method thereof, and analysis system | |
WO2022038812A1 (ja) | 情報処理装置 |