• 沒有找到結果。

第三章 研究方法

第三節 功能函數

所有的功能函數有兩種呼叫方式,第一種為一般程式的函數呼叫,另一種則 是以訊息傳遞的方式進行呼叫。本段將描述各函數之功能,並針對訊息傳遞的呼 叫方式進行細部的描述。

資料名稱 (一)

在函數的定義之前,先定義於部分函數呼叫中會使用到的資料名稱格式。資 料名稱為單一字串,任何可用UTF-8進行編碼之字元皆可使用,唯獨不能使用’-’

字元。

對於陣列型態的資料內容,亦可於資料名稱後加上索引值,索引值與名稱和 索引值與索引值間以‘-’字元區隔,表示僅取用該陣列中的部分內容物。索引值部 分除了可填進以文字表示的數值外,亦可填入‘*’字元,表示取用該維度全部的資 料。索引值亦可只指定部分維度,所有未指定索引值之維度視同填入‘*’字元。

可 採 用 各 式 字 元 進 行 來 當 作 字 元 名 稱 , 如 : FaceImage 、 Face Image 、

Face_Image、@FaceImage#、臉部影像…等,皆屬於合法之字元名稱。

假設有一陣列其名稱為data,其大小為2×3,內容為{{1,2,3},{4,5,6}}。使用

data-0-0表示該陣列位於[0][0]之值,亦即會獲得1這個值。使用data-0(第二維度未 指定)或data-0-*(第二維度以‘*’進行表示)則表示取得該陣列位於[0]之值,表示 會取得{1,2,3}這個陣列。亦可使用data-*-0(第一維度以*進行指定)來取得{1,4}這 個陣列。

CheckConnection (二)

部分模組可能因其工作處理時間較長或週期間隔較久,導致模組與模組間許 久沒有任何互動,為能區別模組與模組間是已失去連線或僅是該模組處於閒置或 忙碌中,故制定CheckConnection函數以用來確認模組與模組間是否仍保持連線狀 態。

當一方收到CheckConnection的訊息時,應回傳Connected訊息給另一方,以表 示連線仍然存在。當一方多次發出CheckConnection訊息卻未獲得回應時,表示連 線已中斷,可釋放相關資源以避免不必要的資源浪費。

當控制模組被包含在系統端時,控制模組偵測到整合系統許久未接獲某一應 用模組之任何訊息時,使用CheckConnection函數進行連線狀態之確認,其流程如 圖三-6。

同樣的,對於外部控制模組而言,許久未接獲來自整合系統的訊息時,亦可 使用CheckConnection函數進行連線狀態的確認,流程如圖三-7。

CheckConnection

圖三-6 CheckConnection 流程圖一 圖三-7 CheckConnection 流程圖二

SetData

假定有一陣列名為SourceImage,其大小為2×3。

若傳遞整個陣列則訊息內容如表三-2;若僅傳遞SourceImage[1][0]的資料則如 錯誤! 找不到參照來源。,錯誤! 找不到參照來源。為錯誤範例。

“SetData” “SourceImage” 2 0 3 0 SourceImage[0][0] 1

SourceImage[0][1] 2 SourceImage[0][2] 1 3 0 SourceImage[1][0]

1 SourceImage[1][1] 2 SourceImage[1][2]

表三-13 SetData 訊息範例一

“SetData” “SourceImage” 1 1 1 0 SourceImage[1][0]

表三-14 SetData 訊息範例二

“SetData” “SourceImage-1-0” SourceImage[1][0]

表三-15 錯誤使用 SetData 之訊息範例

SetData之運作流程如錯誤! 找不到參照來源。、錯誤! 找不到參照來源。。

GetData (四)

當一模組欲從另一模組取得資料時,將使用此函數。

使用此函數時,首先送出GetData訊息以表示將進行此動作,隨後送出欲取得 資料的名稱。稍後,另一方將以SetData的函數將該筆資料傳遞出來。

假設欲索取一筆名為FaceImage的資料,並且FaceImage是一大小為3×6的陣 列。如欲取得所有資料則其訊息內容如錯誤! 找不到參照來源。,如僅欲取得部 分資料則訊息內容如錯誤! 找不到參照來源。,運作流程如錯誤! 找不到參照來 源。。

“GetData” “FaceImage”

表三-16 GetData 訊息範例一

“GetData” “FaceImage-*-2”

表三-17 GetData 訊息範例二

圖三-10 GetData 流程圖

GetStream (五)

與GetData函數相似,皆是用來向另一方取得資料使用。唯GetData函數每次 欲取得資料前皆需使用,而GetStream則僅需使用一次,另一方即需將資料持續傳 輸出來。

與GetData相同,首先送出GetStream訊息以及資料名稱,接著送出Start/Stop 訊息分別表示傳輸開始/結束。

接著送出All/Single,此參數主要的服務對象是陣列。用以告訴另一方傳遞資 料時是將整個陣列一次傳輸出來,或是將該陣列的內容一次一筆個別傳輸出來。

假定有一陣列名為FaceImage,其大小為3×6。如欲持續取得此陣列之值,其 訊息內容如表三-18;如欲停止,則訊息內容如表三-19。若僅欲取得該陣列的部 分資料時,訊息內容如表三-20。但若是希望能取得所有資料,且一次只傳送一筆 而非全部時,可使用Single參數,其訊息內容如表三-21。

“GetStream” “FaceImage” “Start” “All”

表三-18 GetStream 訊息範例一

“GetStream” “FaceImage” “Stop”

不論是取得何種資料,GetStream的運作流程皆如圖三-11所示。

相關文件