//------CAD线程数据------//
typedef struct _HXThreadDataInfo
{
BOOL bThreadRun;
BOOL bThreadCAD1;
BOOL bThreadCAD2;
BOOL bThreadCAD3;
BOOL bThreadCAD4;
unsigned long ulDeepA1; //深度A1--D80
unsigned long ulDeepB1; //深度B1--D82
unsigned long ulDeepA2; //深度A2--D84
unsigned long ulDeepB2; //深度B2--D86
}HXThreadDataInfo;
HXThreadDataInfo* pHXDataInfo;
//声明线程函数
LPTHREAD_START_ROUTINE HXCADProc(LPVOID pParam);
//--------开辟线程----------//
if ( pHXDataInfo->bThreadRun == FALSE )
{
if ( pHXDataInfo->bThreadCAD1 == TRUE || pHXDataInfo->bThreadCAD2 == TRUE || pHXDataInfo->bThreadCAD3 == TRUE || pHXDataInfo->bThreadCAD4 == TRUE )
{
unsigned long ulAxisSts0;
unsigned long ulAxisSts1;
rtn = PMC_Get_Execute_Axis(&ulAxisSts0,0);//判断缓冲区是否完成
rtn = PMC_Get_Execute_Axis(&ulAxisSts1,1);//判断缓冲区是否完成
if (0 != (ulAxisSts0 & 0x1<<0) || 0 != (ulAxisSts0 & 0x1<<1) || 0 != (ulAxisSts0 & 0x1<<2))
{
pHXDataInfo->bThreadCAD1 = FALSE;
}
if (0 != (ulAxisSts0 & 0x1<<3) || 0 != (ulAxisSts0 & 0x1<<4) || 0 != (ulAxisSts0 & 0x1<<5))
{
pHXDataInfo->bThreadCAD2 = FALSE;
}
if (0 != (ulAxisSts1 & 0x1<<0) || 0 != (ulAxisSts1 & 0x1<<1) || 0 != (ulAxisSts1 & 0x1<<2))
{
pHXDataInfo->bThreadCAD3 = FALSE;
}
if (0 != (ulAxisSts1 & 0x1<<3) || 0 != (ulAxisSts1 & 0x1<<4) || 0 != (ulAxisSts1 & 0x1<<5))
{
pHXDataInfo->bThreadCAD4 = FALSE;
}
unsigned long threadID;
HANDLE hTread;
hTread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)HXCADProc,(LPVOID)pHXDataInfo,CREATE_SUSPENDED,&threadID);
if(hTread == NULL)
{
delete pHXDataInfo;
return 1;
}
pHXDataInfo->bThreadRun = TRUE;
ResumeThread(hTread);
}
}
LPTHREAD_START_ROUTINE HXCADProc(LPVOID pParam)
{
HXThreadDataInfo* pHXDataInfo = (HXThreadDataInfo*)pParam;
BOOL bOpenCAD1 = pHXDataInfo->bThreadCAD1;
BOOL bOpenCAD2 = pHXDataInfo->bThreadCAD2;
BOOL bOpenCAD3 = pHXDataInfo->bThreadCAD3;
BOOL bOpenCAD4 = pHXDataInfo->bThreadCAD4;
//---------------
rtn = PMC_End_Buffer(&num,CardNum);
rtn = PMC_Execute_Buffer(0,0,1);
bFinishCAD3 = TRUE;
Sleep(1);
//-----------------
_endthread();
delete pHXDataInfo;
return 0;
}