Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/STIL/Common/inc/cAcqEasy.h
T
2014-06-04 14:35:27 +08:00

92 lines
5.7 KiB
C++

#if !defined(AFX_ACQUISITION_EASY_H_INCLUDED_)
#define AFX_ACQUISITION_EASY_H_INCLUDED_
#include "afxmt.h"
#include "windows.h"
#include "MchrType.h"
#include "MchrDefine.h"
#include "MchrError.h"
#include "Mchr.h"
#include "cAcqEasyType.h"
class cAcqEasy
{
private:
#ifdef _RELEASE_FULL_VERSION
HANDLE hThread;
static DWORD WINAPI ProcessThread (LPVOID lpArg);
DWORD ProcessThread(void);
HANDLE m_OnEvent[EVENT_ACQ_EASY_NUMBER];
HANDLE m_OnEventAcquisition[EVENT_ACQUISITION_NUMBER];
MCHR_tyAcqParam m_acqParam;
sAcqEasyParam m_acqEasyParam;
bool m_IsDataAcquisitionStarting;
bool m_IsSpectrumAcquisitionStarting;
MCHR_ID m_chr_id;
short m_status_acquisition;
char m_status_message[MAX_CHAR];
int m_number_of_buffer_to_read;
int m_current_index_of_buffer_to_read;
long m_measure_index;
HANDLE m_end_acq_event;
HANDLE m_status_event;
float **m_ppAcqBuffer[ID_BUFFER_MAX]; //data buffers
DWORD **m_ppEncoderBuffer[ID_BUFFER_ENCODER_MAX]; //encoders buffers
float **m_ppAutoAdaptativeBuffer; //auto adaptative buffers
bool m_IsCreateAcqBuffer;
CCriticalSection criticalBuffer;
void _CreateAcqBuffer(int NumberOfBuffers, int BufferLength);
void _ReleaseAcqBuffer(int NumberOfBuffers);
//try to determine and set the sensor mode and digital output
bool _SetSensorModeAndDigitalOutput(sAcqEasyParam *pAcqEasyParam);
#endif //_RELEASE_FULL_VERSION
public:
cAcqEasy(MCHR_ID SensorID);
~cAcqEasy();
#ifdef _RELEASE_FULL_VERSION
//start spectrum acquisition
bool StartSpectrumAcquisition(unsigned short **ppSpectrum, unsigned short *pFirstUsablePixel, unsigned short *pBufferSize);
//stop spectrum acquisition
bool StopSpectrumAcquisition(unsigned short **ppSpectrum);
//read spectrum acquisition
bool GetSpectrumAcquisition(unsigned short *pSpectrum, unsigned short DataSize, unsigned short *pCounter, enSpectrumAcquisitionResult *pSpectrumAcquisitionResult, int timeout);
//start acquisition with acquisition parameters
bool StartAcquisition(sAcqEasyParam acqEasyParam);
//stop acquisition
bool StopAcquisition();
//select your own acquisition event
void SetAcqEvent(HANDLE endAcqEvent) { m_end_acq_event = endAcqEvent; };
//select your own status event
void SetStatusEvent(HANDLE statusEvent) { m_status_event = statusEvent; };
void SetSensorId(MCHR_ID Id) { m_chr_id = Id; }
MCHR_ID GetSensorId(void) { return (m_chr_id); }
bool GetAltitudeAcquisitionData(PFLOAT pArrayAltitude, PFLOAT pArrayIntensity, PFLOAT pArrayCounter, PFLOAT pArrayBarycenter, PFLOAT pArrayStatus, int* pCount);
bool GetThicknessAcquisitionData(PFLOAT pArrayThickness, PFLOAT pArrayDistance1, PFLOAT pArrayIntensity1, PFLOAT pArrayBarycenter1, PFLOAT pArrayDistance2, PFLOAT pArrayIntensity2, PFLOAT pArrayBarycenter2, PFLOAT pArrayStatus, PFLOAT pArrayCounter, int* pDataCount);
bool GetDepthAcquisitionData(PFLOAT pArrayDepth, PFLOAT pArrayIntensity, PFLOAT pArrayCounter, PFLOAT pArrayBarycenter, PFLOAT pArrayStatus, int* pDataCount);
bool GetInterferometricThicknessAcquisitionData(PFLOAT pArrayThickness1, PFLOAT pArrayThickness2, PFLOAT pArrayThickness3, PFLOAT pArrayQuality1, PFLOAT pArrayQuality2, PFLOAT pArrayQuality3, PFLOAT pArrayIntensity, int* pDataCount);
bool GetInterferometricThicknessSAWLIAcquisitionData(PFLOAT pArrayThickness1, PFLOAT pArrayThickness2, PFLOAT pArrayThickness3, PFLOAT pArrayQuality1, PFLOAT pArrayQuality2, PFLOAT pArrayQuality3, PFLOAT pArrayIntensity, PFLOAT pArrayThickness, PFLOAT pArrayCounter, PFLOAT pArrayStatus, int* pDataCount);
bool GetEncoderData(PDWORD pArrayEncoder1, PDWORD pArrayEncoder2, PDWORD pArrayEncoder3);
bool GetAutoAdaptativeData(PFLOAT pArrayAutoAdaptative);
bool GetTransmittedData_ChrDistance(PFLOAT pArrayDistance, PFLOAT pArrayIntensity, PFLOAT pArrayBarycenter, int* pDataCount);
bool GetTransmittedData_ChrThickness(PFLOAT pArrayThickness, PFLOAT pArrayDistance1, PFLOAT pArrayDistance2, PFLOAT pArrayIntensity1, PFLOAT pArrayIntensity2, PFLOAT pArrayBarycenter1, PFLOAT pArrayBarycenter2, int* pDataCount);
bool GetTransmittedData_CcsDistance(PFLOAT pArrayDistance, PFLOAT pArrayAutoAdaptativeModeData, PFLOAT pArrayIntensity, PFLOAT pArrayBarycenter, PFLOAT pArrayStatus, PFLOAT pArrayCounter, PDWORD pArrayEncoder1, PDWORD pArrayEncoder2, PDWORD pArrayEncoder3, int* pDataCount);
bool GetTransmittedData_CcsThickness(PFLOAT pArrayThickness, PFLOAT pArrayDistance1, PFLOAT pArrayDistance2, PFLOAT pArrayAutoAdaptativeModeData, PFLOAT pArrayIntensity1, PFLOAT pArrayIntensity2, PFLOAT pArrayBaryCenter1, PFLOAT pArrayBaryCenter2, PFLOAT pArrayStatus, PFLOAT pArrayCounter, PDWORD pArrayEncoder1, PDWORD pArrayEncoder2, PDWORD pArrayEncoder3, int* pDataCount);
bool GetTransmittedData_DuoDistance(PFLOAT pArrayDistance, PFLOAT pArrayIntensity, PFLOAT pArrayCounter, PFLOAT pArrayBarycenter, PFLOAT pArrayStatus, int* pDataCount);
bool GetTransmittedData_DuoThickness(PFLOAT pArrayThickness, PFLOAT pArrayDistance1, PFLOAT pArrayDistance2, PFLOAT pArrayCounter, PFLOAT pArrayIntensity1, PFLOAT pArrayIntensity2, PFLOAT pArrayBaryCenter1, PFLOAT pArrayBaryCenter2, PFLOAT pArrayStatus, int* pDataCount);
bool GetTransmittedData_DuoSawliDistance(PFLOAT pArrayDistance, PFLOAT pArrayQuality, PFLOAT pArrayIntensity, PFLOAT pArrayCounter, PFLOAT pArrayStatus, int* pDataCount);
bool GetTransmittedData_DuoSawliThickness(PFLOAT pArrayThickness1, PFLOAT pArrayThickness2, PFLOAT pArrayThickness3, PFLOAT pArrayQuality1, PFLOAT pArrayQuality2, PFLOAT pArrayQuality3, PFLOAT pArrayIntensity, PFLOAT pArrayNbThickness, PFLOAT pArrayCounter, PFLOAT pArrayStatus, int* pDataCount);
short GetStatusAcquisition(char *pMessage);
#endif //_RELEASE_FULL_VERSION
};
#endif //AFX_ACQUISITION_EASY_H_INCLUDED_