本司將定位主要功能如網路監控、設備配置初始化、座標計算、定位濾波、聲光控制、卡片狀態等功能封裝成DLL,提供使用者可以進行二次開發。由於本司定位監控軟體是利用C#編寫而成,所以提供DLL檔案也是C#編寫而成,如果使用者是使用其他開發語言,請查詢如何調用本司提供C# DLL。
其中API部份僅提供座標存取、狀態存取與設備控制等功能,不包含數值處理函式,如定位卡片座標是由DLL解析封包後自行計算,使用者無法自行調用定位演算法來處理數值,只能取得座標及設定使用的演算法(TwoDim_TagHeightRange,TwoDim_TagHeightFixed,ThreeDim)。以下將分成四個部分依序說明DLL內容
DLL調用流程
定位座標類別,網路監控、設備配置初始化、座標計算、定位濾波
聲光控制類別,LED、蜂鳴器控制
卡片狀態類別,卡片跌倒、卡片跌落
DLL調用流程
初始化基站和卡片訊息(InitAnchorConf和InitTagConf)
初始化網路訊息(InitNet)
開始網路監聽(Start)
上位應用在重寫的protected override void WndProc(ref Message m)函數中接收消息 (GetHGLobj)
根據消息類型進行不同的處理 (m.Msg)
釋放非託管記憶體區(FreeHGLOBAL)
斷開連接(Stop)
在上面的流程中調用DLL中對應的函數的步驟,其中我們的應用程式主要在WndProc(ref Message m)函數中接收消息及處理不同的消息類型。如下所示:
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case PrecisePositionLibrary.TPPID.WM_LOCATE_PACK:
if ((int)m.WParam == PrecisePositionLibrary.TPPID.WP_LOCATE_TAG)
{
PrecisePositionLibrary.PrecisePosition.TagPacketReport tp;
if (!PrecisePositionLibrary.PrecisePosition.GetHGLobj(m.LParam, out tp))
return;
PrecisePositionLibrary.PrecisePosition.FreeHGLOBAL(m.LParam);
...處理tag定位消息...
}
break;
}
}
API文件
(點擊在線瀏覽)
利用軟體轉的API網頁文件