376 lines
8.4 KiB
C++
376 lines
8.4 KiB
C++
|
|
#include "stdAfx.h"
|
|||
|
|
#include "Sys.h"
|
|||
|
|
#include "ADThread.h"
|
|||
|
|
#include "ADDigitView.h"
|
|||
|
|
#include "math.h"
|
|||
|
|
|
|||
|
|
CWinThread* m_ReadThread; // <20><><EFBFBD>߳̾<DFB3><CCBE><EFBFBD>
|
|||
|
|
BOOL gl_bTerminateThr = TRUE; // <20>߳<EFBFBD><DFB3>Ƿ<EFBFBD>ɾ<EFBFBD><C9BE>
|
|||
|
|
BOOL gl_bSmlThenSize = FALSE;
|
|||
|
|
//////////////////////////////////////////////////////////////////////
|
|||
|
|
//-------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
UINT ReadDataThread(PVOID hWnd);
|
|||
|
|
//########################################################################
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC>߳<EFBFBD>
|
|||
|
|
BOOL MyStartDeviceAD(HANDLE hDevice)
|
|||
|
|
{
|
|||
|
|
if(!gl_bTerminateThr) // <20><>һ<EFBFBD><D2BB><EFBFBD>̻߳<DFB3>û<EFBFBD><C3BB>ɾ<EFBFBD><C9BE>
|
|||
|
|
{
|
|||
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><EFBFBD>̻߳<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ"));
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_ReadThread = AfxBeginThread(ReadDataThread,NULL, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
|
|||
|
|
m_ReadThread->m_bAutoDelete = true; // <20>Զ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>߳<EFBFBD>
|
|||
|
|
gl_bDeviceADRun = TRUE; // <20><>֮<EFBFBD>ɼ<EFBFBD><C9BC>߳̿<DFB3><CCBF>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_ReadThread->ResumeThread(); // <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC>߳<EFBFBD>ReadDataThread_NotEmpty
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL bWriteCnt = 0;
|
|||
|
|
//###############################################################
|
|||
|
|
ACTS1000_PARA_AD gl_OldADPara = ADPara;
|
|||
|
|
BOOL IsChangePara()
|
|||
|
|
{
|
|||
|
|
BOOL bRet;
|
|||
|
|
if(memcmp(&gl_OldADPara, &ADPara, sizeof(ADPara))==0)
|
|||
|
|
bRet = FALSE;
|
|||
|
|
else
|
|||
|
|
bRet = TRUE;
|
|||
|
|
gl_OldADPara = ADPara;
|
|||
|
|
return bRet;
|
|||
|
|
}
|
|||
|
|
BOOL gl_bStoped = FALSE;
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> <20>̺߳<DFB3><CCBA><EFBFBD>
|
|||
|
|
UINT ReadDataThread(PVOID hWnd)
|
|||
|
|
{
|
|||
|
|
CSysApp *pApp=(CSysApp *)AfxGetApp();
|
|||
|
|
CADDoc* pDoc=pApp->m_pADDoc;
|
|||
|
|
ULONG ReadOffsetWords = 0;
|
|||
|
|
LONG RetReadSizeWords;
|
|||
|
|
int nADChannel = 0;
|
|||
|
|
DWORD dTmp=0;
|
|||
|
|
HANDLE hDevice = pApp->m_hDevice;
|
|||
|
|
ULONG SampleCnt = 1; // <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ULONG SampleIndex;
|
|||
|
|
ULONG RemainSizeWords = 0;
|
|||
|
|
ULONG nRetSizeWords;
|
|||
|
|
ULONG nAvailSampsPoints;
|
|||
|
|
ULONG nIndex = 0;
|
|||
|
|
BOOL bSuccess = FALSE;
|
|||
|
|
ULONGLONG nReadSize;
|
|||
|
|
ULONG nRead;
|
|||
|
|
ULONG lSaveTime;
|
|||
|
|
|
|||
|
|
ULONG ulReadCount = MAX_RAM_SIZE;
|
|||
|
|
if(gl_bAutoCollect) // <20><><EFBFBD>ֶ<EFBFBD><D6B6>ɼ<EFBFBD><C9BC>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>˾<EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD>
|
|||
|
|
{
|
|||
|
|
SampleCnt = 0xFFFFFFFF;
|
|||
|
|
}
|
|||
|
|
gl_bStoped = FALSE;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// for(int i=0; i<MAX_SEGMENT; i++)
|
|||
|
|
// {
|
|||
|
|
// memset(ADBuffer[i], 0, MAX_RAM_SIZE*sizeof(USHORT));
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
LONG lBufferID = 0;
|
|||
|
|
ULONG nConstReadCnt = 0;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>ȡ״̬
|
|||
|
|
ACTS1000_STATUS_AD ADStatus;
|
|||
|
|
|
|||
|
|
if(!ACTS1000_InitDeviceAD(hDevice, &ADPara)) // <20><>ʼ<EFBFBD><CABC><EFBFBD>豸
|
|||
|
|
{
|
|||
|
|
AfxMessageBox(_T("Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ϸ<EFBFBD><CFB8>Ϣ<EFBFBD><CFA2><EFBFBD>鿴log<6F>ļ<EFBFBD>"), MB_ICONERROR);
|
|||
|
|
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (ADPara.TriggerMode == ACTS1000_TRIGMODE_MIDL)
|
|||
|
|
{
|
|||
|
|
gl_ReadSizeWords = (ADPara.M_Length + ADPara.N_Length)*gl_nChannelCount;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
gl_ReadSizeWords = ADPara.N_Length;
|
|||
|
|
gl_ReadSizeWords = gl_ReadSizeWords*gl_nChannelCount;
|
|||
|
|
}
|
|||
|
|
if (ADPara.TriggerMode == ACTS1000_TRIGMODE_POST || ADPara.TriggerMode == ACTS1000_TRIGMODE_DELAY)
|
|||
|
|
{
|
|||
|
|
if (ADPara.TrigCount==0)
|
|||
|
|
{
|
|||
|
|
gl_ReadSizeWords = 0xFFFFFFFFFFFFFFFF;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
gl_ReadSizeWords = gl_ReadSizeWords*ADPara.TrigCount;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
lSaveTime = GetTickCount();
|
|||
|
|
gl_bTerminateThr = FALSE ;
|
|||
|
|
//ULONG nTTT = 0;
|
|||
|
|
if (ADPara.SampleMode == ACTS1000_SAMPMODE_FINITE)
|
|||
|
|
{
|
|||
|
|
for(SampleIndex = 0; SampleIndex<SampleCnt; SampleIndex++)// ѭ<><D1AD><EFBFBD>ɼ<EFBFBD>AD<41><44><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if(!gl_bDeviceADRun)
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
if (!ACTS1000_StartDeviceAD(hDevice))// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
MsgBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!"));
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
//ACTS1000_SetDeviceTrigAD(hDevice);
|
|||
|
|
|
|||
|
|
if (ADPara.bSaveFile)
|
|||
|
|
{
|
|||
|
|
while(TRUE)
|
|||
|
|
{
|
|||
|
|
if(!ACTS1000_GetDevStatusAD(hDevice, &gl_ADStatus))
|
|||
|
|
{
|
|||
|
|
MsgBox(_T("GetDevStatusAD Error"));
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
if(gl_ADStatus.bComplete) // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
goto FinComplete;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if(!gl_bDeviceADRun) goto ExitReadThread;
|
|||
|
|
Sleep(1);
|
|||
|
|
}
|
|||
|
|
if (GetTickCount()-lSaveTime>300)
|
|||
|
|
{
|
|||
|
|
if (gl_ADStatus.lSavePoints>FileLenghtWords)
|
|||
|
|
{
|
|||
|
|
FileLenghtWords=gl_ADStatus.lSavePoints;
|
|||
|
|
SetEvent(hEvent); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳɼ<D1B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
lSaveTime = GetTickCount();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else // if (ADPara.bSaveFile)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
|
|||
|
|
nReadSize = gl_ReadSizeWords;
|
|||
|
|
while (nReadSize>0)
|
|||
|
|
{
|
|||
|
|
if (nReadSize>=ulReadCount)
|
|||
|
|
{
|
|||
|
|
nRead = ulReadCount;
|
|||
|
|
gl_bSmlThenSize = FALSE;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
gl_bSmlThenSize = TRUE;
|
|||
|
|
nRead = nReadSize;
|
|||
|
|
}
|
|||
|
|
NextRead:
|
|||
|
|
if(!gl_bDeviceADRun)
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
|
|||
|
|
RetReadSizeWords = ACTS1000_ReadDeviceAD(hDevice, ADBuffer[lBufferID], nRead, &nRetSizeWords, &nAvailSampsPoints,1.0);
|
|||
|
|
if(RetReadSizeWords == 0)
|
|||
|
|
{
|
|||
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>!"));
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
if (nRetSizeWords==0)
|
|||
|
|
{
|
|||
|
|
int a=0;
|
|||
|
|
}
|
|||
|
|
if (nRetSizeWords<=0)
|
|||
|
|
{
|
|||
|
|
goto NextRead;
|
|||
|
|
}
|
|||
|
|
// if (nRetSizeWords != 262144)
|
|||
|
|
// {
|
|||
|
|
// int a= 0;
|
|||
|
|
// }
|
|||
|
|
nReadSize -= nRetSizeWords;
|
|||
|
|
bSuccess = TRUE;
|
|||
|
|
if (nProcessMode == SAVE_MODE)
|
|||
|
|
{
|
|||
|
|
WriteFile(g_ArrFileOut,ADBuffer[lBufferID], nRetSizeWords*sizeof(WORD),&dTmp,NULL);
|
|||
|
|
FileLenghtWords += nRead; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
if (!m_bDrawComp)
|
|||
|
|
{
|
|||
|
|
glBufferID = lBufferID;
|
|||
|
|
|
|||
|
|
gl_Section.Lock();
|
|||
|
|
//ADBuffer[lBufferID][10]= nTTT++;
|
|||
|
|
gl_nDrawLen = nRetSizeWords/gl_nChannelCount;
|
|||
|
|
gl_nDrawIdx = lBufferID;
|
|||
|
|
gl_Section.Unlock();
|
|||
|
|
|
|||
|
|
if (nProcessMode != SAVE_MODE)
|
|||
|
|
{
|
|||
|
|
SetEvent(hEvent); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳɼ<D1B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
lBufferID++;
|
|||
|
|
if (lBufferID >= MAX_SEGMENT)
|
|||
|
|
lBufferID = 0;
|
|||
|
|
if (nProcessMode == SAVE_MODE)
|
|||
|
|
{
|
|||
|
|
SetEvent(hEvent); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳɼ<D1B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
FinComplete:
|
|||
|
|
ACTS1000_StopDeviceAD(hDevice); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
}// <20>߳<EFBFBD>ѭ<EFBFBD><D1AD>ȡ<EFBFBD><C8A1>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
lBufferID = 0;
|
|||
|
|
if (!ACTS1000_StartDeviceAD(hDevice))// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
MsgBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!"));
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ACTS1000_SetDeviceTrigAD(hDevice);
|
|||
|
|
if (ADPara.bSaveFile)
|
|||
|
|
{
|
|||
|
|
while(TRUE)
|
|||
|
|
{
|
|||
|
|
if(!ACTS1000_GetDevStatusAD(hDevice, &gl_ADStatus))
|
|||
|
|
{
|
|||
|
|
MsgBox(_T("GetDevStatusAD Error"));
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
if(!gl_bDeviceADRun)
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
Sleep(1);
|
|||
|
|
if (GetTickCount()-lSaveTime>300)
|
|||
|
|
{
|
|||
|
|
if (gl_ADStatus.lSavePoints>FileLenghtWords)
|
|||
|
|
{
|
|||
|
|
FileLenghtWords=gl_ADStatus.lSavePoints;
|
|||
|
|
SetEvent(hEvent); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳɼ<D1B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
lSaveTime = GetTickCount();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
nRead = ulReadCount;
|
|||
|
|
while(gl_bDeviceADRun)
|
|||
|
|
{
|
|||
|
|
RetReadSizeWords = ACTS1000_ReadDeviceAD(hDevice, ADBuffer[lBufferID], nRead, &nRetSizeWords, &nAvailSampsPoints,1.0);
|
|||
|
|
if(RetReadSizeWords == 0)
|
|||
|
|
{
|
|||
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>!"));
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
if (nRetSizeWords<=0)
|
|||
|
|
{
|
|||
|
|
Sleep(1);
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
bSuccess = TRUE;
|
|||
|
|
if (nProcessMode == SAVE_MODE)
|
|||
|
|
{
|
|||
|
|
WriteFile(g_ArrFileOut,ADBuffer[lBufferID], nRetSizeWords*sizeof(WORD),&dTmp,NULL);
|
|||
|
|
|
|||
|
|
FileLenghtWords += nRetSizeWords; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!m_bDrawComp)
|
|||
|
|
{
|
|||
|
|
glBufferID = lBufferID;
|
|||
|
|
|
|||
|
|
gl_Section.Lock();
|
|||
|
|
gl_nDrawLen = nRetSizeWords/gl_nChannelCount;
|
|||
|
|
gl_nDrawIdx = lBufferID;
|
|||
|
|
gl_Section.Unlock();
|
|||
|
|
if (nProcessMode != SAVE_MODE)
|
|||
|
|
{
|
|||
|
|
SetEvent(hEvent); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳɼ<D1B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
lBufferID++;
|
|||
|
|
if (lBufferID >= MAX_SEGMENT)
|
|||
|
|
lBufferID = 0;
|
|||
|
|
|
|||
|
|
if (nProcessMode == SAVE_MODE)
|
|||
|
|
{
|
|||
|
|
SetEvent(hEvent); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳɼ<D1B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
nConstReadCnt++;
|
|||
|
|
if (nConstReadCnt%4000==0)
|
|||
|
|
{
|
|||
|
|
if (ACTS1000_GetDevStatusAD(hDevice,&ADStatus))
|
|||
|
|
{
|
|||
|
|
if (ADStatus.bAheadTrig)
|
|||
|
|
{
|
|||
|
|
AfxMessageBox(_T("Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1:<3A>뽵<EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD> 2:<3A><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>Ч<EFBFBD><D0A7> 3:ʹ<><CAB9>Simple\AD\Continue<EFBFBD>µ<EFBFBD>exe<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>!"));
|
|||
|
|
goto ExitReadThread;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
ExitReadThread:
|
|||
|
|
SetEvent(hExitEvent); // <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ɹ<EFBFBD><C9B9>˳<EFBFBD><CBB3><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ùر<C3B9><D8B1>豸<EFBFBD><E8B1B8><EFBFBD>̵߳ô<CCB5><C3B4><EFBFBD>Ϣ
|
|||
|
|
gl_bTerminateThr = TRUE;
|
|||
|
|
gl_bCollected = TRUE; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>βɼ<CEB2>
|
|||
|
|
|
|||
|
|
ACTS1000_StopDeviceAD(hDevice);
|
|||
|
|
ACTS1000_ReleaseDeviceAD(hDevice);
|
|||
|
|
|
|||
|
|
if (!gl_bAutoCollect && bSuccess && gl_bStoped==FALSE)
|
|||
|
|
{
|
|||
|
|
//pApp->m_pADDoc->StopDeviceAD();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL MyStopDeviceAD(HANDLE hDevice)
|
|||
|
|
{
|
|||
|
|
CSysApp *pApp=(CSysApp *)AfxGetApp();
|
|||
|
|
|
|||
|
|
gl_bDeviceADRun = FALSE;
|
|||
|
|
if (gl_bAutoTrig)
|
|||
|
|
{
|
|||
|
|
ACTS1000_SetDeviceTrigAD(pApp->m_hDevice);
|
|||
|
|
}
|
|||
|
|
if (gl_bAutoCollect == FALSE)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
gl_bStoped = TRUE;
|
|||
|
|
WaitForSingleObject(m_ReadThread->m_hThread, 1000);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
WaitForSingleObject(m_ReadThread->m_hThread, INFINITE);
|
|||
|
|
}
|
|||
|
|
bCreateDevice = FALSE;
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|