新增STIL CCS-PRIMA激光测试功能。

This commit is contained in:
TAO Cheng
2014-05-29 20:45:30 +08:00
parent ec719c48bb
commit 4a12706680
20 changed files with 14114 additions and 11 deletions
@@ -0,0 +1,936 @@
//COLORIMETRY FUNCTIONS
/*
Acquisition functions
Configure the device in the acquisition mode (XYZ,RGB) and start acquiring data
Any float array parameter is optional and can be set to NULL
======================================
= Acquisition functions parameters =
======================================
SensorID : device ID
Parameters : Acquire parameter
pArrayColorDiff : ???
pArraySpectralDiff : ???
pArrayConformity : ???
pArrayCounter : This array will be filled with an incremented value ranging from 0 to 1200
Parameters 3,4 and 5 will be filled according to the mode (XYZ,Yxy,RGB...)
Mode description :
XYZ : ???
Yxy : ???
RGB : ???
Lab : ???
Luv : ???
Lch_ab : ???
W : ???
*/
/*!
\fn short MCHR_GetXYZ (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataX,PFLOAT*pArrayDataY,PFLOAT*pArrayDataZ,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
\if FR
\brief Récupère les données colorimétriques CIEXYZ.
\else
\brief Get the colorometric data CIEXYZ.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataX : Data X
\param [out] PFLOAT*pArrayDataY? : Data Y
\param [out] PFLOAT*pArrayDataZ : Data Z
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataX : Data X
\param [out] PFLOAT*pArrayDataY? : Data Y
\param [out] PFLOAT*pArrayDataZ : Data Z
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetXYZ (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataX,PFLOAT*pArrayDataY,PFLOAT*pArrayDataZ,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
/*!
\fn short MCHR_GetYxy (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataY,PFLOAT*pArrayDatax,PFLOAT*pArrayDatay,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
\if FR
\brief Récupère les données colorimétriques CIEYxy.
\else
\brief Get the colorometric data CIEYxy.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataY : Data Y
\param [out] PFLOAT*pArrayDatax : Data x
\param [out] PFLOAT*pArrayDatay : Data y
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataY : Data Y
\param [out] PFLOAT*pArrayDatax : Data x
\param [out] PFLOAT*pArrayDatay : Data y
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetYxy (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataY,PFLOAT*pArrayDataX,PFLOAT*pArrayDatay,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
/*!
\fn short MCHR_GetRGB (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataR,PFLOAT*pArrayDataG,PFLOAT*pArrayDataB,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
\if FR
\brief Récupère les données colorimétriques sRVB.
\else
\brief Get the colorometric data sRVB.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataR : Data R
\param [out] PFLOAT*pArrayDataG : Data V
\param [out] PFLOAT*pArrayDataB : Data B
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataR : Data R
\param [out] PFLOAT*pArrayDataG : Data V
\param [out] PFLOAT*pArrayDataB : Data B
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetRGB (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataR,PFLOAT*pArrayDataG,PFLOAT*pArrayDataB,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
/*!
\fn short MCHR_GetLab (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataL,PFLOAT*pArrayDataa,PFLOAT*pArrayDatab,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
\if FR
\brief Récupère les données colorimétriques CIELab.
\else
\brief Get the colorometric data CIELab.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataL : Data L
\param [out] PFLOAT*pArrayDataa : Data a
\param [out] PFLOAT*pArrayDatab : Data b
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataL : Data L
\param [out] PFLOAT*pArrayDataa : Data a
\param [out] PFLOAT*pArrayDatab : Data b
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetLab (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataL,PFLOAT*pArrayDataa,PFLOAT*pArrayDatab,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
/*!
\fn short MCHR_GetLuv (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataL,PFLOAT*pArrayDatau,PFLOAT*pArrayDatav,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
\if FR
\brief Récupère les données colorimétriques CIELuv.
\else
\brief Get the colorometric data CIELuv.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataL : Data L
\param [out] PFLOAT*pArrayDatau : Data u
\param [out] PFLOAT*pArrayDatav : Data v
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataL : Data L
\param [out] PFLOAT*pArrayDatau : Data u
\param [out] PFLOAT*pArrayDatav : Data v
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetLuv (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataL,PFLOAT*pArrayDatau,PFLOAT*pArrayDatav,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
/*!
\fn short MCHR_GetLch_ab (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataLch,PFLOAT*pArrayData,PFLOAT*pArrayDatab,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
\if FR
\brief Récupère les données colorimétriques CIELch.
\else
\brief Get the colorometric data CIELch.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataLch : Data Lch
\param [out] PFLOAT*pArrayDataa : Data a
\param [out] PFLOAT*pArrayDatab : Data b
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataLch : Data Lch
\param [out] PFLOAT*pArrayDataa : Data a
\param [out] PFLOAT*pArrayDatab : Data b
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetLch_ab (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataLch,PFLOAT*pArrayData,PFLOAT*pArrayDatab,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
/*!
\fn short MCHR_GetW (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataW,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
\if FR
\brief Récupère l'indice de blancheur CIE W
\brief Get the colorometric data CIE W
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataW : Value of the whiteref
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] MCHR_tyAcqParam Parameters?
\param [out] PFLOAT*pArrayDataW : Data W
\param [out] PFLOAT*pArrayColorDiff ? Method to calculate the difference of the color
\param [out] PFLOAT*pArraySpectralDiff : Method to calculate the difference of spectral
\param [out] PFLOAT*pArrayConformity : Tolerance to eliminate the sample no accordance.
\param [out] PFLOAT*pArrayCounter : Count the number of acquisitions
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetW (MCHR_ID SensorID,MCHR_tyAcqParam Parameters, PFLOAT *pArrayDataW,PFLOAT*pArrayColorDiff,PFLOAT*pArraySpectralDiff,PFLOAT*pArrayConformity,PFLOAT*pArrayCounter);
/*!
\fn short MCHR_GetFirstPixel(MCHR_ID SensorID,long *piFps)
\if FR
\brief Fonction detection du premier pixel.
\else
\brief Function Get First pixel.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] long *piFps : Premier pixel detecte
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] long *piFps : First detected pixel
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetFirstPixel(MCHR_ID SensorID,long *piFps);
/*!
\fn short MCHR_SetFirstPixel(MCHR_ID SensorID,long iFps)
\if FR
\brief Fonction de parametrage du premier pixel.
\else
\brief Function Set First pixel.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long iFps : Premier pixel detecte
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long iFps : First detected pixel
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetFirstPixel(MCHR_ID SensorID,long iFps);
/*
Number of pixels returned in the taken in account for result
To retreive the spectrums when using MCHR_SetSpectrumBuffer, buffer size must be equal to the NumberOfPixels
*/
/*!
\fn short MCHR_GetNumberOfPixels(MCHR_ID SensorID,long *piFps);
\if FR
\brief Recupere le nombre de pixel pour definir un spectre.
\else
\brief Get the number of pixels to define a spectral.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long *piFps : Nombre de pixels.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long *piFps : Numbers of pixels.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetNumberOfPixels(MCHR_ID SensorID,long *piFps);
/*!
\fn short MCHR_SetNumberOfPixels(MCHR_ID SensorID,long iFps);
\if FR
\brief Parametre le nombre de pixel pour definir un spectre.
\else
\brief Set the number of pixels to define a spectral.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long *piFps : Nombre de pixels.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long *piFps : Numbers of pixels.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetNumberOfPixels(MCHR_ID SensorID,long iFps);
/*!
\fn short MCHR_GetSampling(MCHR_ID SensorID,long *piSampling);
\if FR
\brief Recupere le pas d'échantillonage du spectre.
\else
\brief Get the spectral sampling
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long *piSampling :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long *piSampling : Spectral sampling ( nothing, 1nm, 5nm, 10nm).
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetSampling(MCHR_ID SensorID,long *piSampling);
/*!
\fn short MCHR_SetSampling(MCHR_ID SensorID,long iSampling);
\if FR
\brief Parametre le pas d'échantillonage du spectre.
\else
\brief Set the spectral sampling
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long *piSampling :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long *piSampling : Spectral sampling ( nothing, 1nm, 5nm, 10nm).
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetSampling(MCHR_ID SensorID,long iSampling);
/*!
\fn short MCHR_GetMaximumNumberPixel(MCHR_ID SensorID,long *piMax);
\if FR
\brief Obtient le nombre maximum de pixels.
\else
\brief Get the the maximum numbers of pixels
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long *piMax :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long *piMax : Maximum Numbers of pixels.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetMaximumNumberPixel(MCHR_ID SensorID,long *piMax);
/*!
\fn short MCHR_SetMaximumNumberPixel(MCHR_ID SensorID,long *piMax);
\if FR
\brief PAramétre le nombre maximum de pixels.
\else
\brief Set the the maximum numbers of pixels
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long iMax :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long iMax : Maximum Numbers of pixels.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetMaximumNumberPixel(MCHR_ID SensorID,long iMax);
/*!
\fn short MCHR_GetMinimumNumberPixel(MCHR_ID SensorID,long *piMin);
\if FR
\brief Obtient le nombre minimum de pixels.
\else
\brief Get the the minimum numbers of pixels
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long *piMin :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long *piMins : Maximum Numbers of pixels.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetMinimumNumberPixel(MCHR_ID SensorID,long *piMin);
/*!
\fn short MCHR_SetMinimumNumberPixel(MCHR_ID SensorID,long iMin);
\if FR
\brief Parametre le nombre minmum de pixels.
\else
\brief Set the the minimum numbers of pixels
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long iMin :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long iMin : Minimum Numbers of pixels.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetMinimumNumberPixel(MCHR_ID SensorID,long iMin);
/*!
\fn short MCHR_GetRealTimeSignalType(MCHR_ID SensorID,enRealTimeSignalType *);
\if FR
\brief Obtient le type de signal export?(brut ou trait?, le signal trait?correspond ?la réflectance de l’échantillon.
\else
\brief Get the type of signal exported (raw or processed), the processed signal is equivalent to the reflectance of the sample.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enRealTimeSignalType :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enRealTimeSignalType : type of signal
\arg \c RT_NO_SIGNAL,
\arg \c RT_RAW_SIGNAL,
\arg \c RT_PRETRAITED_SIGNAL,
\aeg \c NBR_MAX_RT_SIGNAL_TYPE,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetRealTimeSignalType(MCHR_ID SensorID,enRealTimeSignalType *pRealTimeSignalType);
/*!
\fn short MCHR_SetRealTimeSignalType(MCHR_ID SensorID,enRealTimeSignalType);
\if FR
\brief Parametre le type de signal export?(brut ou trait?, le signal trait?correspond ?la réflectance de l’échantillon.
\else
\brief Set the type of signal exported (raw or processed), the processed signal is equivalent to the reflectance of the sample.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enRealTimeSignalType :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enRealTimeSignalType : type of signal
\arg \c RT_NO_SIGNAL,
\arg \c RT_RAW_SIGNAL,
\arg \c RT_PRETRAITED_SIGNAL,
\aeg \c NBR_MAX_RT_SIGNAL_TYPE,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetRealTimeSignalType(MCHR_ID SensorID, enRealTimeSignalType realTimeSignalType);
/*!
\fn short MCHR_MeasureTarget(MCHR_ID SensorID);
\if FR
\brief
\else
\brief Function to read the mesure of the target
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\endif
*/
DLL_CHR_API short MCHR_MeasureTarget(MCHR_ID SensorID);
/*!
\fn short MCHR_GetReferenceCoordinate (MCHR_ID SensorID, PFLOAT pfX, PFLOAT pfY, PFLOAT pfZ);
\if FR
\brief Obtient les coordonnées colorimétriques de la cible
\else
\brief Get the target colorimetric coordinates.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param PFLOAT pfX : Pointer to an array of target colorimetric coordinate X.
\param PFLOAT pfY : Pointer to an array of target colorimetric coordinate Y.
\param PFLOAT pfZ : Pointer to an array of target colorimetric coordinate Z.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param PFLOAT pfX : Pointer to an array of target colorimetric coordinate X.
\param PFLOAT pfY : Pointer to an array of target colorimetric coordinate Y.
\param PFLOAT pfZ : Pointer to an array of target colorimetric coordinate Z.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetReferenceCoordinate (MCHR_ID SensorID, PFLOAT pfX, PFLOAT pfY, PFLOAT pfZ);
/*!
\fn short MCHR_GetIlluminantCoordinate (MCHR_ID SensorID, PFLOAT pfX, PFLOAT pfY, PFLOAT pfZ);
\if FR
\brief Obtient les coordonnées colorimétriques de l'illuminant
\else
\brief Get the illuminant colorimetric coordinates
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param PFLOAT pfX :
\param PFLOAT pfY :
\param PFLOAT pfZ :
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param PFLOAT pfX : Pointer to an array of target colorimetric coordinate X.
\param PFLOAT pfY : Pointer to an array of target colorimetric coordinate Y.
\param PFLOAT pfZ : Pointer to an array of target colorimetric coordinate Z.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetIlluminantCoordinate (MCHR_ID SensorID, PFLOAT pfX, PFLOAT pfY, PFLOAT pfZ);
/*!
\fn short MCHR_SetIlluminants (MCHR_ID SensorID, enIlluminant);
\if FR
\brief Configure l'illuminant CIE ?utiliser pour le calcul des coordonnées colorimétriques.
\else
\brief Set the CIE illuminant to calculate of colorimetrics coordinates.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIlluminant :
\arg \c A.
\arg \c C.
\aeg \c D.
\arg \c F.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIlluminant :
\arg \c A.
\arg \c C.
\aeg \c D.
\arg \c F.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetIlluminants (MCHR_ID SensorID, enIlluminant );
/*!
\fn short MCHR_GetIlluminants (MCHR_ID SensorID, enIlluminant *);
\if FR
\brief Obtient l'illuminant CIE ?utiliser pour le calcul des coordonnées colorimétriques.
\else
\brief Get the CIE illuminant to calculate of colorimetrics coordinates.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIlluminant :
\arg \c A.
\arg \c C.
\aeg \c D.
\arg \c F.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIlluminant : Choice of illuminant
\arg \c A.
\arg \c C.
\aeg \c D.
\arg \c F.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetIlluminants (MCHR_ID SensorID, enIlluminant *);
/*!
\fn short MCHR_SetObserver (MCHR_ID SensorID, enObservateur);
\if FR
\brief Configure lobservateur standard CIE ?utiliser pour le calcul des coordonnées colorimétriques.
\else
\brief Set the standart observer to calculate the colorimetrics coordinates.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enObservateur :
\arg \c OBS_CIE1931 : CIE1931 (2?,
\arg \c OBS_CIE1964 : CIE1964 (10?.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enObservateur : Value of observer
\arg \c OBS_CIE1931 : CIE1931 (2?,
\arg \c OBS_CIE1964 : CIE1964 (10?.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetObserver (MCHR_ID SensorID, enObservateur);
/*!
\fn short MCHR_GetObserver (MCHR_ID SensorID, enObservateur*);
\if FR
\brief Obtient lobservateur standard CIE ?utiliser pour le calcul des coordonnées colorimétriques.
\else
\brief Get the standart observer to calculate the colorimetrics coordinates.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enObservateur :
\arg \c OBS_CIE1931 : CIE1931 (2?,
\arg \c OBS_CIE1964 : CIE1964 (10?.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enObservateur : Value of observer
\arg \c OBS_CIE1931 : CIE1931 (2?,
\arg \c OBS_CIE1964 : CIE1964 (10?
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetObserver (MCHR_ID SensorID, enObservateur*);
/*!
\fn short MCHR_SetColorIndicator (MCHR_ID SensorID, enIndiceCouleur);
\if FR
\brief Configure le calcul des différences de couleur (coordonnées colorimétriques).
\else
\brief Set the value to calculate the color difference.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIndiceCouleur :
\arg \c IND_COLOR_Eab : delta Eab,
\arg \c IND_COLOR_E2000 : delta E2000,
\arg \c IND_COLOR_CMC : CMC,
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIndiceCouleur : Value of calculation
\arg \c IND_COLOR_Eab : delta Eab,
\arg \c IND_COLOR_E2000 : delta E2000,
\arg \c IND_COLOR_CMC : CMC,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetColorIndicator (MCHR_ID SensorID, enIndiceCouleur);
/*!
\fn short MCHR_GetColorIndicator (MCHR_ID SensorID, enIndiceCouleur*);
\if FR
\brief Obtient le calcul des différences de couleur (coordonnées colorimétriques).
\else
\brief Get the value to calculate the color difference.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIndiceCouleur :
\arg \c IND_COLOR_Eab : delta Eab,
\arg \c IND_COLOR_E2000 : delta E2000,
\arg \c IND_COLOR_CMC : CMC,
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIndiceCouleur : Value of calculation
\arg \c IND_COLOR_Eab : delta Eab,
\arg \c IND_COLOR_E2000 : delta E2000,
\arg \c IND_COLOR_CMC : CMC,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetColorIndicator (MCHR_ID SensorID, enIndiceCouleur*);
/*!
\fn short MCHR_SetSpectralIndicator (MCHR_ID SensorID, enIndiceSpectre);
\if FR
\brief Configure le calcul des différences de spectre.
\else
\brief Set the value to calculate the spectral difference.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIndiceSpectre :
\arg \c IND_SPECTRE_RMS : RootMeanSquar,
\arg \c IND_SPECTRE_GFC : Goodness-Fitness Coefficient,
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIndiceSpectre : Value of calculation
\arg \c IND_SPECTRE_RMS : RootMeanSquar,
\arg \c IND_SPECTRE_GFC : Goodness-Fitness Coefficient,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetSpectralIndicator (MCHR_ID SensorID, enIndiceSpectre);
/*!
\fn short MCHR_GetSpectralIndicator (MCHR_ID SensorID, enIndiceSpectre*);
\if FR
\brief Obtient le calcul des différences de spectre.
\else
\brief Set the value to calculate the spectral difference.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIndiceSpectre :
\arg \c IND_SPECTRE_RMS : RootMeanSquar,
\arg \c IND_SPECTRE_GFC : Goodness-Fitness Coefficient,
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIndiceSpectre : Value of calculation
\arg \c IND_SPECTRE_RMS : RootMeanSquar,
\arg \c IND_SPECTRE_GFC : Goodness-Fitness Coefficient,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetSpectralIndicator (MCHR_ID SensorID, enIndiceSpectre*);
/*!
\fn short MCHR_SetColorDifferenceMode (MCHR_ID SensorID, enTypeConformite);
\if FR
\brief Configure le type de calcul des différences entre mesure courante et mesure cible. Les deux types disponibles sont soit une différence de couleur ou de spectre.
\else
\brief Set the calculation type of difference between current measurement and target measurement.
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIndiceSpectre :
\arg \c CONFORMITE_DESACTIVE,
\arg \c CONFORMITE_COULEUR,
\arg \c CONFORMITE_SPECTRE,
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIndiceSpectre : Value of calculation
\arg \c CONFORMITE_DESACTIVE,
\arg \c CONFORMITE_COULEUR,
\arg \c CONFORMITE_SPECTRE,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetColorDifferenceMode (MCHR_ID SensorID, enTypeConformite);
/*!
\fn short MCHR_GetColorDifferenceMode (MCHR_ID SensorID, enTypeConformite*);
\if FR
\brief Configure le type de calcul des différences entre mesure courante et mesure cible. Les deux types disponibles sont soit une différence de couleur ou de spectre.
\else
\brief Get the calculation type of difference between current measurement and target measurement.
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param enIndiceSpectre :
\arg \c CONFORMITE_DESACTIVE,
\arg \c CONFORMITE_COULEUR,
\arg \c CONFORMITE_SPECTRE,
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param enIndiceSpectre : Value of calculation
\arg \c CONFORMITE_DESACTIVE,
\arg \c CONFORMITE_COULEUR,
\arg \c CONFORMITE_SPECTRE,
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetColorDifferenceMode (MCHR_ID SensorID, enTypeConformite*);
/*!
\fn short MCHR_SetColorTolerance (MCHR_ID SensorID, double);
\if FR
\brief Configure la valeur de tolérance dun calcul de différence entre spectres ou coordonnées colorimétriques.
\else
\brief Set the tolerance value of calculation berween spectral or colorimetrics coordinates.
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_SetColorTolerance (MCHR_ID SensorID, double);
/*!
\fn short MCHR_GetColorTolerance (MCHR_ID SensorID, double*);
\if FR
\brief Configure la valeur de tolérance dun calcul de différence entre spectres ou coordonnées colorimétriques.
\else
\brief Get the tolerance value of calculation berween spectral or colorimetrics coordinates.
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\return short : un code d'erreur \link MCHR_ERROR MCHR_ERROR \endlink.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
\see MCHR_GetErrorDescription
*/
DLL_CHR_API short MCHR_GetColorTolerance (MCHR_ID SensorID, double*);
/*
Use this function to specify a buffer receiving the spectrums
ppSpectrumBuffer is a pointer to a pointer array of the size of the buffer_number
Each of this buffer is pointing to an array of pointer. Each of them point to an array of WORD, which size is specified in wSpectroSize
The size should be equals to the value returned by SPECTRO_GetNumberOfPixels()
For an example, please have a look at the SpectroSample, "DAcquisition.cpp"
ppSpectrumBuffer
|
[*][*][*][*][*][*][*][*] ... (buffer number)
/|\
\
[*][*][*]... (buffer length)
/|\
\
[WORD][WORD][WORD][WORD][WORD][WORD][WORD][WORD]... buffer size
*/
/*!
\fn short MCHR_SetSpectrumBuffer (MCHR_ID SensorID, double*);
\if FR
\brief PRIVE
\else
\brief PRIVATE
*/
DLL_CHR_API short MCHR_SetSpectrumBuffer(MCHR_ID SensorID,WORD***ppSpectrumBuffer,WORD wSpectroSize);
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,545 @@
/************************************************************************/
/* STIL * Software Departement */
/*----------------------------------------------------------------------*/
/* */
/* MchrDefine.h */
/* */
/*----------------------------------------------------------------------*/
/* Project .................................. CHR DLL */
/* Reference documents */
/* Programming Language ................. Visual C++ v6.0 */
/* Starting date ................... 16/01/2003 */
/* Date of last update ............. */
/* Author(s)................................. DMO */
/* Required Files .........................none */
/* Required hardware .................... PC Pentium 350 Mhz */
/* Prefix ........... MCHR_ */
/*----------------------------------------------------------------------*/
/* This HEADER file defines constants */
/* */
/* */
/*----------------------------------------------------------------------*/
/* V? | Date |AUTHOR| COMMENTS */
/*-------+---------- +--------------------------------------------------*/
/* 01 | 05 Sept 03| DMO | Initial version */
/* 02 | 18 Nov 05| DMO | Ethernet, XE, download */
/* 03 | 07 Mar. 08| RSA | Max number devices set to 8 */
/*----------------------------------------------------------------------*/
#ifndef MCHRDEFINE_H
#define MCHRDEFINE_H
#if defined(_cplusplus) || defined(__cplusplus)
extern "C" {
#endif /* _cplusplus */
/*!
\def MCHR_MAX_SENSOR
\if FR
Nombre maximum de capteur pouvant être gere par la DLL
\else
Maximum number of sensors that can be handled by the DLL
\endif
*/
#define MCHR_MAX_SENSOR 16
/*!
\def MCHR_MAX_REFRACTIVE_INDEX
\if FR
Nombre maximum de d'indice de refraction pouvant être gere par un capteur
\else
Maximum number of refractive indexes that can be handled by a sensor
\endif
*/
#define MCHR_MAX_REFRACTIVE_INDEX 8
/*!
\def MCHR_USB_DEVICE_NAME_LENGTH
\if FR
Taille max du nom de peripherique USB
\else
Max length of Usb device name
\endif
*/
#define MCHR_USB_DEVICE_NAME_LENGTH 50
/*!
\def MCHR_MAX_DIGITAL_DATA
\if FR
Nombre de donnees max mesurees par un capteur
\else
Max number of data measured at each physical point
\endif
*/
#define MCHR_MAX_DIGITAL_DATA 16
/*!
\def MCHR_ANALOG_OUTPUT_NUMBER
\if FR
Nombre de sorties analogique max d'un capteur
\else
Max number of analog outputs for a sensor
\endif
*/
#define MCHR_ANALOG_OUTPUT_NUMBER 2
/*!
\def MCHR_MAX_ENCODER
\if FR
Nombre de codeur max pour un capteur
\else
Max number of encoders for a sensor
\endif
*/
#define MCHR_MAX_ENCODER 3
/*!
\def MCHR_MAX_PEN_CHR_150
\if FR
Nombre de crayon max dans un CHR-150.
\else
Max number of opticals pens ( = calibration tables) by CHR 150
\endif
*/
#define MCHR_MAX_PEN_CHR_150 6
/*!
\def MCHR_MAX_PEN_CHR_450
\if FR
Nombre de crayon max dans un CHR-450.
\else
Max number of opticals pens ( = calibration tables) by CHR 450
\endif
*/
#define MCHR_MAX_PEN_CHR_450 6
/*!
\def MCHR_MAX_PEN_CHR_XE
\if FR
Nombre de crayon max dans un CHR-XE.
\else
Max number of opticals pens ( = calibration tables) by CHR XE
\endif
*/
#define MCHR_MAX_PEN_CHR_XE 6
/*!
\def MCHR_MAX_PEN_CHR_XE_E
\if FR
Nombre de crayon max dans un CHR-XE.
\else
Max number of opticals pens ( = calibration tables) by CHR XE
\endif
*/
#define MCHR_MAX_PEN_CHR_XE_E 20
/*!
\def MCHR_MAX_PEN_CCS_ALPHA
\if FR
Nombre de crayon max dans un CCS ALPHA.
\else
Max number of opticals pens ( = calibration tables) by CCS ALPHA
\endif
*/
#define MCHR_MAX_PEN_CCS_ALPHA 20
/*!
\def MCHR_MAX_PEN_CCS_PRIMA
\if FR
Nombre de crayon max dans un CCS PRIMA.
\else
Max number of opticals pens ( = calibration tables) by CCS PRIMA.
\endif
*/
#define MCHR_MAX_PEN_CCS_PRIMA 20
/*!
\def MCHR_MAX_PEN_CCS_OPTIMA
\if FR
Nombre de crayon max dans un CCS OPTIMA.
\else
Max number of opticals pens ( = calibration tables) by CCS OPTIMA
\endif
*/
#define MCHR_MAX_PEN_CCS_OPTIMA 20
/*!
\def MCHR_MAX_PEN_CCS_ULTIMA
\if FR
Nombre de crayon max dans un CCS ULTIMA.
\else
Max number of opticals pens ( = calibration tables) by CCS ULTIMA
\endif
*/
#define MCHR_MAX_PEN_CCS_ULTIMA 20
/*!
\def MCHR_MAX_PEN_CCS_INITIAL
\if FR
Nombre de crayon max dans un CCS INITIAL.
\else
Max number of opticals pens ( = calibration tables) by CCS INITIAL.
\endif
*/
#define MCHR_MAX_PEN_CCS_INITIAL 1
/*!
\def MCHR_MAX_PEN_TRIO
\if FR
Nombre de crayon max dans un TRIO.
\else
Max number of opticals pens ( = calibration tables) by TRIO.
\endif
*/
#define MCHR_MAX_PEN_TRIO 20
/*!
\def MCHR_MAX_PEN_RUBY
\if FR
Nombre de crayon max dans un RUBY.
\else
Max number of opticals pens ( = calibration tables) by RUBY
\endif
*/
#define MCHR_MAX_PEN_RUBY 20
/*!
\def MCHR_MAX_PEN_CHR
\if FR
Nombre de crayon max dans un CHR.
\else
Max number of opticals pens ( = calibration tables) by CHR.
\endif
*/
#define MCHR_MAX_PEN_CHR MCHR_MAX_PEN_CHR_150
/*!
\def MCHR_MAX_EXPOSURE_CHR_150
\if FR
Definition du temps d'exposition MAXIMUM pour un capteur.
\warning Fonction non autorisee pour le CHR 150.
\else
MAXIMUM exposure time in microsec for a sensor.
\warning COMMAND NOT AUTHORIZED for CHR 150.
\endif
*/
#define MCHR_MAX_EXPOSURE_CHR_150 0 /* Non applicable sur CHR-150 */
/* Command not authorized for CHR 150 */
/*!
\def MCHR_MIN_EXPOSURE_CHR_150
\if FR
Definition du temps d'exposition MINIMUM pour un capteur.
\warning Fonction non autorisee pour le CHR 150.
\else
MINIMUM exposure time in microsec for a sensor.
\warning COMMAND NOT AUTHORIZED for CHR 150.
\endif
*/
#define MCHR_MIN_EXPOSURE_CHR_150 0 /* Non applicable sur CHR-150 */
/* Command not authorized for CHR 150 */
/*!
\def MCHR_MAX_EXPOSURE_CHR_450
\if FR
Definition du temps d'exposition MAXIMUM pour un CHR 450 <br>
30000 correspond ?la fréquence 33Hz.
\else
MAXIMUM exposure time in microsec for CHR 450. <br>
30000 correspond to the frequency 33Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CHR_450 30000 /* Correspond ?la Freq 33Hhz */
/* Corresponds to 33Hz */
/*!
\def MCHR_MIN_EXPOSURE_CHR_450
\if FR
Definition du temps d'exposition MINIMUM pour un CHR 450.
250 correspond ?la fréquence 4 KHz.
\else
MINIMUM exposure time in microsec for CHR 450.
250 correspond to the frequency 4 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CHR_450 250 /* Correspond la freq 4Khz */
/* Corresponds to 4KHz */
/*!
\def MCHR_MAX_EXPOSURE_CHR_XE
\if FR
Definition du temps d'exposition MAXIMUM pour un CHR XE <br>
30000 correspond ?la fréquence 33Hz.
\else
MAXIMUM exposure time in microsec for CHR XE <br>
30000 correspond to the frequency 33Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CHR_XE 30000 /* Correspond ?la Freq 33Hhz */
/* Corresponds to 33Hz */
/*!
\def MCHR_MIN_EXPOSURE_CHR_XE
\if FR
Definition du temps d'exposition MINIMUM pour un CHR XE.
100 correspond ?la fréquence 10 KHz.
\else
MINIMUM exposure time in microsec for CHR XE.
100 correspond to the frequency 10 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CHR_XE 100 /* Correspond la freq 10Khz */
/* Corresponds to 10KHz */
/*!
\def MCHR_MAX_EXPOSURE_CHR_XE_E
\if FR
Definition du temps d'exposition MAXIMUM pour un CHR XE_E <br>
30000 correspond ?la fréquence 33 Hz.
\else
MAXIMUM exposure time in microsec for CHR XE_E. <br>
30000 correspond to the frequency 33 Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CHR_XE_E 30000 /* Correspond ?la Freq 33Hhz */
/* Corresponds to 33Hz */
/*!
\def MCHR_MIN_EXPOSURE_XE_E
\if FR
Definition du temps d'exposition MINIMUM pour un CHR XE_E.
32 correspond ?la fréquence 31,250 Khz.
\else
MINIMUM exposure time in microsec for CHR XE_E.
32 correspond to the frequency 31,250 Khz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CHR_XE_E 32 /* Correspond la freq 31Khz250 */
/* Corresponds to 31250 Hz */
/*!
\def MCHR_MAX_EXPOSURE_CCS_ALPHA
\if FR
Definition du temps d'exposition MAXIMUM pour un CCS ALPHA <br>
25000 correspond ?la fréquence 40 Hz.
\else
MAXIMUM exposure time in microsec for CCS ALPHA. <br>
25000 correspond to the frequency 40 Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CCS_ALPHA 25000 /* Correspond ?la Freq 40 Hz */
/* Corresponds to 40 Hz */
/*!
\def MCHR_MIN_EXPOSURE_CCS_ALPHA
\if FR
Definition du temps d'exposition MINIMUM pour un CCS ALPHA.
500 correspond ?la fréquence 2 KHz.
\else
MINIMUM exposure time in microsec for CHR CCS ALPHA.
500 correspond to the frequency 2 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CCS_ALPHA 500 /* Correspond la freq 2Khz */
/* Corresponds to 2000 Hz */
/*!
\def MCHR_MAX_EXPOSURE_CCS_INITIAL
\if FR
Definition du temps d'exposition MAXIMUM pour un CCS INITIAL <br>
10000 correspond ?la fréquence 100 Hz.
\else
MAXIMUM exposure time in microsec for CHR CCS INITIAL. <br>
10000 correspond to the frequency 100 Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CCS_INITIAL 10000 /* Correspond ?la Freq 100Hhz */
/* Corresponds to 100Hz */
/*!
\def MCHR_MIN_EXPOSURE_CCS_INITIAL
\if FR
Definition du temps d'exposition MINIMUM pour un CCS INITIAL.
500 correspond ?la fréquence 2 KHz.
\else
MINIMUM exposure time in microsec for CHR CCS INITIAL.
500 correspond to the frequency 2 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CCS_INITIAL 500 /* Correspond la freq 2Khz */
/* Corresponds to 2000 Hz */
/*!
\def MCHR_MAX_EXPOSURE_CCS_PRIMA
\if FR
Definition du temps d'exposition MAXIMUM pour un CCS PRIMA <br>
10000 correspond ?la fréquence 100Hz.
\else
MAXIMUM exposure time in microsec for CCS PRIMA. <br>
10000 correspond to the frequency 100Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CCS_PRIMA 10000 /* Correspond ?la Freq 100Hhz */
/* Corresponds to 100Hz */
/*!
\def MCHR_MIN_EXPOSURE_CCS_PRIMA
\if FR
Definition du temps d'exposition MINIMUM pour un CCS PRIMA.
500 correspond ?la fréquence 2 KHz.
\else
MINIMUM exposure time in microsec for CCS PRIMA.
500 correspond to the frequency 2 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CCS_PRIMA 500 /* Correspond la freq 2Khz */
/* Corresponds to 2000 Hz */
/*!
\def MCHR_MAX_EXPOSURE_CCS_OPTIMA
\if FR
Definition du temps d'exposition MAXIMUM pour un CCS_OPTIMA <br>
10000 correspond ?la fréquence 100Hz.
\else
MAXIMUM exposure time in microsec for CCS_OPTIMA. <br>
10000 correspond to the frequency 100Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CCS_OPTIMA 10000 /* Correspond ?la Freq 100Hhz */
/* Corresponds to 100Hz */
/*!
\def MCHR_MIN_EXPOSURE_CCS_OPTIMA
\if FR
Definition du temps d'exposition MINIMUM pour un CCS OPTIMA.
200 correspond ?la fréquence 5 KHz.
\else
MINIMUM exposure time in microsec for CCS OPTIMA.
200 correspond to the frequency 4 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CCS_OPTIMA 200 /* Correspond la freq 5000 hz */
/* Corresponds to 5 kHz */
/*!
\def MCHR_MAX_EXPOSURE_CCS_ULTIMA
\if FR
Definition du temps d'exposition MAXIMUM pour un CCS ULTIMA<br>
10000 correspond ?la fréquence 100Hz.
\else
MAXIMUM exposure time in microsec for CCS ULTIMA. <br>
10000 correspond to the frequency 100Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_CCS_ULTIMA 10000 /* Correspond ?la Freq 100Hhz */
/* Corresponds to 100Hz */
/*!
\def MCHR_MIN_EXPOSURE_CCS_ULTIMA
\if FR
Definition du temps d'exposition MINIMUM pour un CCS ULTIMA.
32 correspond ?la fréquence 31,250 KHz.
\else
MINIMUM exposure time in microsec for CCS ULTIMA.
32 correspond to the frequency 31,250 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_CCS_ULTIMA 32 /* Correspond la freq 31250 hz */
/* Corresponds to 31250 Hz */
/*!
\def MCHR_MAX_EXPOSURE_TRIO
\if FR
Definition du temps d'exposition MAXIMUM pour un TRIO <br>
25000 correspond ?la fréquence 40Hz.
\else
MAXIMUM exposure time in microsec for TRIO. <br>
25000 correspond to the frequency 40Hz.
\endif
*/
#define MCHR_MAX_EXPOSURE_TRIO 25000 /* Correspond ?la Freq 40Hz */
/*!
\def MCHR_MIN_EXPOSURE_TRIO
\if FR
Definition du temps d'exposition MINIMUM pour un TRIO.
500 correspond ?la fréquence 2 KHz.
\else
MINIMUM exposure time in microsec for TRIO.
500 correspond to the frequency 2 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_TRIO 500 /* Correspond ?la Freq 2000Hhz */
/*!
\def MCHR_MAX_EXPOSURE_RUBY
\if FR
Definition du temps d'exposition MAXIMUM pour un RUBY
\else
MAXIMUM exposure time in microsec for RUBY.
\endif
*/
#define MCHR_MAX_EXPOSURE_RUBY 250000L /* Correspond ?la Freq 100Hhz */
/*!
\def MCHR_MIN_EXPOSURE_CHR_450
\if FR
Definition du temps d'exposition MINIMUM pour un RUBY.
500 correspond ?la fréquence 2 KHz.
\else
MINIMUM exposure time in microsec for RUBY.
500 correspond to the frequency 2 kHz.
\endif
*/
#define MCHR_MIN_EXPOSURE_RUBY 500 /* Correspond ?la Freq 2Khz */
/*!
\def MCHR_NO_PEN
\if FR
Identificateur d'absence de crayon configure
\else
Full scale value attributed to undefined calibration table
\endif
*/
#define MCHR_NO_PEN 999
/*!
\def MCHR_NOT_FREQ_MIN
\if FR
Identificateur d'absence de Frequence min du Dark
\else
Dark min frequency value attributed to undefined Dark
\endif
*/
#define MCHR_NOT_FREQ_MIN 999
/*!
\def enum MCHR_STATUS
\if FR
Definition des etats de l'objet Capteur
\else
Definition of possible states of the CHR
\endif
*/
enum MCHR_STATUS
{
/*! \brief not initialized */
MCHR_STATUS_NOT_INITIALIZED=1, //not initialized
/*! \brief initialized */
MCHR_STATUS_INITIALIZED, //initialized
/*! \brief initialization failed */
MCHR_STATUS_INIT_FAILED, //initialization failed
/*! \brief waiting for command */
MCHR_STATUS_WAIT_COMMAND, //waiting for command
/*! \brief not initialized */
MCHR_STATUS_COMMAND_IN_PROGRESS, //command processing in progress
/*! \brief finite acquisition in progress */
MCHR_STATUS_ACQUISITION_IN_PROGRESS, //finite acquisition in progress
/*! \brief finite acquisition in progress */
MCHR_STATUS_CONTINUOUS_ACQ_IN_PROGRESS, //continuous acquisition in progress
/*! \brief Acquisition-abort in progress */
MCHR_STATUS_STOP_ACQ_IN_PROGRESS, //Acquisition-abort in progress
/*! \brief communication failed */
MCHR_STATUS_COM_FAILED, //communication failed
/*! \brief Sensor already in use by another instance */
MCHR_STATUS_ALREADY_IN_USE, // Sensor already in use by another instance
};
/*!
\def enum enSpectrumAcquisitionResult
\if FR
Definition des etats de l'objet de l'acquisition du spectre
\else
Definition of possible states of the spectrum acquisition
\endif
*/
enum enSpectrumAcquisitionResult
{
/*! \brief data present */
SPECTRUM_ACQUISITION_DATA_READY,
/*! \brief no data present */
SPECTRUM_ACQUISITION_BUFFER_EMPTY,
/*! \brief error */
SPECTRUM_ACQUISITION_ERROR,
/*! \brief timeout */
SPECTRUM_ACQUISITION_TIMEOUT,
};
// Other declarations
#define MAX_NAME_LENGTH 128
#if defined(_cplusplus) || defined(__cplusplus)
}
#endif /* _cplusplus */
#endif
@@ -0,0 +1,754 @@
/*************************************************************************/
/* STIL * Software Departement */
/*----------------------------------------------------------------------*/
/* */
/* MchrError.h */
/* */
/*----------------------------------------------------------------------*/
/* Project .................................. CHR DLL */
/* Reference documents "Specification DLL CHR-150"*/
/* Programming Language ................. Visual C++ v6.0 */
/* Starting date ................... 16/01/2003 */
/* Date of last update ............. */
/* Author(s)................................. DMO */
/* Required Files .........................none */
/* Required hardware .................... PC Pentium 350 Mhz */
/* Prefix ........... MCHR_ */
/*----------------------------------------------------------------------*/
/* This HEADER file defines the errors returned by the */
/* "MCHR_GetLastError" function and other DLL functions */
/* */
/* */
/*----------------------------------------------------------------------*/
/* V? | Date |AUTHOR| COMMENTS */
/*-------+---------- +--------------------------------------------------*/
/* 01 | 16 Janu 03| DMO | Initial version */
/* 02 | 18 Nov 05| DMO | Ethernet, XE, Downloads */
/*----------------------------------------------------------------------*/
#ifndef DEFINEERROR_H
#define DEFINEERROR_H
#if defined(_cplusplus) || defined(__cplusplus)
extern "C" {
#endif /* _cplusplus */
/*
ERREURS RETOURNEES PAR LES FONCTIONS DE LA DLL
INTERPRETATION OF ERRORS RETURNED BY THE DLL FUNCTIONS
*/
/*!
\def MCHR_ERROR
\if FR
La fonction est sortie en erreur, utilisez \link MCHR_GetLastError MCHR_GetLastError \endlink pour en connaitre son origine
\else
The function is in error, call \link MCHR_GetLastError MCHR_GetLastError \endlink to know the origin of the error
\endif
*/
#define MCHR_ERROR 0
/*!
\def MCHR_ERROR_NONE
\if FR
Pas d'erreur, la fonction s'est correctement exécutée
\else
No ERROR, the function is OK.
\endif
*/
#define MCHR_ERROR_NONE 1
/*!
\def MCHR_ERROR_CODE
\if FR
Début du codage des types d'erreur.
\else
Starting of ERROR CODE
\endif
*/
#define MCHR_ERROR_CODE 0xf000
/*!
\def MCHR_ERROR_NOT_CONNECTED
\if FR
Problème de communication avec le CHR
\else
Error encountered when trying to communicate with the CHR
\endif
*/
#define MCHR_ERROR_NOT_CONNECTED (MCHR_ERROR_CODE + 0x01)
/*!
\def MCHR_ERROR_SERIAL_PORT
\if FR
La fonction a rencontre un problème pour initialiser le port serie (IdSerialPort > 0) specifie.
\else
Error encountered when trying to initialize the specified COM PORT (IdSerialPort > 0)
\endif
*/
#define MCHR_ERROR_SERIAL_PORT (MCHR_ERROR_CODE + 0x03)
/*!
\def MCHR_ERROR_READ_CONFIG_FILE
\if FR
Un problème est survenu lors de la lecture du fichier de configuration specifie.
\else
Error encountered when trying to read the specified confoguration file
\endif
*/
#define MCHR_ERROR_READ_CONFIG_FILE (MCHR_ERROR_CODE + 0x04)
/*!
\def MCHR_ERROR_WRITE_CONFIG_FILE
\if FR
Un problème est survenu lors de l'ecriture du fichier de configuration specifie.
\else
Error encountered when trying to write the specified configuration file
\endif
*/
#define MCHR_ERROR_WRITE_CONFIG_FILE (MCHR_ERROR_CODE + 0x05)
/*!
\def MCHR_ERROR_RECEIVE_CONFIG_CHR
\if FR
Un problème est survenu lors de la recuperation de la configuration du CHR.
\else
Error encountered when trying to get the CHR configuration
\endif
*/
#define MCHR_ERROR_RECEIVE_CONFIG_CHR (MCHR_ERROR_CODE + 0x06)
/*!
\def MCHR_ERROR_SEND_CONFIG_CHR
\if FR
Un problème est survenu lors de la transmission de la configuration du CHR.
\else
Error encountered during CHR configuration transmission
\endif
*/
#define MCHR_ERROR_SEND_CONFIG_CHR (MCHR_ERROR_CODE + 0x07)
/*!
\def MCHR_ERROR_NAME_ALREADY_EXIST
\if FR
Le nom du CHR recherche existe dej?dans la liste des CHR initialises.
\else
The name of the specified CHR exist already in the list of initialized CHR
\endif
*/
#define MCHR_ERROR_NAME_ALREADY_EXIST (MCHR_ERROR_CODE + 0x08)
/*!
\def MCHR_ERROR_ADD_SENSOR
\if FR
Il y a une erreur lors de l'ajout du capteur.
\else
Error while adding a new CHR
\endif
*/
#define MCHR_ERROR_ADD_SENSOR (MCHR_ERROR_CODE + 0x09)
/*!
\def MCHR_ERROR_UNKNOWN_SENSOR
\if FR
Le CHR n'existe pas dans la liste des CHR initialises.
\else
The specified CHR does not exist in the list of initialized CHR
\endif
*/
#define MCHR_ERROR_UNKNOWN_SENSOR (MCHR_ERROR_CODE + 0x0a)
/*!
\def MCHR_ERROR_NO_SENSOR_CONNECTED
\if FR
Pas de capteur CHR connecte.
\else
No CHR is currently connected
\endif
*/
#define MCHR_ERROR_NO_SENSOR_CONNECTED (MCHR_ERROR_CODE + 0x0b)
/*!
\def MCHR_ERROR_PARAM_NOT_VALID
\if FR
Le paramètre de la fonction demandee n'est pas valide.
\else
Invalid argument for the required function
\endif
*/
#define MCHR_ERROR_PARAM_NOT_VALID (MCHR_ERROR_CODE + 0x0c)
/*!
\def MCHR_ERROR_DIALOG_CHR
\if FR
Une erreur de dialogue est apparue lors d'un echange avec le CHR.
\else
Dialog error encountered while communicationg with the CHR
\endif
*/
#define MCHR_ERROR_DIALOG_CHR (MCHR_ERROR_CODE + 0x0d)
/*!
\def MCHR_ERROR_START_RECEP_THREAD
\if FR
Une erreur s'est produite lors de l'initialisation du thread de reception.
\else
Error encountered while initializing the Reception Thread
\endif
*/
#define MCHR_ERROR_START_RECEP_THREAD (MCHR_ERROR_CODE + 0x0e)
/*!
\def MCHR_ERROR_NOTHING_TO_ABORT
\if FR
S'il n'y a aucune commande ?arrêter.
\else
No command is being executed while "Abort" command is received
\endif
*/
#define MCHR_ERROR_NOTHING_TO_ABORT (MCHR_ERROR_CODE + 0x0f)
/*!
\def MCHR_ERROR_ABORT_COMMAND
\if FR
Si impossible d'arrêter une commande.
\else
Abort command failed
\endif
*/
#define MCHR_ERROR_ABORT_COMMAND (MCHR_ERROR_CODE + 0x10)
/*!
\def MCHR_ERROR_DLL_NOT_ACTIVE
\if FR
Si la DLL n'a pas ete initialisee et activee.
\else
The DLL has not been initialized and activated
\endif
*/
#define MCHR_ERROR_DLL_NOT_ACTIVE (MCHR_ERROR_CODE + 0x11)
/*!
\def MCHR_ERROR_CHR_BUSY
\if FR
Si la DLL est dej?occupee ?traiter une commande.
\else
The DLL is busy executing a previous command
\endif
*/
#define MCHR_ERROR_CHR_BUSY (MCHR_ERROR_CODE + 0x12)
/*!
\def MCHR_ERROR_SCANRATE_TOO_HIGH
\if FR
La Frequence de mesure est trop elevee pour transmettre all required data.
\else
The acquisition rate is too high, impossible to transmit all requested data at this rate
\endif
*/
#define MCHR_ERROR_SCANRATE_TOO_HIGH (MCHR_ERROR_CODE + 0x13)
/*!
\def MCHR_ERROR_ONLY_CHR450_FUNCTION
\if FR
La fonction demande n'est valide que pour un CHR-450.
\else
The specified function is autorized for CHR 450 only, the current CHR is not a 450
\endif
*/
#define MCHR_ERROR_ONLY_CHR450_FUNCTION (MCHR_ERROR_CODE + 0x14)
/*!
\def MCHR_ERROR_ACQUISTION_STOPPED
\if FR
Erreur de la fonction car il n'y a pas d'acquisition en cours.
\else
No acquisition is currently in progress
\endif
*/
#define MCHR_ERROR_ACQUISITION_STOPPED (MCHR_ERROR_CODE + 0x15)
/*!
\def MCHR_ERROR_INTERNAL_FUNCTION
\if FR
Erreur interne de la fonction.
\else
Unspecified error during function execution
\endif
*/
#define MCHR_ERROR_INTERNAL_FUNCTION (MCHR_ERROR_CODE + 0x16)
/*!
\def MCHR_ERROR_NOT_IN_INTERFEROMETRIC_MODE
\if FR
Erreur de la fonction car le CHR n'est pas en mode interferometrique.
\else
The specified function is autorized on interferometric mode only, the CHR is not in this mode
\endif
*/
#define MCHR_ERROR_NOT_IN_INTERFEROMETRIC_MODE (MCHR_ERROR_CODE + 0x17)
/*!
\def MCHR_ERROR_DARK_NOT_VALID
\if FR
Erreur lors de la commande Fast Dark.
\else
Error during "Fast Dark" command execution
\endif
*/
#define MCHR_ERROR_DARK_NOT_VALID (MCHR_ERROR_CODE + 0x18)
/*!
\def MCHR_ERROR_INTERFEROMETRIC_MODE_NOT_AUTHORIZED
\if FR
Le mode Interferometrique n'est pas autorise sur ce capteur.
\else
The interferometric mode is not authorized with this sensor
\endif
*/
#define MCHR_ERROR_INTERFEROMETRIC_MODE_NOT_AUTHORIZED (MCHR_ERROR_CODE + 0x19)
/*!
\def MCHR_ERROR_NOT_VALID_CHR_CMD
\if FR
La commande envoye sur le capteur n'est pas valide.
\else
The command is not authorized for the current sensor type
\endif
*/
#define MCHR_ERROR_NOT_VALID_CHR_CMD (MCHR_ERROR_CODE + 0x1a)
/*!
\def MCHR_ERROR_READ_CALIBRATION_FILE
\if FR
Un problème est survenu lors de la lecture du fichier de calibration.
\else
Impossible to read calibration file
\endif
*/
#define MCHR_ERROR_READ_CALIBRATION_FILE (MCHR_ERROR_CODE + 0x1b)
/*!
\def MCHR_ERROR_SEND_CALIBRATION_TABLE
\if FR
Un problème est survenu lors de l'envoi de la table de calibration vers le capteur specifie.
\else
Impossible to send the calibration file
\endif
*/
#define MCHR_ERROR_SEND_CALIBRATION_TABLE (MCHR_ERROR_CODE + 0x1c)
/*!
\def MCHR_ERROR_IP_ADDRESS
\if FR
L'adresse IP specifie n'est pas valide.
\else
Illegal IP address
\endif
*/
#define MCHR_ERROR_IP_ADDRESS (MCHR_ERROR_CODE + 0x1d)
/*!
\def MCHR_ERROR_BUFFER_FULL
\if FR
Les buffers de receptions sont plein, Cadence de lecture trop lente.
\else
Reception buffer overflow, reading rate is too slow
\endif
*/
#define MCHR_ERROR_BUFFER_FULL (MCHR_ERROR_CODE + 0x1e)
/*!
\def MCHR_ERROR_TRIGGER_TYPE
\if FR
Le mode de trigger demande n'existe pas.
\else
Unrecognized trigger type
\endif
*/
#define MCHR_ERROR_TRIGGER_TYPE (MCHR_ERROR_CODE + 0x1f)
/*!
\def MCHR_ERROR_READ_FIRMWARE_FILE
\if FR
Erreur de lecture du fichier firmware.
\else
Impossible to read the firmware file
\endif
*/
#define MCHR_ERROR_READ_FIRMWARE_FILE (MCHR_ERROR_CODE + 0x20)
/*!
\def MCHR_ERROR_READ_ADDITIONAL_FILE
\if FR
Erreur de lecture du fichier menu.
\else
Impossible to read the menu file
\endif
*/
#define MCHR_ERROR_READ_ADDITIONAL_FILE (MCHR_ERROR_CODE + 0x21)
/*!
\def MCHR_ERROR_SEND_FIRMWARE_FILE
\if FR
Erreur d'envoi du fichier firmware.
\else
Impossible to send the firmware file
\endif
*/
#define MCHR_ERROR_SEND_FIRMWARE_FILE (MCHR_ERROR_CODE + 0x22)
/*!
\def MCHR_ERROR_SEND_ADDITIONAL_FILE
\if FR
Erreur d'envoi du fichier menu.
\else
Impossible to send the menu file
\endif
*/
#define MCHR_ERROR_SEND_ADDITIONAL_FILE (MCHR_ERROR_CODE + 0x23)
/*!
\def MCHR_ERROR_RUN_FIRMWARE
\if FR
Une erreur est survenue lors de l'execution de la nouvelle version du firmware.
\else
Error while trying to run the new firmware version
\endif
*/
#define MCHR_ERROR_RUN_FIRMWARE (MCHR_ERROR_CODE + 0x24)
/*!
\def MCHR_ERROR_SAVE_FIRMWARE
\if FR
Erreur de sauvegarde du firmware.
\else
Error while trying to save the new firmware version
\endif
*/
#define MCHR_ERROR_SAVE_FIRMWARE (MCHR_ERROR_CODE + 0x25)
/*!
\def MCHR_ERROR_RESTART_CHR
\if FR
Erreur de redemarrage apres sauvegarde du firmware.
\else
Error while trying restart the sensor after saving the new firmware version
\endif
*/
#define MCHR_ERROR_RESTART_CHR (MCHR_ERROR_CODE + 0x26)
/*!
\def MCHR_ERROR_ONLY_CHR150_FUNCTION
\if FR
La fonction demande n'est valide que pour un CHR-150.
\else
The specified function is autorized for CHR 150 only, the current CHR is not a 150
\endif
*/
#define MCHR_ERROR_ONLY_CHR150_FUNCTION (MCHR_ERROR_CODE + 0x27) /* La fonction demande n'est valide que pour un CHR-150 */
/* The specified function is autorized for CHR 150 only, the current CHR is not a 150 */
/*!
\def MCHR_ERROR_ONLY_CCS_FUNCTION
\if FR
La fonction demande n'est valide que pour un CCS.
\else
The specified function is autorized for CCS only, the current CHR is not a 150
\endif
*/
#define MCHR_ERROR_ONLY_CCS_FUNCTION (MCHR_ERROR_CODE + 0x28)
/*!
\def MCHR_ERROR_NO_TRANSMITTED_DATA
\if FR
Aucune donnee n'est configuree sur la sortie numerique utilisee.
\else
No data item is configured to be transmitted on current digital output channel
\endif
*/
#define MCHR_ERROR_NO_TRANSMITTED_DATA (MCHR_ERROR_CODE + 0x29)
/*!
\def MCHR_ERROR_ETHERNET_NOT_SUPPORTED
\if FR
La Liaison Ethernet n'est pas supporte sur ce capteur.
\else
The Ethernet link is not supported on this sensor
\endif
*/
#define MCHR_ERROR_ETHERNET_NOT_SUPPORTED (MCHR_ERROR_CODE + 0x2a)
/*!
\def MCHR_ERROR_SEND_SERIAL_NUMBER
\if FR
L'envoi du numero de serie ?echoue.
\else
Failed to send Serial Number
\endif
*/
#define MCHR_ERROR_SEND_SERIAL_NUMBER (MCHR_ERROR_CODE + 0x2b)
/*!
\def MCHR_ERROR_ONLY_ILB_FUNCTION
\if FR
La fonction demande n'est valide que pour un capteur ILB.
\else
The specified function is autorized for an ILB sensor
\endif
*/
#define MCHR_ERROR_ONLY_ILB_FUNCTION (MCHR_ERROR_CODE + 0x2c)
/*!
\def MCHR_ERROR_FUNCTION_NOT_AVAILABLE
\if FR
La fonction demande n'est pas disponible sur le capteur.
\else
The specified function is not available on the device
\endif
*/
#define MCHR_ERROR_FUNCTION_NOT_AVAILABLE (MCHR_ERROR_CODE + 0x2d)
/*!
\def MCHR_ERROR_FREQUENCY_TOO_HIGH
\if FR
La frequence est trop elevee.
\else
Frequency too high
\endif
*/
#define MCHR_ERROR_FREQUENCY_TOO_HIGH (MCHR_ERROR_CODE + 0x2e)
/*!
\def MCHR_ERROR_FREQUENCY_TOO_LOW
\if FR
La frequence est trop basse.
\else
Frequency too low
\endif
*/
#define MCHR_ERROR_FREQUENCY_TOO_LOW (MCHR_ERROR_CODE + 0x2f)
/*!
\def MCHR_ERROR_WHITE_TOO_HIGH
\if FR
Erreur lors de la commande d'acquisition du Blanc : le signal est trop haut.
\else
Error during "White Acquisition" command execution : the signal is too High
\endif
*/
#define MCHR_ERROR_WHITE_TOO_HIGH (MCHR_ERROR_CODE + 0x3a)
/*!
\def MCHR_ERROR_WHITE_TOO_LOW
\if FR
Erreur lors de la commande d'acquisition du Blanc : le signal est trop bas.
\else
Error during "White Acquisition" command execution : the signal is too low
\endif
*/
#define MCHR_ERROR_WHITE_TOO_LOW (MCHR_ERROR_CODE + 0x3b)
/*!
\def MCHR_ERROR_WHITE_SATURED
\if FR
Erreur lors de la commande d'acquisition du Blanc : le signal est sature.
\else
Error during "White Acquisition" command execution : the signal is satured
\endif
*/
#define MCHR_ERROR_WHITE_SATURED (MCHR_ERROR_CODE + 0x3c)
/*!
\def MCHR_ERROR_ONLY_ETHERNET_CONNECTION
\if FR
La fonction demande n'est valide que pour une connection Ethernet.
\else
The function is avalaible only for an ethernet connection
\endif
*/
#define MCHR_ERROR_ONLY_ETHERNET_CONNECTION (MCHR_ERROR_CODE + 0x3d)
/*!
\def MCHR_ERROR_ILB_PARAM
\if FR
Probleme dans l'envoi / reception de parametres ILB.
\else
Error during setting / getting ILB parameters
\endif
*/
#define MCHR_ERROR_ILB_PARAM (MCHR_ERROR_CODE + 0x3e)
/*!
\def MCHR_ERROR_NOT_CHR150_FUNCTION
\if FR
La fonction demande n'est pas valide pour un CHR-150.
\else
The specified function is unautorized for CHR 150
\endif
*/
#define MCHR_ERROR_NOT_CHR150_FUNCTION (MCHR_ERROR_CODE + 0x3f) /* La fonction demande n'est valide que pour un CHR-150 */
/*!
\def MCHR_ERROR_TO_START_WHITE_REF_ACQ
\if FR
Erreur de lancement de l'acquisition du whiteRef
\else
Failure to start the acquisition of WhiteRef
\endif
*/
#define MCHR_ERROR_TO_START_WHITE_REF_ACQ (MCHR_ERROR_CODE + 0x40) /* La fonction demande n'est valide que pour un CHR-150 */
/*!
\def MCHR_ERROR_TO_STOP_WHITE_REF_ACQ
\if FR
Erreur d'arrêt de l'acquisition du whiteRef
\else
Failure to stop the acquisition of WhiteRef
\endif
*/
#define MCHR_ERROR_TO_STOP_WHITE_REF_ACQ (MCHR_ERROR_CODE + 0x41) /* La fonction demande n'est valide que pour un CHR-150 */
/*!
\def MCHR_ERROR_TO_STOP_WHITE_REF_ACQ
\if FR
Erreur Autorisation d'accès
\else
Failure Permission access
\endif
*/
#define MCHR_ERROR_UNAUTHORIZED_ACCESS (MCHR_ERROR_CODE + 0x42) /* Permission access */
/*!
\def MCHR_ERROR_FREQ_SMALLER_THAN_MIN_DARK_FREQ
\if FR
Erreur fréquence du scanrate en dessous de la fréquence du dark minimum
\else
Failure the resquested frequency is smaller then the min dark frequency
\endif
*/
#define MCHR_ERROR_FREQ_SMALLER_THAN_MIN_DARK_FREQ (MCHR_ERROR_CODE + 0x43)
/*!
\def MCHR_ERROR_SENSOR_ALREADY_IN_USE
\if FR
Le capteur est déj?utilis?par une autre instance ou processus.
\else
The sensor is already in use with another instance or process.
\endif
*/
#define MCHR_ERROR_SENSOR_ALREADY_IN_USE (MCHR_ERROR_CODE + 0x44)
/*!
\def MCHR_ERROR_UNKNOWN
\if FR
Erreur inconue.
\else
Unknown error
\endif
*/
#define MCHR_ERROR_UNKNOWN (MCHR_ERROR_CODE + 0x0100)
/* ------------------------------------------------------------------- */
#if defined(_cplusplus) || defined(__cplusplus)
}
#endif /* _cplusplus */
#endif
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,281 @@
/*********************************************************
** White light interferometry functions **
*********************************************************/
/*!
\fn short MCHR_GetSAWLINumberOfLayer(MCHR_ID SensorID, long *piNbLayers)
\if FR
\brief Fonction permettant de recuperer le nombre de couches mesurable en mode ILB (SAWLI).
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Function getting number of layers measurable in SAWLI mode.
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [out] long *piNbLayers : Nombre de couche mesurable.
\return short : un code d'erreur MCHR_ERROR.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [out] long *piNbLayers : Number of SAWLI measurable layers.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
*/
DLL_CHR_API short MCHR_GetSAWLINumberOfLayer(MCHR_ID SensorID, long *piNbLayers);
/*!
\fn short MCHR_SetSAWLINumberOfLayer(MCHR_ID SensorID, long iNbLayers)
\if FR
\brief Fonction permettant de paramétrer le nombre de couches mesurable en mode ILB (SAWLI).
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Function setting number of layers measurable in SAWLI mode.
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long iNbLayers : Nombre de couche mesurable.
\return short : un code d'erreur MCHR_ERROR.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long piNbLayers : Number of SAWLI measurable layers.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
*/
DLL_CHR_API short MCHR_SetSAWLINumberOfLayer(MCHR_ID SensorID, long iNbLayers);
/*!
\fn short MCHR_GetSAWLISmoothing(MCHR_ID SensorID, long *piSmoothing)
\if FR
\brief Fonction permettant de recuperer le lissage du signal en mode ILB (SAWLI).
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Function getting smoothing value in SAWLI mode.
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [long] MCHR_ID SensorID : ID du coffret.
\param [out] long *iSmoothing : Largeur du lissage.
\return short : un code d'erreur MCHR_ERROR.
\else
\param [long] MCHR_ID SensorID : ID of the device.
\param [out] long *iSmoothing : Smoothing width.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
*/
DLL_CHR_API short MCHR_GetSAWLISmoothing(MCHR_ID SensorID, long *piSmoothing);
/*!
\fn short MCHR_SetSAWLISmoothing(MCHR_ID SensorID, long iSmoothing)
\if FR
\brief Fonction permettant de parametrer le lissage du signal en mode ILB (SAWLI).
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Function setting smoothing value in SAWLI mode.
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID : ID du coffret.
\param [in] long iSmoothing : Largeur du lissage.
\return short : un code d'erreur MCHR_ERROR.
\else
\param [in] MCHR_ID SensorID : ID of the device.
\param [in] long iSmoothing : Smoothing width.
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
\endif
*/
DLL_CHR_API short MCHR_SetSAWLISmoothing(MCHR_ID SensorID, long iSmoothing);
//These 4 functions helps you define the measurement range
// en micron
/*!
\fn short MCHR_GetSAWLIMinThickness(MCHR_ID SensorId, long *piThickness)
\if FR
\brief Get the minimal value (threshold) of thickness to detect
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Get the minimal value (threshold) of thickness to detect
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] long piThickness: pointer to the Min thickness threshold.
\else
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] long piThickness: pointer to the Min thickness threshold.
\endif
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
*/
DLL_CHR_API short MCHR_GetSAWLIMinThickness(MCHR_ID SensorID,long *piThickness);
/*!
\fn short MCHR_SetSAWLIMinThickness(MCHR_ID SensorId, long iThickness)
\if FR
\brief Set the minimal value (threshold) of thickness to detect
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Set the minimal value (threshold) of thickness to detect
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] long iThickness: Min thickness threshold, in µm.
\else
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] long iThickness: Min thickness threshold, in µm.
\endif
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
*/
DLL_CHR_API short MCHR_SetSAWLIMinThickness(MCHR_ID SensorID, long iThickness);
/*!
\fn short MCHR_GetSAWLIMaxThickness(MCHR_ID SensorId, long *piThickness)
\if FR
\brief Get the maximal value (threshold) of thickness to detect
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Get the maximal value (threshold) of thickness to detect
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param MCHR_ID SensorID: Sensor Identifier
\param long *piThickness: pointer to the Max thickness threshold.
\else
\param MCHR_ID SensorID: Sensor Identifier
\param long *piThickness: pointer to the Max thickness threshold.
\endif
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
*/
DLL_CHR_API short MCHR_GetSAWLIMaxThickness(MCHR_ID SensorID, long *piThickness);
/*!
\fn short MCHR_SetSAWLIMaxThickness(MCHR_ID SensorId, long iThickness)
\if FR
\brief Set the maximal value (threshold) of thickness to detect
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Set the maximal value (threshold) of thickness to detect
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] long iThickness: Max thickness threshold, in µm.
\else
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] long iThickness: Max thickness threshold, in µm.
\endif
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
*/
DLL_CHR_API short MCHR_SetSAWLIMaxThickness(MCHR_ID SensorID, long iThickness);
//Indices de refraction en mode ILB mode
//Refractive index used in the SAWLI mode
/*!
\fn short MCHR_GetSAWLIRefractiveIndex(MCHR_ID SensorID,double *dRefractiveIndex);
\if FR
\brief Obtient l'indidice de refraction en mode interferometrique.
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Get the refractive index in Interferometric mode.
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] double *dRefractiveIndex : Indice de refraction
\else
\param [in] MCHR_ID SensorID: Sensor Identifier
\param [in] double *dRefractiveIndex : Index of refractive
\endif
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
*/
DLL_CHR_API short MCHR_GetSAWLIRefractiveIndex(MCHR_ID SensorID,double *dRefractiveIndex);
/*!
\fn short MCHR_SetSAWLIRefractiveIndex(MCHR_ID SensorID,double dRefractiveIndex);
\if FR
\brief Configure l'indidice de refraction en mode interferometrique.
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Set the refractive index in Interferometric mode.
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param SensorID: Sensor Identifier
\param dRefractiveIndex : Indice de refraction
\else
\param SensorID: Sensor Identifier
\param dRefractiveIndex : Index of refractive
\endif
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
*/
DLL_CHR_API short MCHR_SetSAWLIRefractiveIndex(MCHR_ID SensorID,double dRefractiveIndex);
/*
Fonction d'acquisition d'une sequence de points en mode interferometrique avec capteur MTS-DUO
Acquisition function for the Interferometric mode
voir le .cpp correspondant pour plus d'info lors de la redaction de la doc
*/
/*!
\fn short MCHR_GetInterferometricThicknessSAWLI ( MCHR_ID SensorID, MCHR_tyAcqParam Parameters,
PFLOAT *pArrayThickness1, PFLOAT *pArrayThickness2, PFLOAT *pArrayThickness3,
PFLOAT *pArrayQuality1, PFLOAT *pArrayQuality2, PFLOAT *pArrayQuality3,
PFLOAT *pArrayIntensity,PFLOAT *pNbThickness,PFLOAT *pCounter,PFLOAT *pState);
\if FR
\brief Acquisition function for the Specral Interferometric (SAWLI) Thickness mode.<br>
\brief Note: in Distance mode set the number of layer to 1, and the refractive index to 1.0.<br>
\brief The Distance Data may be comuted from the air gap thickness using the following raelation:<br>
\brief Distance = 160µm ?Thickness1.
\warning Seulement pour les coffrets ILB (SAWLI).
\else
\brief Acquisition function for the Specral Interferometric (SAWLI) Thickness mode.<br>
\brief Note: in Distance mode set the number of layer to 1, and the refractive index to 1.0.<br>
\brief The Distance Data may be comuted from the air gap thickness using the following raelation:<br>
\brief Distance = 160µm ?Thickness1.
\brief This function is destined to STIL-DUO in the interferometric mode
\warning Only for SAWLI Controllers.
\endif
\details
\if FR
\param SensorID: Sensor Identifier
\param iThickness: Max thickness threshold, in µm.
\else
\param SensorID : Sensor Identifier
\param pThickness1 : a pointer to the Thickness1 data buffers.
\param pThickness2 : a pointer to the Thickness2 data buffers.
\param pThickness3 : a pointer to the Thickness3 data buffers
\param pQuality1 : a pointer to the Quality1 data buffers
\param pQuality2 : a pointer to the Quality2 data buffers
\param pQuality3 : a pointer to the Quality3 data buffers
\param pIntensity : a pointer to the Intensity data buffers
\param pNbThickness : a pointer to the Number Of Thicknesses data Buffers
\param pCounter : a pointer to the Counter data Buffers
\param pState : a pointer to the State Data buffer
\endif
\if FR
\par Capteurs Compatibles : STIL DUO en mode de mesure SAWLI interfermotric.
\else
\par Compatibles Sensors : STIL DUO in the SAWLI interfermotric measuring modes.
\endif
\return short : A \link MCHR_ERROR MCHR_ERROR \endlink code.
*/
DLL_CHR_API short MCHR_GetInterferometricThicknessSAWLI (MCHR_ID SensorID, MCHR_tyAcqParam Parameters,
PFLOAT *pArrayThickness1, PFLOAT *pArrayThickness2, PFLOAT *pArrayThickness3,
PFLOAT *pArrayQuality1, PFLOAT *pArrayQuality2, PFLOAT *pArrayQuality3,
PFLOAT *pArrayIntensity,PFLOAT *pNbThickness,PFLOAT *pCounter,PFLOAT *pState);
@@ -0,0 +1,86 @@
#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:
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);
public:
cAcqEasy(MCHR_ID SensorID);
~cAcqEasy();
//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 //AFX_ACQUISITION_EASY_H_INCLUDED_
@@ -0,0 +1,402 @@
#if !defined(AFX_ACQUISITION_EASY_TYPE_H_INCLUDED_)
#define AFX_ACQUISITION_EASY_TYPE_H_INCLUDED_
#include "afxmt.h"
#define MAX_CHAR 256
//do not change the order of data
#define EVENT_ACQ_EASY_KILL_THREAD 0
#define EVENT_ACQ_EASY_KILL_THREAD_DO 1
#define EVENT_ACQ_EASY_NUMBER 2
//do not change the order of data
#define EVENT_ACQUIRE_N_POINTS 0
#define EVENT_END_BUFFER 1
#define EVENT_END_MEASUREMENT 2
#define EVENT_END_ACQUIRE 3
#define EVENT_STARTING_ACQUISITION 4
#define EVENT_ACQUISITION_NUMBER 5
//do not change the order of data
//for eMCHR_GetThicknessMeasurement
#define ID_BUFFER_THICKNESS_THICKNESS 0
#define ID_BUFFER_THICKNESS_DISTANCE1 1
#define ID_BUFFER_THICKNESS_DISTANCE2 2
#define ID_BUFFER_THICKNESS_INTENSITY1 3
#define ID_BUFFER_THICKNESS_INTENSITY2 4
#define ID_BUFFER_THICKNESS_BARYCENTER1 5
#define ID_BUFFER_THICKNESS_BARYCENTER2 6
#define ID_BUFFER_THICKNESS_STATUS 7
#define ID_BUFFER_THICKNESS_COUNTER 8
#define ID_BUFFER_THICKNESS_MEASUREMENT_MAX 9 //number of max buffers for MCHR_GetThicknessMeasurement
//for eMCHR_GetAltitudeMeasurement
#define ID_BUFFER_ALTITUDE_ALTITUDE 0
#define ID_BUFFER_ALTITUDE_INTENSITY 1
#define ID_BUFFER_ALTITUDE_COUNTER 2
#define ID_BUFFER_ALTITUDE_BARYCENTER 3
#define ID_BUFFER_ALTITUDE_STATUS 4
#define ID_BUFFER_ALTITUDE_MEASUREMENT_MAX 5 //number of max buffers for MCHR_GetAltitudeMeasurement
//for eMCHR_GetDepthMeasurement
#define ID_BUFFER_DEPTH_DEPTH 0
#define ID_BUFFER_DEPTH_INTENSITY 1
#define ID_BUFFER_DEPTH_COUNTER 2
#define ID_BUFFER_DEPTH_BARYCENTER 3
#define ID_BUFFER_DEPTH_STATUS 4
#define ID_BUFFER_DEPTH_MEASUREMENT_MAX 5 //number of max buffers for MCHR_GetDepthMeasurement
//for eMCHR_GetTransmittedDataMeasurement
#define ID_BUFFER_CHR_DISTANCE_DISTANCE 0
#define ID_BUFFER_CHR_DISTANCE_INTENSITY 3
#define ID_BUFFER_CHR_DISTANCE_COUNTER 5
#define ID_BUFFER_CHR_DISTANCE_BARYCENTER 6
#define ID_BUFFER_CHR_DISTANCE_STATUS 7
#define ID_BUFFER_CHR_DISTANCE_MEASUREMENT_MAX 8
#define ID_BUFFER_CHR_THICKNESS_THICKNESS 0
#define ID_BUFFER_CHR_THICKNESS_DISTANCE1 1
#define ID_BUFFER_CHR_THICKNESS_DISTANCE2 2
#define ID_BUFFER_CHR_THICKNESS_STATUS 3
#define ID_BUFFER_CHR_THICKNESS_INTENSITY1 4
#define ID_BUFFER_CHR_THICKNESS_INTENSITY2 5
#define ID_BUFFER_CHR_THICKNESS_BARYCENTER1 6
#define ID_BUFFER_CHR_THICKNESS_BARYCENTER2 7
#define ID_BUFFER_CHR_THICKNESS_MEASUREMENT_MAX 8
#define ID_BUFFER_CCS_DISTANCE_DISTANCE_MSB 0
#define ID_BUFFER_CCS_DISTANCE_DISTANCE_LSB 1
#define ID_BUFFER_CCS_DISTANCE_AUTO_ADAPTATIVE_MODE 2
#define ID_BUFFER_CCS_DISTANCE_INTENSITY 3
#define ID_BUFFER_CCS_DISTANCE_BARYCENTER 6
#define ID_BUFFER_CCS_DISTANCE_STATUS 8
#define ID_BUFFER_CCS_DISTANCE_COUNTER 9
#define ID_BUFFER_CCS_DISTANCE_ENCODER1_MSB 10
#define ID_BUFFER_CCS_DISTANCE_ENCODER1_LSB 11
#define ID_BUFFER_CCS_DISTANCE_ENCODER2_MSB 12
#define ID_BUFFER_CCS_DISTANCE_ENCODER2_LSB 13
#define ID_BUFFER_CCS_DISTANCE_ENCODER3_MSB 14
#define ID_BUFFER_CCS_DISTANCE_ENCODER3_LSB 15
#define ID_BUFFER_CCS_DISTANCE_MEASUREMENT_MAX 16
#define ID_BUFFER_CCS_THICKNESS_THICKNESS 0
#define ID_BUFFER_CCS_THICKNESS_DISTANCE1 1
#define ID_BUFFER_CCS_THICKNESS_DISTANCE2 2
#define ID_BUFFER_CCS_THICKNESS_AUTO_ADAPTATIVE_MODE 3
#define ID_BUFFER_CCS_THICKNESS_INTENSITY1 4
#define ID_BUFFER_CCS_THICKNESS_INTENSITY2 5
#define ID_BUFFER_CCS_THICKNESS_BARYCENTER1 6
#define ID_BUFFER_CCS_THICKNESS_BARYCENTER2 7
#define ID_BUFFER_CCS_THICKNESS_STATUS 8
#define ID_BUFFER_CCS_THICKNESS_COUNTER 9
#define ID_BUFFER_CCS_THICKNESS_ENCODER1_MSB 10
#define ID_BUFFER_CCS_THICKNESS_ENCODER1_LSB 11
#define ID_BUFFER_CCS_THICKNESS_ENCODER2_MSB 12
#define ID_BUFFER_CCS_THICKNESS_ENCODER2_LSB 13
#define ID_BUFFER_CCS_THICKNESS_ENCODER3_MSB 14
#define ID_BUFFER_CCS_THICKNESS_ENCODER3_LSB 15
#define ID_BUFFER_CCS_THICKNESS_MEASUREMENT_MAX 16
#define ID_BUFFER_DUO_DISTANCE_DISTANCE_MSB 0
#define ID_BUFFER_DUO_DISTANCE_DISTANCE_LSB 1
#define ID_BUFFER_DUO_DISTANCE_INTENSITY 3
#define ID_BUFFER_DUO_DISTANCE_COUNTER 5
#define ID_BUFFER_DUO_DISTANCE_BARYCENTER 6
#define ID_BUFFER_DUO_DISTANCE_STATUS 9
#define ID_BUFFER_DUO_DISTANCE_MEASUREMENT_MAX 10
#define ID_BUFFER_DUO_THICKNESS_THICKNESS 0
#define ID_BUFFER_DUO_THICKNESS_DISTANCE1 1
#define ID_BUFFER_DUO_THICKNESS_DISTANCE2 2
#define ID_BUFFER_DUO_THICKNESS_COUNTER 3
#define ID_BUFFER_DUO_THICKNESS_INTENSITY1 4
#define ID_BUFFER_DUO_THICKNESS_INTENSITY2 5
#define ID_BUFFER_DUO_THICKNESS_BARYCENTER1 6
#define ID_BUFFER_DUO_THICKNESS_BARYCENTER2 7
#define ID_BUFFER_DUO_THICKNESS_STATUS 9
#define ID_BUFFER_DUO_THICKNESS_MEASUREMENT_MAX 10
#define ID_BUFFER_DUO_SAWLI_DISTANCE_DISTANCE_MSB 0
#define ID_BUFFER_DUO_SAWLI_DISTANCE_DISTANCE_LSB 1
#define ID_BUFFER_DUO_SAWLI_DISTANCE_QUALITY 6
#define ID_BUFFER_DUO_SAWLI_DISTANCE_INTENSITY 9
#define ID_BUFFER_DUO_SAWLI_DISTANCE_COUNTER 11
#define ID_BUFFER_DUO_SAWLI_DISTANCE_STATUS 15
#define ID_BUFFER_DUO_SAWLI_DISTANCE_MEASUREMENT_MAX 16
#define ID_BUFFER_DUO_SAWLI_THICKNESS_THICKNESS1_MSB 0
#define ID_BUFFER_DUO_SAWLI_THICKNESS_THICKNESS1_LSB 1
#define ID_BUFFER_DUO_SAWLI_THICKNESS_THICKNESS2_MSB 2
#define ID_BUFFER_DUO_SAWLI_THICKNESS_THICKNESS2_LSB 3
#define ID_BUFFER_DUO_SAWLI_THICKNESS_THICKNESS3_MSB 4
#define ID_BUFFER_DUO_SAWLI_THICKNESS_THICKNESS3_LSB 5
#define ID_BUFFER_DUO_SAWLI_THICKNESS_QUALITY1 6
#define ID_BUFFER_DUO_SAWLI_THICKNESS_QUALITY2 7
#define ID_BUFFER_DUO_SAWLI_THICKNESS_QUALITY3 8
#define ID_BUFFER_DUO_SAWLI_THICKNESS_INTENSITY 9
#define ID_BUFFER_DUO_SAWLI_THICKNESS_NB_THICKNESS 10
#define ID_BUFFER_DUO_SAWLI_THICKNESS_COUNTER 11
#define ID_BUFFER_DUO_SAWLI_THICKNESS_STATUS 15
#define ID_BUFFER_DUO_SAWLI_THICKNESS_MEASUREMENT_MAX 16
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_THICKNESS1 0
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_THICKNESS2 1
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_THICKNESS3 2
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_QUALITY1 4
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_QUALITY2 5
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_QUALITY3 6
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_INTENSITY 7
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_THICKNESS 8
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_COUNTER 9
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_STATUS 10
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_SAWLI_MEASUREMENT_MAX 11
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_THICKNESS1 0
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_THICKNESS2 1
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_THICKNESS3 2
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_QUALITY1 3
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_QUALITY2 4
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_QUALITY3 5
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_INTENSITY 6
#define ID_BUFFER_INTERFEROMETRIC_THICKNESS_MEASUREMENT_MAX 7
//for (MCHR_SetEncoderBuffer)
#define ID_BUFFER_ENCODER_1 0
#define ID_BUFFER_ENCODER_2 1
#define ID_BUFFER_ENCODER_3 2
#define ID_BUFFER_ENCODER_MAX 3 //number of total buffers for each encoder
#define ID_BUFFER_MAX 16 //number of total buffers for each acquisition function
#define MAX_BUFFER_NUMBER 5000 //number of max buffer number
#define STATUS_NO_ERROR 0
#define STATUS_TIMEOUT_ERROR 1
#define STATUS_PARAM_ERROR 2
#define STATUS_ACQ_ERROR 3
#define STATUS_EVENT_ERROR 4
#define STATUS_NO_DATA 5
#define STATUS_MCHR_FUNCTION 6
enum eAcqEasyFunc{eMCHR_GetThicknessMeasurement, eMCHR_GetAltitudeMeasurement, eMCHR_GetDepthMeasurement, eMCHR_GetTransmittedDataMeasurement, eMCHR_GetInterferometricThickness, eMCHR_GetInterferometricThicknessSAWLI};
typedef struct
{
bool Thickness; //Enabled the acquisition Thickness
bool Distance1; //Enabled the acquisition Distance 1
bool Distance2; //Enabled the acquisition Distance 2
bool Intensity1; //Enabled the acquisition Intensity 1
bool Intensity2; //Enabled the acquisition Intensity 2
bool BaryCenter1; //Enabled the acquisition BaryCenter 1
bool BaryCenter2; //Enabled the acquisition BaryCenter 2
bool Status; //Enabled the acquisition Status
bool Counter; //Enabled the acquisition Counter
} sEnableBufferThickness;
typedef struct
{
bool Altitude; //Enabled the acquisition Altitude
bool Intensity; //Enabled the acquisition Intensity
bool Counter; //Enabled the acquisition Counter
bool BaryCenter; //Enabled the acquisition BaryCenter
bool Status; //Enabled the acquisition Status
} sEnableBufferAltitude;
typedef struct
{
bool Depth; //Enabled the acquisition Depth
bool Intensity; //Enabled the acquisition Intensity
bool Counter; //Enabled the acquisition Counter
bool BaryCenter; //Enabled the acquisition BaryCenter
bool Status; //Enabled the acquisition Status
} sEnableBufferDepth;
typedef struct
{
bool Distance; //Enabled the acquisition Distance
bool Intensity; //Enabled the acquisition Intensity
bool Counter; //Enabled the acquisition Counter
bool BaryCenter; //Enabled the acquisition BaryCenter
bool Status; //Enabled the acquisition Status
} sChrDistance;
typedef struct
{
bool Thickness; //Enabled the acquisition Thickness
bool Distance1; //Enabled the acquisition Distance1
bool Distance2; //Enabled the acquisition Distance2
bool Status; //Enabled the acquisition Status
bool Intensity1; //Enabled the acquisition Intensity1
bool Intensity2; //Enabled the acquisition Intensity2
bool BaryCenter1; //Enabled the acquisition Barycenter1
bool BaryCenter2; //Enabled the acquisition Barycenter2
} sChrThickness;
typedef struct
{
bool Distance; //Enabled the acquisition Distance
bool AutoAdaptativeModeData; //Enabled the acquisition AutoAdaptativeModeData
bool Intensity; //Enabled the acquisition Intensity
bool BaryCenter; //Enabled the acquisition Barycenter
bool Status; //Enabled the acquisition Status
bool Counter; //Enabled the acquisition Counter
bool Encoder1; //Enabled the acquisition Encoder1
bool Encoder2; //Enabled the acquisition Encoder2
bool Encoder3; //Enabled the acquisition Encoder3
} sCcsDistance;
typedef struct
{
bool Thickness; //Enabled the acquisition Thickness
bool Distance1; //Enabled the acquisition Distance1
bool Distance2; //Enabled the acquisition Distance2
bool AutoAdaptativeModeData; //Enabled the acquisition AutoAdaptativeModeData
bool Intensity1; //Enabled the acquisition Intensity1
bool Intensity2; //Enabled the acquisition Intensity2
bool BaryCenter1; //Enabled the acquisition Barycenter1
bool BaryCenter2; //Enabled the acquisition Barycenter2
bool Status; //Enabled the acquisition Status
bool Counter; //Enabled the acquisition Counter
bool Encoder1; //Enabled the acquisition Encoder1
bool Encoder2; //Enabled the acquisition Encoder2
bool Encoder3; //Enabled the acquisition Encoder3
} sCcsThickness;
typedef struct
{
bool Distance; //Enabled the acquisition Distance
bool Intensity; //Enabled the acquisition Intensity
bool Counter; //Enabled the acquisition Counter
bool BaryCenter; //Enabled the acquisition Barycenter
bool Status; //Enabled the acquisition Status
} sDuoDistance;
typedef struct
{
bool Thickness; //Enabled the acquisition Thickness
bool Distance1; //Enabled the acquisition Distance1
bool Distance2; //Enabled the acquisition Distance2
bool Counter; //Enabled the acquisition Counter
bool Intensity1; //Enabled the acquisition Intensity1
bool Intensity2; //Enabled the acquisition Intensity2
bool BaryCenter1; //Enabled the acquisition Barycenter1
bool BaryCenter2; //Enabled the acquisition Barycenter2
bool Status; //Enabled the acquisition Status
} sDuoThickness;
typedef struct
{
bool Distance; //Enabled the acquisition Distance
bool Quality; //Enabled the acquisition Quality
bool Intensity; //Enabled the acquisition Intensity
bool Counter; //Enabled the acquisition Counter
bool Status; //Enabled the acquisition Status
} sDuoSawliDistance;
typedef struct
{
bool Thickness1; //Enabled the acquisition Thickness1
bool Thickness2; //Enabled the acquisition Thickness2
bool Thickness3; //Enabled the acquisition Thickness3
bool Quality1; //Enabled the acquisition Quality1
bool Quality2; //Enabled the acquisition Quality2
bool Quality3; //Enabled the acquisition Quality3
bool Intensity; //Enabled the acquisition Intensity
bool NbThickness; //Enabled the acquisition NbThickness
bool Counter; //Enabled the acquisition Counter
bool Status; //Enabled the acquisition Status
} sDuoSawliThickness;
typedef struct
{
bool Thickness1;
bool Thickness2;
bool Thickness3;
bool Quality1;
bool Quality2;
bool Quality3;
bool Intensity;
} sEnableBufferInterferometricThickness;
typedef struct
{
bool Thickness1;
bool Thickness2;
bool Thickness3;
bool Quality1;
bool Quality2;
bool Quality3;
bool Intensity;
bool Thickness;
bool Status;
bool Counter;
} sEnableBufferInterferometricThicknessSAWLI;
typedef struct
{
sChrDistance ChrDistance; //Enabled the acquisition ChrDistance
sChrThickness ChrThickness; //Enabled the acquisition ChrThickness
sCcsDistance CcsDistance; //Enabled the acquisition CcsDistance
sCcsThickness CcsThickness; //Enabled the acquisition CcsThickness
sDuoDistance DuoDistance; //Enabled the acquisition DuoDistance
sDuoThickness DuoThickness; //Enabled the acquisition DuoThickness
sDuoSawliDistance DuoSawliDistance; //Enabled the acquisition DuoSawliDistance
sDuoSawliThickness DuoSawliThickness; //Enabled the acquisition DuoSawliThickness
} sEnableBufferTransmittedData;
typedef struct
{
bool Encoder1; //Enabled the acquisition Encoder 1
bool Encoder2; //Enabled the acquisition Encoder 2
bool Encoder3; //Enabled the acquisition Encoder 3
} sEnableBufferEncoder;
typedef struct
{
bool Enable; //This parameter activates or deactivates Trigger mode (if Trigger mode is active acquisition will wait for a "Trigger in" signal to start, otherwise acquisition starts immediately).
enTriggerType Type; //This parameter indicates the trigger mode (TRG /TRE/TRN/ TRS)
enLevelEdgeFlag Level; //This parameter is significant only if TriggerFlag is set to “TRUE?and only for CCS and STIL-INITIAL sensors. It indicates which edge of the Sync-In signal pulse is active (for TRG, TRE, and TRS) or which state of this signal is active (for TRN). Authorized values are: MCHR_FALLING_EDGE, MCHR_RISING_EDGE, MCHR_LOW_LEVEL, MCHR_HIGH_LEVEL.
} sTriggerParameters;
typedef enum
{
//if the user wants to wait for an event type "EventEndBuffer"
EV_END_BUFFER = 0,
//if the user wants to wait for an event type "EventAcquire_n_Points"
EV_ACQUIRE_N_POINTS,
//if the user wants to wait for an event type "EventEndMeasurements"
EV_END_MEASUREMENTS,
//if the user wants to wait for an event type "EventEndAcquire"
EV_END_ACQUIRE
} evTypeEvents;
typedef struct
{
eAcqEasyFunc typeAcquisition; //type of function to use
sEnableBufferThickness EnableBufferThickness; //Enabled the acquisition Thickness (eMCHR_GetThicknessMeasurement)
sEnableBufferAltitude EnableBufferAltitude; //Enabled the acquisition Altitude (eMCHR_GetAltitudeMeasurement)
sEnableBufferDepth EnableBufferDepth; //Enabled the acquisition Depth (eMCHR_GetDepthMeasurement)
sEnableBufferTransmittedData EnableBufferTransmittedData; //Enabled the acquisition TransmittedData (eMCHR_GetTransmittedDataMeasurement)
sEnableBufferEncoder EnableBufferEncoder; //Enabled the acquisition Encoder
sEnableBufferInterferometricThickness EnableBufferInterferometricThickness; //Enabled the acquisition InterferometricThickness
sEnableBufferInterferometricThicknessSAWLI EnableBufferInterferometricThicknessSAWLI; //Enabled the acquisition InterferometricThicknessSAWLI
bool EnableBufferAutoAdaptive; //Enabled the acquisition AutoAdaptive
WORD NumberOfBuffers; //The number of buffers per data type for receiving the measured data (Should be greater than or equal to 1).
DWORD BufferLength; //Size of the buffers for receiving the measured data (in words: one word=data for one measured point)
WORD TimeoutAcquisition; //timeout for acquisition delay in ms
DWORD NumberOfPoints; //Number of point to measure. If this parameters is set to 0, measurement will be continuous (i.e. will last forever or until stopped by the user) and no event " EventEndMeasurement" will be generated
DWORD NumberPointsTRE; //Number of points for TRE mode: This parameter indicates the number of points to acquire after each Sync-in pulse.
enChrType SensorType; //Controller types(MCHR_CCS_PRIMA, MCHR_DUO, ...) used only for eMCHR_GetTransmittedDataMeasurement
enMeasureMode SensorMode; //Measuring modes(MCHR_DISTANCE_MODE, MCHR_THICKNESS_MODE, ...) used only for eMCHR_GetTransmittedDataMeasurement
evTypeEvents TypeEvent; //The event that the user wants to wait.
sTriggerParameters Trigger;
unsigned short Frequency;
} sAcqEasyParam;
#endif //AFX_ACQUISITION_EASY_H_INCLUDED_
File diff suppressed because it is too large Load Diff
Binary file not shown.
@@ -0,0 +1,591 @@
#include "StdAfx.h"
#include "Common\inc\cAcqEasy.h"
#include "STIL_CCS_PRIMA_Laser.h"
CSTIL_CCS_PRIMA_Laser::CSTIL_CCS_PRIMA_Laser()
{
m_SensorId = 0;
m_ErrorCode = SPARKSHI_ERROR_NONE;
m_pAcqEasy = NULL;
m_ScanRate = MCHR_SCAN_RATE_CCS_PRIMA_1000HZ;
m_NumberOfPointTRE = 1;
m_evAcquisition = NULL;
m_pThickness = NULL;
m_pDistance1 = NULL;
m_pIntensity1 = NULL;
m_pDistance2 = NULL;
m_pIntensity2 = NULL;
}
CSTIL_CCS_PRIMA_Laser::~CSTIL_CCS_PRIMA_Laser(void)
{
if (m_SensorId != 0)
{
CloseCom ();
}
}
//================================================================
BOOL CSTIL_CCS_PRIMA_Laser::Init(int _Mode)
{
BOOL bStatus(FALSE);
switch(_Mode)
{
case 0:
{
if (OpenCom(MCHR_USB_CONNECTION))
{
double refractiveIndex(0.0);
if (GetRefractiveIndex (refractiveIndex) == SPARKSHI_ERROR)
refractiveIndex = 999.0;
bStatus=TRUE;
}
break;
}
default:
{
break;
}
}
return bStatus;
}
//================================================================
BOOL CSTIL_CCS_PRIMA_Laser::Exit()
{
BOOL bStatus(FALSE);
bStatus=ReleaseAcquisition();
if (m_SensorId != 0)
{
CloseCom ();
}
return bStatus;
}
//================================================================
BOOL CSTIL_CCS_PRIMA_Laser::SetMeasureMode(int _MeasureMode)
{
BOOL bStatus(FALSE);
switch(_MeasureMode)
{
case 0:
{
double refractiveIndex = 1.51;
SetRefractiveIndex (refractiveIndex);
int numberOfPointTRE(1);
numberOfPointTRE=5;
InitAcquisition (eMCHR_GetThicknessMeasurement, MCHR_TYPE_TRE, numberOfPointTRE);
break;
}
default:
{
break;
}
}
return bStatus;
}
//================================================================
BOOL CSTIL_CCS_PRIMA_Laser::GetDistance(double &_dDis1, double &_dDis2)
{
BOOL bStatus(FALSE);
double dbThickness(0.0),dblDistance1(0.0),dblDistance2(0.0),dblIntensity1(0.0),dblIntensity2(0.0);
bool bSoftTrigger(true);
bStatus=GetThicknessValue(dbThickness,dblDistance1,dblDistance2,dblIntensity1,dblIntensity2,bSoftTrigger);
_dDis1=dblDistance1;
_dDis2=dblDistance2;
return bStatus;
}
BOOL CSTIL_CCS_PRIMA_Laser::GetThicknessAllData(double &dbThickness, double &dblDistance1, double &dblDistance2, double &dblIntensity1, double &dblIntensity2)
{
BOOL bStatus(FALSE);
bool bSoftTrigger(true);
bStatus=GetThicknessValue(dbThickness,dblDistance1,dblDistance2,dblIntensity1,dblIntensity2,bSoftTrigger);
return bStatus;
}
BOOL CSTIL_CCS_PRIMA_Laser::InitChrLib()
{
char szVersion[MAX_CHAR];
//DLL initialization
if (!MCHR_Init())
{
TRACE("Error : InitChrLib() : DLL Initialization failed.\n");
return(FALSE);
}
//Reading the version number of the DLL
memset(szVersion, 0, MAX_CHAR);
if (MCHR_GetVersion (szVersion, sizeof(szVersion)) != MCHR_ERROR_NONE)
{
TRACE("Error : InitChrLib() : MCHR_GetVersion\n");
return(FALSE);
}
TRACE1("DLL CHR V%s\n", szVersion);
return(TRUE);
}
BOOL CSTIL_CCS_PRIMA_Laser::OpenCom (enChrConnection connectionType, int comPort, int baudrate)
{
TRACE ("Init Chr Lib\n");
m_ErrorCode = SPARKSHI_ERROR_NONE;
m_nBaudrate = static_cast<WORD>(baudrate);
m_nComIndex = static_cast<WORD>(comPort);
if (InitChrLib())
{
//open sensor
TRACE ("Open Sensor (please wait)\n");
memset(m_szSensorName, 0, sizeof(m_szSensorName));
if (connectionType == MCHR_SERIAL_CONNECTION)
{
m_SensorId = MCHR_OpenSerialChr ("", MCHR_CCS_PRIMA, m_nComIndex, m_nBaudrate, NULL);
}
else
{
m_SensorId = MCHR_OpenUsbChr ("", MCHR_CCS_PRIMA, NULL, NULL, NULL);
}
if (m_SensorId != 0)
{
MCHR_GetSensorName(m_SensorId, m_szSensorName);
TRACE2("%s Sensor Open: SensorID = %d\n", m_szSensorName, m_SensorId);
}
else
{
m_ErrorCode = MCHR_GetLastError(NULL);
TRACE1("Error : OpenSensor() : Sensor Open failed : 0x%X\n", m_ErrorCode);
}
if (m_ErrorCode == SPARKSHI_ERROR_NONE)
{
// Initialize Sensor with custom configuration
if (MCHR_SetScanRate (m_SensorId, m_ScanRate) == MCHR_ERROR)
m_ErrorCode = MCHR_GetLastError(m_SensorId);
else
//set averaging = 1 for acquisition
if(MCHR_SetAveraging (m_SensorId, 1) == MCHR_ERROR)
{
m_ErrorCode = MCHR_GetLastError(m_SensorId);
}
}
}
else
m_ErrorCode = SPARKSHI_ERROR_INIT_DLL_CHR;
if (m_ErrorCode == SPARKSHI_ERROR_NONE)
{
return(TRUE);
}
else
{
return(FALSE);
}
}
//-----------------------------------------------------------------------------------------
BOOL CSTIL_CCS_PRIMA_Laser::CreateEvents(cAcqEasy *pAcquisitionEasy, HANDLE *pAcquisitionEvent)
{
m_ErrorCode = SPARKSHI_ERROR_NONE;
if (pAcquisitionEasy == NULL)
{
TRACE("Error : CreateEvents() : Bad parameter (pAcquisitionEasy)\n");
m_ErrorCode = SPARKSHI_ERROR_CREATE_EVENT;
return(FALSE);
}
*pAcquisitionEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
if (*pAcquisitionEvent != NULL)
{
if (pAcquisitionEasy != NULL)
{
pAcquisitionEasy->SetAcqEvent(*pAcquisitionEvent);
return(TRUE);
}
}
m_ErrorCode = SPARKSHI_ERROR_CREATE_EVENT;
return (FALSE);
}
//-----------------------------------------------------------------------------------------
BOOL CSTIL_CCS_PRIMA_Laser::ReleaseEvents(HANDLE *pAcquisitionEvent)
{
if (*pAcquisitionEvent != NULL)
{
CloseHandle(*pAcquisitionEvent);
*pAcquisitionEvent = NULL;
}
return (TRUE);
}
BOOL CSTIL_CCS_PRIMA_Laser::InitAcquisition (eAcqEasyFunc selectedFunction, enTriggerType selectedTrigger, int numberOfPointTRE)
{
DWORD readLong;
m_ErrorCode = SPARKSHI_ERROR_NONE;
if(m_pAcqEasy)
{
ReleaseAcquisition();
}
//create cAcqEasy class
m_pAcqEasy = new cAcqEasy(m_SensorId);
if (CreateEvents(m_pAcqEasy, &m_evAcquisition))
{
m_NumberOfPointTRE = numberOfPointTRE;
//set acquisition parameters
ZeroMemory(&m_acqEasyParam, sizeof(sAcqEasyParam));
// Set number of points for TRE mode (should be > 0)
m_acqEasyParam.NumberPointsTRE = m_NumberOfPointTRE;
// Set buffer size (should be > 0)
m_acqEasyParam.BufferLength = m_NumberOfPointTRE;
// Set number of acquisition buffers per data (should be > 0)
m_acqEasyParam.NumberOfBuffers = 10;
//set timeout acquisition : should be reasonable time for tigger pulse to arrive. it depends on the application.
//minimum value should be at least = (((averaging / rate) * NUMBER_POINTS_TRE) * 1000) + 20
m_acqEasyParam.TimeoutAcquisition = 1000;
//set controller type
m_acqEasyParam.SensorType = MCHR_CCS_PRIMA;
//event type (here end of each buffer)
m_acqEasyParam.TypeEvent = EV_END_BUFFER;
//trigger settings
m_acqEasyParam.Trigger.Enable = true;
m_acqEasyParam.Trigger.Type = selectedTrigger;
m_acqEasyParam.Trigger.Level = MCHR_RISING_EDGE;
//Set frenquency
m_acqEasyParam.Frequency = static_cast<unsigned short>(m_ScanRate);
if (MCHR_GetFullScaleEx (m_SensorId, &readLong) == MCHR_ERROR_NONE)
m_nCurrentFullScale = readLong;
else
m_nCurrentFullScale = 999;
//set name of acquisition function used
m_acqEasyParam.typeAcquisition = selectedFunction;
switch (selectedFunction)
{
case eMCHR_GetDepthMeasurement :
//set Distance and intensity buffering enabled
m_acqEasyParam.EnableBufferDepth.Depth = true;
m_acqEasyParam.EnableBufferDepth.Intensity = true;
// Allocate data for acquisition buffer
m_pDistance1 = new float[m_NumberOfPointTRE];
m_pIntensity1 = new float[m_NumberOfPointTRE];
break;
case eMCHR_GetThicknessMeasurement :
//set thickness, Distances, intensities buffering enabled
m_acqEasyParam.EnableBufferThickness.Thickness = true;
m_acqEasyParam.EnableBufferThickness.Distance1 = true;
m_acqEasyParam.EnableBufferThickness.Distance2 = true;
m_acqEasyParam.EnableBufferThickness.Intensity1 = true;
m_acqEasyParam.EnableBufferThickness.Intensity2 = true;
// Allocate data for acquisition buffer
m_pThickness = new float[m_NumberOfPointTRE];
m_pDistance1 = new float[m_NumberOfPointTRE];
m_pDistance2 = new float[m_NumberOfPointTRE];
m_pIntensity1 = new float[m_NumberOfPointTRE];
m_pIntensity2 = new float[m_NumberOfPointTRE];
MCHR_InvertDistance (m_SensorId, FALSE);
break;
default :
TRACE1("Error : StartAcquisition() : Function (%d) not implemented!\n", selectedFunction);
return (FALSE);
}
//start acquisition
TRACE ("Start Acquisition\n");
if (!m_pAcqEasy->StartAcquisition(m_acqEasyParam))
{
m_ErrorCode = MCHR_GetLastError(m_SensorId);
TRACE("Error : StartAcquisition() : Error code : 0x%X\n", m_ErrorCode);
return (FALSE);
}
}
else
return (FALSE);
return (TRUE);
}
BOOL CSTIL_CCS_PRIMA_Laser::ReleaseAcquisition ()
{
if (m_pAcqEasy)
{
m_pAcqEasy->StopAcquisition();
ReleaseEvents (&m_evAcquisition);
}
if (m_pThickness)
{
delete [] m_pThickness;
m_pThickness = NULL;
}
if (m_pDistance1)
{
delete [] m_pDistance1;
m_pDistance1 = NULL;
}
if (m_pIntensity1)
{
delete [] m_pIntensity1;
m_pIntensity1 = NULL;
}
if (m_pDistance2)
{
delete [] m_pDistance2;
m_pDistance2 = NULL;
}
if (m_pIntensity2)
{
delete [] m_pIntensity2;
m_pIntensity2 = NULL;
}
if (m_pAcqEasy)
{
delete m_pAcqEasy;
m_pAcqEasy = NULL;
}
return (TRUE);
}
WORD CSTIL_CCS_PRIMA_Laser::GetLastError ()
{
return(m_ErrorCode);
}
BOOL CSTIL_CCS_PRIMA_Laser::CloseCom ()
{
m_ErrorCode = SPARKSHI_ERROR_NONE;
if (m_SensorId != 0)
{
if (MCHR_CloseChr (m_SensorId) == MCHR_ERROR_NONE)
{
m_SensorId = 0;
return (TRUE);
}
else
{
m_ErrorCode = MCHR_GetLastError (m_SensorId);
return(FALSE);
}
MCHR_Release();
}
else
{
m_ErrorCode = SPARKSHI_ERROR_SENSOR_NOT_CONNECTED;
return(FALSE);
}
}
BOOL CSTIL_CCS_PRIMA_Laser::GetDistanceValue(double &dblDistance, double &dblIntensity, bool bSoftTrigger)
{
int DataCount = 0;
m_ErrorCode = SPARKSHI_ERROR_NONE;
if (m_pAcqEasy == NULL)
{
TRACE("Error : Process() : Bad parameter (pAcquisitionEasy)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_evAcquisition == NULL)
{
TRACE("Error : Process() : Bad parameter (AcquisitionEvent)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_pDistance1 == NULL)
{
TRACE("Error : Process() : Bad parameter (Distance1 pointer)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_pIntensity1 == NULL)
{
TRACE("Error : Process() : Bad parameter (m_pIntensity1 pointer)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_NumberOfPointTRE > 0)
{
// Software trigger
if (bSoftTrigger)
{
char cmd[MAX_PATH] = "STR";
char resp[MAX_PATH];
MCHR_SendCommand (m_SensorId, cmd, resp);
//MCHR_StartAcquisition (m_SensorId);
}
if (WaitForSingleObject(m_evAcquisition, m_acqEasyParam.TimeoutAcquisition) == WAIT_OBJECT_0)
{
if (!m_pAcqEasy->GetDepthAcquisitionData(m_pDistance1, m_pIntensity1, NULL, NULL, NULL, &DataCount))
{
TRACE("Error : Process() GetAltitudeAcquisitionData : Error\n");
m_ErrorCode = m_pAcqEasy->GetStatusAcquisition(NULL);
return (SPARKSHI_ERROR);
}
if (DataCount > 0)
{
dblDistance = (double) m_pDistance1[0];
dblIntensity = (double) m_pIntensity1[0];
}
}
else
{
//TRACE("Error : Process() GetAltitudeAcquisitionData : Timeout\n");
m_ErrorCode = SPARKSHI_ERROR_TIMEOUT;
}
}
else
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
if (m_ErrorCode != SPARKSHI_ERROR_NONE)
return(SPARKSHI_ERROR);
else
return (SPARKSHI_ERROR_NONE);
}
BOOL CSTIL_CCS_PRIMA_Laser::GetThicknessValue(double &dblThickness, double &dblDistance1, double &dblDistance2, double &dblIntensity1, double &dblIntensity2, bool bSoftTrigger)
{
int DataCount = 0;
m_ErrorCode = SPARKSHI_ERROR_NONE;
if (m_pAcqEasy == NULL)
{
TRACE("Error : Process() : Bad parameter (pAcquisitionEasy)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_evAcquisition == NULL)
{
TRACE("Error : Process() : Bad parameter (AcquisitionEvent)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_pThickness == NULL)
{
TRACE("Error : Process() : Bad parameter (Thickness pointer)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_pDistance1 == NULL)
{
TRACE("Error : Process() : Bad parameter (Distance1 pointer)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_pIntensity1 == NULL)
{
TRACE("Error : Process() : Bad parameter (m_pIntensity1 pointer)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_pDistance2 == NULL)
{
TRACE("Error : Process() : Bad parameter (Distance2 pointer)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_pIntensity2 == NULL)
{
TRACE("Error : Process() : Bad parameter (m_pIntensity2 pointer)\n");
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
return(SPARKSHI_ERROR);
}
if (m_NumberOfPointTRE > 0)
{
// Software trigger
if (bSoftTrigger)
{
char cmd[MAX_PATH] = "STR";
char resp[MAX_PATH];
MCHR_SendCommand (m_SensorId, cmd, resp);
//MCHR_StartAcquisition (m_SensorId);
}
if (WaitForSingleObject(m_evAcquisition, m_acqEasyParam.TimeoutAcquisition) == WAIT_OBJECT_0)
{
if (!m_pAcqEasy->GetThicknessAcquisitionData (m_pThickness, m_pDistance1, m_pIntensity1, NULL, m_pDistance2, m_pIntensity2, NULL, NULL, NULL, &DataCount))
{
TRACE("Error : Process() GetThicknessValue : Error\n");
m_ErrorCode = m_pAcqEasy->GetStatusAcquisition(NULL);
return (SPARKSHI_ERROR);
}
dblThickness=0.0;
dblDistance1=0.0;
dblIntensity1=0.0;
dblDistance2=0.0;
dblIntensity2=0.0;
if (DataCount > 0)
{
for (int i=0;i<DataCount;i++)
{
dblThickness += (double)m_pThickness[0];
dblDistance1 += (double) m_pDistance1[0];
dblIntensity1 += (double) m_pIntensity1[0];
dblDistance2 += (double) m_pDistance2[0];
dblIntensity2 += (double) m_pIntensity2[0];
}
dblThickness/=(double)DataCount;
dblDistance1/=(double)DataCount;
dblIntensity1/=(double)DataCount;
dblDistance2/=(double)DataCount;
dblIntensity2/=(double)DataCount;
}
}
else
{
//TRACE("Error : Process() GetDistanceAcquisitionData : Timeout\n");
m_ErrorCode = SPARKSHI_ERROR_TIMEOUT;
}
}
else
m_ErrorCode = SPARKSHI_ERROR_INVALID_PARAM;
if (m_ErrorCode != SPARKSHI_ERROR_NONE)
return(SPARKSHI_ERROR);
else
return (SPARKSHI_ERROR_NONE);
}
BOOL CSTIL_CCS_PRIMA_Laser::SetRefractiveIndex (double indice)
{
if (MCHR_SetRefractiveIndex (m_SensorId, (float) indice) == MCHR_ERROR)
{
m_ErrorCode = MCHR_GetLastError (m_SensorId);
return (SPARKSHI_ERROR);
}
else
{
m_RefractiveIndex = (float) indice;
return (SPARKSHI_ERROR_NONE);
}
}
BOOL CSTIL_CCS_PRIMA_Laser::GetRefractiveIndex (double &indice)
{
float convParam = (float) indice;
if (MCHR_GetRefractiveIndex (m_SensorId, &convParam) == MCHR_ERROR)
{
m_ErrorCode = MCHR_GetLastError (m_SensorId);
return (SPARKSHI_ERROR);
}
else
{
m_RefractiveIndex = convParam;
indice = convParam;
return (SPARKSHI_ERROR_NONE);
}
}
@@ -0,0 +1,78 @@
#ifndef STIL_CCS_PRIMA_LASER_H_INCLUDED_
#define STIL_CCS_PRIMA_LASER_H_INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define SPARKSHI_ERROR_CODE 0xe000
#define SPARKSHI_ERROR 0
#define SPARKSHI_ERROR_NONE 1
#define SPARKSHI_ERROR_INIT_DLL_CHR (SPARKSHI_ERROR_CODE + 0x01)
#define SPARKSHI_ERROR_SENSOR_NOT_CONNECTED (SPARKSHI_ERROR_CODE + 0x02)
#define SPARKSHI_ERROR_CREATE_EVENT (SPARKSHI_ERROR_CODE + 0x03)
#define SPARKSHI_ERROR_INVALID_PARAM (SPARKSHI_ERROR_CODE + 0x04)
#define SPARKSHI_ERROR_TIMEOUT (SPARKSHI_ERROR_CODE + 0x05)
class CSTIL_CCS_PRIMA_Laser
{
public:
CSTIL_CCS_PRIMA_Laser();
~CSTIL_CCS_PRIMA_Laser(void);
BOOL Init(int _Mode=0);
BOOL Exit();
BOOL SetMeasureMode(int _MeasureMode=0);
BOOL GetDistance(double &dblDistance1, double &dblDistance2);
BOOL GetThicknessAllData(double &dbThickness, double &dblDistance1, double &dblDistance2, double &dblIntensity1, double &dblIntensity2);
private :
BOOL InitChrLib();
// Open connection on your controller with MCHR_SERIAL_CONNECTION or MCHR_USB_CONNECTION
// if MCHR_SERIAL_CONNECTION you can to change the baudrate value and serial port number
BOOL OpenCom (enChrConnection connectionType, int comPort = 1, int baudrate = 115200);
// If function return an error, get the last code value with this function
WORD GetLastError ();
// Close the controller connection
BOOL CloseCom ();
// Initialize controller and DLL_CHR to process data acquisition
BOOL InitAcquisition (eAcqEasyFunc selectedFunction, enTriggerType selectedTrigger, int numberTRE);
// Proper Stop acquisition function
BOOL ReleaseAcquisition ();
// Wait hardware trigger or start Software trigger and read datas values
BOOL GetDistanceValue(double &dbDistance, double &nIntensity, bool bSoftTrigger = true);
BOOL GetThicknessValue(double &dbThickness, double &dblDistance1, double &dblDistance2, double &dblIntensity1, double &dblIntensity2, bool bSoftTrigger = true);
BOOL SetRefractiveIndex (double indice);
BOOL GetRefractiveIndex (double &indice);
private :
BOOL CreateEvents(cAcqEasy *pAcquisitionEasy, HANDLE *pAcquisitionEvent);
BOOL ReleaseEvents(HANDLE *pAcquisitionEvent);
private :
MCHR_ID m_SensorId;
char m_szSensorName[MAX_PATH];
enTriggerType m_nTrigger;
WORD m_nComIndex;
WORD m_nBaudrate;
int m_nCurrentFullScale;
WORD m_ScanRate;
float m_RefractiveIndex;
WORD m_ErrorCode;
//Acquisition parameters
sAcqEasyParam m_acqEasyParam;
int m_NumberOfPointTRE;
//User Event
HANDLE m_evAcquisition;
cAcqEasy * m_pAcqEasy;
float *m_pThickness;
float *m_pDistance1;
float *m_pDistance2;
float *m_pIntensity1;
float *m_pIntensity2;
};
#endif
@@ -16,7 +16,7 @@
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources
// Chinese (Simplified, PRC) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
@@ -410,21 +410,22 @@ BEGIN
CONTROL "TC4000ÊÓÆµ¿¨",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,24,80,69,10
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON,24,96,62,10
CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON,24,112,62,10
CONTROL "控制器(USB",IDC_RADIO_CONTROLLER,"Button",BS_AUTORADIOBUTTON,195,31,69,10
CONTROL "控制器(RS232",IDC_RADIO__SO7_RS232,"Button",BS_AUTORADIOBUTTON,195,63,77,10
CONTROL "LK_G¼¤¹â",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,100,32,76,10
CONTROL "LK_H¼¤¹â(USB)",IDC_RADIO_KEYENCE_LASER_LK_H,"Button",BS_AUTORADIOBUTTON,100,48,76,10
CONTROL "LK_H¼¤¹â(ETHERNET)",IDC_RADIO_KEYENCE_LASER_LKH_ETHERNET,
"Button",BS_AUTORADIOBUTTON,100,64,85,10
CONTROL "LJ_G¼¤¹â",IDC_RADIO_KEYENCE_LASER3,"Button",BS_AUTORADIOBUTTON,100,80,76,10
CONTROL "ART PCI8822",IDC_RADIO_ART_PCI8622,"Button",BS_AUTORADIOBUTTON,100,96,76,10
CONTROL "STIL CCS-PRIMA",IDC_RADIO_ERT_CCS_PRIMA,"Button",BS_AUTORADIOBUTTON,100,112,76,10
CONTROL "控制器(USB",IDC_RADIO_CONTROLLER,"Button",BS_AUTORADIOBUTTON,195,31,69,10
CONTROL "控制器(USB R",IDC_RADIO_CONTROLLER2,"Button",BS_AUTORADIOBUTTON,195,47,75,10
CONTROL "控制器(RS232",IDC_RADIO__SO7_RS232,"Button",BS_AUTORADIOBUTTON,195,63,77,10
CONTROL "Verifcation algorithm",IDC_RADIO_SO7_VERIFICATION_ALGORITHM,
"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,8,139,81,10
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,139,45,10
DEFPUSHBUTTON "OK",IDOK,145,142,50,14
PUSHBUTTON "Cancel",IDCANCEL,225,142,50,14
GROUPBOX "²âÊÔÑ¡Ïî",IDC_STATIC,10,8,265,123
CONTROL "控制器(USB R",IDC_RADIO_CONTROLLER2,"Button",BS_AUTORADIOBUTTON,195,47,75,10
CONTROL "ART PCI8822",IDC_RADIO_ART_PCI8622,"Button",BS_AUTORADIOBUTTON,100,96,76,10
END
IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316
@@ -1556,12 +1557,12 @@ IDB_BITMAP_Z_DOWN BITMAP "res\\bmp\\Z_DOWN.bmp"
IDB_BITMAP_Z_UP BITMAP "res\\bmp\\Z_UP.bmp"
IDB_BITMAP_X_LEFT BITMAP "res\\bmp\\X_LEFT.BMP"
IDB_BITMAP_X_RIGHT BITMAP "res\\bmp\\X_RIGHT.bmp"
#endif // 中文(简体,中国) resources
#endif // Chinese (Simplified, PRC) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// 英语(美国) resources
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
@@ -2279,6 +2280,30 @@ BEGIN
EDITTEXT IDC_EDIT_TEST_KEYENCE_SETFOCUS,7,317,40,14,ES_AUTOHSCROLL | NOT WS_VISIBLE
END
IDD_DIALOG_STIL_CCS_PRIMA DIALOGEX 0, 0, 450, 337
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "STIL CCS - PRIMA"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
EDITTEXT IDC_EDIT_STIL_INTERVAL,287,39,40,14,ES_RIGHT | ES_AUTOHSCROLL
CONTROL "Continuous",IDC_CHECK_STIL_CONTINUE_GET_DATA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,288,64,52,10
PUSHBUTTON "Get Data",IDC_BUTTON_STIL_GET_DATA,356,38,66,38
PUSHBUTTON "Clear All",IDC_BUTTON_STIL_CLEAR_LOG,403,187,37,20
PUSHBUTTON "Exit",IDCANCEL,394,317,50,14
EDITTEXT IDC_EDIT_STIL_LASER_VALUE1,132,31,98,26,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_STIL_LASER_VALUE2,132,65,98,26,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_STIL_MESSAGE,26,113,370,177,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
LTEXT "Interval",-1,259,41,26,8
LTEXT "ms",-1,333,41,10,8
GROUPBOX "Get Data",-1,255,22,95,74
GROUPBOX "Readout",-1,86,20,163,76
LTEXT "Dis1",-1,98,41,14,8
LTEXT "Dis2",-1,97,70,14,8
PUSHBUTTON "Init",IDC_BUTTON_STIL_LASER_INIT,27,24,50,24
PUSHBUTTON "Exit",IDC_BUTTON_STIL_LASER_EXIT,27,78,50,24
PUSHBUTTON "Set Measure Mode",IDC_BUTTON_STIL_LASER_SET_MODE,27,51,50,24,BS_MULTILINE
END
/////////////////////////////////////////////////////////////////////////////
//
@@ -2407,6 +2432,14 @@ BEGIN
TOPMARGIN, 11
BOTTOMMARGIN, 331
END
IDD_DIALOG_STIL_CCS_PRIMA, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 444
TOPMARGIN, 11
BOTTOMMARGIN, 331
END
END
#endif // APSTUDIO_INVOKED
@@ -2504,7 +2537,7 @@ BEGIN
IDS_SO7_ABOUTBOX "&About Utility for SO7..."
END
#endif // 英语(美国) resources
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,174 @@
// STIL_CCS_PRIMA_Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "..\..\..\STIL\Common\inc\cAcqEasy.h"
#include "..\..\..\STIL\STIL_CCS_PRIMA_Laser.h"
#include "STIL_CCS_PRIMA_Dlg.h"
#include "afxdialogex.h"
extern CSTIL_CCS_PRIMA_Laser* g_pSTIL_CCS_PRIMA;
// CSTIL_CCS_PRIMA_Dlg dialog
IMPLEMENT_DYNAMIC(CSTIL_CCS_PRIMA_Dlg, CDialogEx)
CSTIL_CCS_PRIMA_Dlg::CSTIL_CCS_PRIMA_Dlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CSTIL_CCS_PRIMA_Dlg::IDD, pParent)
{
m_dDis1=0.0;
m_dDis2=0.0;
m_dIntensity1=0.0;
m_dIntensity2=0.0;
m_dThickness=0.0;
m_BTN_StartGetData=FALSE;
m_Timer1Interval=100;
}
CSTIL_CCS_PRIMA_Dlg::~CSTIL_CCS_PRIMA_Dlg()
{
}
void CSTIL_CCS_PRIMA_Dlg::DoDataExchange(CDataExchange* pDX)
{
DDX_Control(pDX, IDC_EDIT_STIL_MESSAGE, m_edMsg);
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSTIL_CCS_PRIMA_Dlg, CDialogEx)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_STIL_GET_DATA, &CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilGetData)
ON_BN_CLICKED(IDC_BUTTON_STIL_LASER_INIT, &CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilLaserInit)
ON_BN_CLICKED(IDC_BUTTON_STIL_LASER_EXIT, &CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilLaserExit)
ON_BN_CLICKED(IDC_BUTTON_STIL_LASER_SET_MODE, &CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilLaserSetMode)
ON_BN_CLICKED(IDCANCEL, &CSTIL_CCS_PRIMA_Dlg::OnBnClickedCancel)
END_MESSAGE_MAP()
// CSTIL_CCS_PRIMA_Dlg message handlers
BOOL CSTIL_CCS_PRIMA_Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
((CButton*)(GetDlgItem(IDC_EDIT_STIL_INTERVAL)))->SetWindowText(_T("100"));
return TRUE; // return TRUE unless you set the focus to a control
}
void CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilGetData()
{
if (((CButton*)(GetDlgItem(IDC_CHECK_STIL_CONTINUE_GET_DATA)))->GetCheck())
{
if (m_BTN_StartGetData)
{
KillTimer(1);
m_BTN_StartGetData=FALSE;
((CButton*)GetDlgItem(IDC_BUTTON_STIL_GET_DATA))->SetWindowTextW(_T("Get Data"));
}
else
{
UpdateData(TRUE);
USES_CONVERSION;
CString str(_T(""));
GetDlgItem(IDC_EDIT_STIL_INTERVAL)->GetWindowText(str);
const char* cTempValue=T2A(str);
m_Timer1Interval = atoi(cTempValue);
m_BTN_StartGetData=TRUE;
SetTimer(1,m_Timer1Interval,NULL);
((CButton*)GetDlgItem(IDC_BUTTON_STIL_GET_DATA))->SetWindowTextW(_T("STOP"));
}
}
else
{
g_pSTIL_CCS_PRIMA->GetDistance(m_dDis1,m_dDis2);
Show_Get_Data();
}
GetDlgItem(IDC_EDIT_STIL_MESSAGE)->SetFocus();
}
void CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilLaserInit()
{
g_pSTIL_CCS_PRIMA->Init();
}
void CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilLaserSetMode()
{
g_pSTIL_CCS_PRIMA->SetMeasureMode();
}
void CSTIL_CCS_PRIMA_Dlg::OnBnClickedButtonStilLaserExit()
{
g_pSTIL_CCS_PRIMA->Exit();
}
void CSTIL_CCS_PRIMA_Dlg::Show_Get_Data()
{
m_csMsg.Format(_T("%.4f"),m_dDis1);
GetDlgItem(IDC_EDIT_STIL_LASER_VALUE1)->SetWindowText(m_csMsg);
m_csMsg.Format(_T("%.4f"),m_dDis2);
GetDlgItem(IDC_EDIT_STIL_LASER_VALUE2)->SetWindowText(m_csMsg);
}
//=====================================================================================
//Print message on edit control
void CSTIL_CCS_PRIMA_Dlg::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
{
CString strOutput;
edtOutput.GetWindowText(strOutput);
strOutput += strNewText;
if ("\r\n" != strOutput.Right(2))
{
strOutput += "\r\n";
}
int iCount = strOutput.GetLength();
edtOutput.SetRedraw(FALSE);
edtOutput.SetWindowText(strOutput);
int iLine = edtOutput.GetLineCount();
edtOutput.LineScroll(iLine, 0);
edtOutput.SetSel(iCount, iCount);
edtOutput.SetRedraw(TRUE);
}
//================================================================================================
void CSTIL_CCS_PRIMA_Dlg::OnTimer(UINT_PTR nIDEvent)
{
switch(nIDEvent)
{
case 1:
{
g_pSTIL_CCS_PRIMA->GetThicknessAllData(m_dThickness,m_dDis1,m_dDis2,m_dIntensity1,m_dIntensity2);
m_csMsg.Format(_T("Thick:%.4f,Dis1:%.4f,Dis2:%.4f,Int1:%.4f,Int2:%.4f\n"),m_dThickness,m_dDis1,m_dDis2,m_dIntensity1,m_dIntensity2);
OutputWithScroll(m_csMsg,m_edMsg);
}
break;
}
CDialog::OnTimer(nIDEvent);
}
//================================================================================================
BOOL CSTIL_CCS_PRIMA_Dlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
if (pMsg->wParam==VK_SPACE)
{
OnBnClickedButtonStilGetData();
}
else if(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE)
{
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CSTIL_CCS_PRIMA_Dlg::OnBnClickedCancel()
{
g_pSTIL_CCS_PRIMA->Exit();
CDialogEx::OnCancel();
}
@@ -0,0 +1,43 @@
#pragma once
// CSTIL_CCS_PRIMA_Dlg dialog
class CSTIL_CCS_PRIMA_Dlg : public CDialogEx
{
DECLARE_DYNAMIC(CSTIL_CCS_PRIMA_Dlg)
public:
CSTIL_CCS_PRIMA_Dlg(CWnd* pParent = NULL); // standard constructor
virtual ~CSTIL_CCS_PRIMA_Dlg();
// Dialog Data
enum { IDD = IDD_DIALOG_STIL_CCS_PRIMA };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
private:
CEdit m_edMsg;
CString m_csMsg;
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
void Show_Get_Data();
double m_dDis1;
double m_dDis2;
double m_dIntensity1;
double m_dIntensity2;
double m_dThickness;
int m_Timer1Interval;
BOOL m_BTN_StartGetData;
public:
afx_msg BOOL PreTranslateMessage(MSG* pMsg);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBnClickedButtonStilGetData();
afx_msg void OnBnClickedButtonStilLaserInit();
afx_msg void OnBnClickedButtonStilLaserExit();
afx_msg void OnBnClickedButtonStilLaserSetMode();
afx_msg void OnBnClickedCancel();
};
@@ -23,6 +23,9 @@
#include "Videocard_TC4000.h"
#include "..\..\..\Videocard\SV4000E\SV4000E.h"
#include "Videocard_SV4000E.h"
#include "..\..\..\STIL\Common\inc\cAcqEasy.h"
#include "..\..\..\STIL\STIL_CCS_PRIMA_Laser.h"
#include "STIL_CCS_PRIMA_Dlg.h"
#endif //_RELEASE_FULL_VERSION
#include "SO7_UtilDlg.h"
@@ -66,6 +69,7 @@ CEF8000_Interface* m_pEF8000_Interface=NULL;
CXBOXController* XBoxPlayer =NULL;
CART_PCI8622* m_pART_PCI8622=NULL;
CSTIL_CCS_PRIMA_Laser* g_pSTIL_CCS_PRIMA=NULL;
// CSo7_Option dialog
IMPLEMENT_DYNAMIC(CSo7_Option, CDialog)
@@ -147,6 +151,7 @@ BOOL CSo7_Option::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622))->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_ERT_CCS_PRIMA))->EnableWindow(FALSE);
#endif
#ifdef _RELEASE_ONLY_ONE_FUNCTION
@@ -346,6 +351,22 @@ void CSo7_Option::OnBnClickedOk()
delete m_pART_PCI8622;
m_pART_PCI8622=NULL;
}
else if(((CButton *)GetDlgItem(IDC_RADIO_ERT_CCS_PRIMA))->GetCheck())
{
#ifdef _RELEASE_FULL_VERSION
if (!g_pSTIL_CCS_PRIMA)
{
g_pSTIL_CCS_PRIMA=new CSTIL_CCS_PRIMA_Laser();
}
CSTIL_CCS_PRIMA_Dlg* pSTIL_CCS_PRIMA_Dlg=new CSTIL_CCS_PRIMA_Dlg();
pSTIL_CCS_PRIMA_Dlg->DoModal();
delete pSTIL_CCS_PRIMA_Dlg;
pSTIL_CCS_PRIMA_Dlg=nullptr;
delete g_pSTIL_CCS_PRIMA;
g_pSTIL_CCS_PRIMA=NULL;
#endif //_RELEASE_FULL_VERSION
}
else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->GetCheck())
{
#ifdef _RELEASE_FULL_VERSION
@@ -145,7 +145,7 @@
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\Videocard\SV4000E\dataAcq.lib;..\..\..\Videocard\SV4000E\DXMediaCap.lib;..\..\..\ART\PCI8622_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\Videocard\SV4000E\dataAcq.lib;..\..\..\Videocard\SV4000E\DXMediaCap.lib;..\..\..\ART\PCI8622_32.lib;..\..\..\STIL\Dll_chr.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
@@ -206,7 +206,7 @@
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\ART\PCI8622_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\ART\PCI8622_32.lib;..\..\..\STIL\Dll_chr.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseSO7|Win32'">
@@ -323,6 +323,8 @@
<ClCompile Include="..\..\..\SevenOcean\So7_Interface.cpp" />
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto.cpp" />
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto_Aux.cpp" />
<ClCompile Include="..\..\..\STIL\Common\src\cAcqEasy.cpp" />
<ClCompile Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.cpp" />
<ClCompile Include="..\..\..\Tesa\TesaStarE.cpp" />
<ClCompile Include="..\LOGGER.CPP" />
<ClCompile Include="..\Proto_Util.cpp" />
@@ -375,6 +377,7 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='ReleaseSO7|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="STIL_CCS_PRIMA_Dlg.cpp" />
<ClCompile Include="TestTesaStarEDialog.cpp" />
<ClCompile Include="Videocard_SDK3000.cpp" />
<ClCompile Include="Videocard_SV2000E.cpp" />
@@ -409,6 +412,7 @@
<ClInclude Include="..\..\..\SevenOcean\So7_Interface.h" />
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto.h" />
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto_Aux.h" />
<ClInclude Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.h" />
<ClInclude Include="..\..\..\Tesa\TesaStarE.h" />
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h" />
<ClInclude Include="..\Proto_Util.h" />
@@ -456,6 +460,7 @@
<ClInclude Include="So7_XBoxController.h" />
<ClInclude Include="STATUS_MOTION.H" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="STIL_CCS_PRIMA_Dlg.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="TestTesaStarEDialog.h" />
<ClInclude Include="VideoCardDefine.h" />
@@ -208,6 +208,15 @@
<ClCompile Include="So7_Art_PCI8622.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="STIL_CCS_PRIMA_Dlg.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\STIL\Common\src\cAcqEasy.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CaptureDataDlg.h">
@@ -453,6 +462,12 @@
<ClInclude Include="So7_Art_PCI8622.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="STIL_CCS_PRIMA_Dlg.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
@@ -653,6 +653,7 @@
#define IDC_BUTTON_TESA_STAR_STOP_MACHINE 1542
#define IDC_BUTTON_SO7_MOTION_CONFIG_OK 1542
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT1 1542
#define IDC_BUTTON_STIL_LASER_EXIT 1542
#define IDC_BUTTON_STOP_SAMPLE_SCURVE 1543
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT2 1543
#define IDC_BUTTON_SO7_MOTION_CONFIG_OK2 1543
@@ -721,6 +722,7 @@
#define IDC_RADIO_MACHINE_KEYENCE_TM3000 1592
#define IDC_RADIO_ART_PCI8622 1592
#define IDC_BUTTON_GET_SCAN_DATA_KEYENCE_LK_HLASER 1593
#define IDC_RADIO_ERT_CCS_PRIMA 1593
#define IDC_RADIO_KEYENCE_LASER_LK_H 1594
#define IDC_RADIO_TEST_IMAGE_DLL 1595
#define IDC_BUTTON_IMAGEDLL_PAUSE_AND_GET_SCAN_LASER_DATA 1596
@@ -853,6 +855,7 @@
#define IDD_DIALOG_KEYENCE_LKG5000 1719
#define IDD_SO7_UTIL_SETUP_SO7_CONFIG_MOTION 1720
#define IDD_SO7_ART_PCI8622 1721
#define IDD_DIALOG_STIL_CCS_PRIMA 1722
#define IDC_RADIO_SPEED_SLOW 1770
#define IDC_RADIO_SCALE 1772
#define IDC_EDIT_SPEED_X 1773
@@ -883,8 +886,11 @@
#define IDC_BUTTON_SO7_MOVETO_CLEAR_ALL_LOG 1794
#define IDC_BUTTON_SO7_MOTION_CONFIG_CANCEL 1794
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT1 1794
#define IDC_BUTTON_STIL_LASER_INIT 1794
#define IDC_COMBO_RWDATA_ADDR 1795
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT2 1795
#define IDC_BUTTON_STIL_LASER_INIT2 1795
#define IDC_BUTTON_STIL_LASER_SET_MODE 1795
#define IDC_EDIT_MOTION_SPEEDY 1796
#define IDC_COMBO_OUTPORT_NUMBER 1796
#define IDC_EDIT4 1797
@@ -988,6 +994,13 @@
#define IDC_BUTTON_SO7_TRIGPULSE_READ_PARA 1855
#define IDC_BUTTON4 1856
#define IDC_BUTTON_SET_SCALE_COEFFICIENT 1856
#define IDC_BUTTON_STIL_GET_DATA 1857
#define IDC_EDIT_STIL_INTERVAL 1858
#define IDC_CHECK_STIL_CONTINUE_GET_DATA 1859
#define IDC_EDIT_STIL_LASER_VALUE2 1860
#define IDC_EDIT_STIL_LASER_VALUE1 1861
#define IDC_EDIT_STIL_MESSAGE 1862
#define IDC_BUTTON_STIL_CLEAR_LOG 1863
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
#define ID_EDIT_SO7_CONFIG_MOTION 32741
@@ -997,7 +1010,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 191
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1857
#define _APS_NEXT_CONTROL_VALUE 1864
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif