一種基于Z-Buffer 的銑削實體加工仿真算法,華中數控HNC-32 數控系統HMI 的仿真系統繼承自該代碼,其主要結構如下:
可見,顯示緩存等核心數據結構設計為全局變量,但HNC-32 的設計目標是多通道數控系統,每個通道都需要一個實體加工仿真組件的實例,由于全局緩存數據為所有實例共享,因此出現的所有通道顯示內容將完全一致,無法實現多通道仿真。為簡化改造工作,將原系統中約50 多個全局變量合并為一個結構,并將原全局變量作為其成員,即一個大的結構變量包括了50 個原全局變量。
按照 TLS 要求該結構變量必須動態創建,如下代碼表明了它的聲明、創建過程,代碼還表明每個ActiveX 組件構造時即調用API 函數TlsAlloc 獲得一個線程索引,在局部堆申請到存儲空間后用API 函數TlsSetValue 將該存儲區地址與線程索引對應。
在其他函數中,可以通過線程索dwTlsIndex 調用API函數TlsGetValue 引訪問到上述大結構變量,進而訪問到原全局變量,代碼如下:
//被OpenPatg->hFile 調用讀刀位文件并顯示刀位軌跡
int CSimuCtrlBCtrl : ShowPath(FILE *fp){
GlobalValues *g=(GlobalValues *)TlsGetValue(dwTlsIndex);
g->CtrlObj->GetClientRect(&rt);...
用戶評論
共 0 條評論