#pragma once
#pragma managed(push, off)
#ifdef LJX8_IF_EXPORT
#define LJX8_IF_API __declspec(dllexport)
#else
#define LJX8_IF_API __declspec(dllimport)
#endif
typedef enum {
LJX8IF_SETTING_DEPTH_WRITE = 0x00, LJX8IF_SETTING_DEPTH_RUNNING = 0x01, LJX8IF_SETTING_DEPTH_SAVE = 0x02, } LJX8IF_SETTING_DEPTH;
typedef enum {
LJX8IF_INIT_SETTING_TARGET_PRG0 = 0x00, LJX8IF_INIT_SETTING_TARGET_PRG1 = 0x01, LJX8IF_INIT_SETTING_TARGET_PRG2 = 0x02, LJX8IF_INIT_SETTING_TARGET_PRG3 = 0x03, LJX8IF_INIT_SETTING_TARGET_PRG4 = 0x04, LJX8IF_INIT_SETTING_TARGET_PRG5 = 0x05, LJX8IF_INIT_SETTING_TARGET_PRG6 = 0x06, LJX8IF_INIT_SETTING_TARGET_PRG7 = 0x07, LJX8IF_INIT_SETTING_TARGET_PRG8 = 0x08, LJX8IF_INIT_SETTING_TARGET_PRG9 = 0x09, LJX8IF_INIT_SETTING_TARGET_PRG10 = 0x0A, LJX8IF_INIT_SETTING_TARGET_PRG11 = 0x0B, LJX8IF_INIT_SETTING_TARGET_PRG12 = 0x0C, LJX8IF_INIT_SETTING_TARGET_PRG13 = 0x0D, LJX8IF_INIT_SETTING_TARGET_PRG14 = 0x0E, LJX8IF_INIT_SETTING_TARGET_PRG15 = 0x0F, } LJX8IF_INIT_SETTING_TARGET;
typedef enum {
LJX8IF_PROFILE_BANK_ACTIVE = 0x00, LJX8IF_PROFILE_BANK_INACTIVE = 0x01, } LJX8IF_PROFILE_BANK;
typedef enum {
LJX8IF_PROFILE_POSITION_CURRENT = 0x00, LJX8IF_PROFILE_POSITION_OLDEST = 0x01, LJX8IF_PROFILE_POSITION_SPEC = 0x02, } LJX8IF_PROFILE_POSITION;
typedef enum {
LJX8IF_BATCH_POSITION_CURRENT = 0x00, LJX8IF_BATCH_POSITION_SPEC = 0x02, LJX8IF_BATCH_POSITION_COMMITED = 0x03, LJX8IF_BATCH_POSITION_CURRENT_ONLY = 0x04, } LJX8IF_BATCH_POSITION;
typedef struct {
int nMajorNumber; int nMinorNumber; int nRevisionNumber; int nBuildNumber; } LJX8IF_VERSION_INFO;
typedef struct {
unsigned char abyIpAddress[4]; unsigned short wPortNo; unsigned char reserve[2]; } LJX8IF_ETHERNET_CONFIG;
typedef struct {
unsigned char byType; unsigned char byCategory; unsigned char byItem; unsigned char reserve; unsigned char byTarget1; unsigned char byTarget2; unsigned char byTarget3; unsigned char byTarget4; } LJX8IF_TARGET_SETTING;
typedef struct {
unsigned char byProfileCount; unsigned char reserve1; unsigned char byLuminanceOutput; unsigned char reserve2; unsigned short wProfileDataCount; unsigned char reserve3[2]; long lXStart; long lXPitch; } LJX8IF_PROFILE_INFO;
typedef struct {
unsigned long reserve; unsigned long dwTriggerCount; long lEncoderCount; unsigned long reserve2[3]; } LJX8IF_PROFILE_HEADER;
typedef struct {
unsigned long reserve; } LJX8IF_PROFILE_FOOTER;
typedef struct {
unsigned char byTargetBank; unsigned char byPositionMode; unsigned char reserve[2]; unsigned long dwGetProfileNo; unsigned char byGetProfileCount; unsigned char byErase; unsigned char reserve2[2]; } LJX8IF_GET_PROFILE_REQUEST;
typedef struct {
unsigned char byTargetBank; unsigned char byPositionMode; unsigned char reserve[2]; unsigned long dwGetBatchNo; unsigned long dwGetProfileNo; unsigned char byGetProfileCount; unsigned char byErase; unsigned char reserve2[2]; } LJX8IF_GET_BATCH_PROFILE_REQUEST;
typedef struct {
unsigned long dwCurrentProfileNo; unsigned long dwOldestProfileNo; unsigned long dwGetTopProfileNo; unsigned char byGetProfileCount; unsigned char reserve[3]; } LJX8IF_GET_PROFILE_RESPONSE;
typedef struct {
unsigned long dwCurrentBatchNo; unsigned long dwCurrentBatchProfileCount; unsigned long dwOldestBatchNo; unsigned long dwOldestBatchProfileCount; unsigned long dwGetBatchNo; unsigned long dwGetBatchProfileCount; unsigned long dwGetBatchTopProfileNo; unsigned char byGetProfileCount; unsigned char byCurrentBatchCommited; unsigned char reserve[2]; } LJX8IF_GET_BATCH_PROFILE_RESPONSE;
typedef struct {
unsigned char bySendPosition; unsigned char reserve[3]; } LJX8IF_HIGH_SPEED_PRE_START_REQ;
typedef void(_cdecl *LJX8IF_CALLBACK)(unsigned char* pBuffer, unsigned long dwSize, unsigned long dwCount, unsigned long dwNotify, unsigned long dwUser);
typedef void(_cdecl *LJX8IF_CALLBACK_SIMPLE_ARRAY)(LJX8IF_PROFILE_HEADER* pProfileHeaderArray, unsigned short* pHeightProfileArray, unsigned short* pLuminanceProfileArray, unsigned long dwLuminanceEnable, unsigned long dwProfileDataCount, unsigned long dwCount, unsigned long dwNotify, unsigned long dwUser);
extern "C"
{
LJX8_IF_API long __stdcall LJX8IF_Initialize(void);
LJX8_IF_API long __stdcall LJX8IF_Finalize(void);
LJX8_IF_API LJX8IF_VERSION_INFO __stdcall LJX8IF_GetVersion(void);
LJX8_IF_API long __stdcall LJX8IF_EthernetOpen(long lDeviceId, LJX8IF_ETHERNET_CONFIG* pEthernetConfig);
LJX8_IF_API long __stdcall LJX8IF_CommunicationClose(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_RebootController(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_ReturnToFactorySetting(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_ControlLaser(long lDeviceId, unsigned char byState);
LJX8_IF_API long __stdcall LJX8IF_GetError(long lDeviceId, unsigned char byReceivedMax, unsigned char* pbyErrCount, unsigned short* pwErrCode);
LJX8_IF_API long __stdcall LJX8IF_ClearError(long lDeviceId, unsigned short wErrCode);
LJX8_IF_API long __stdcall LJX8IF_TrgErrorReset(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_GetTriggerAndPulseCount(long lDeviceId, unsigned long* pdwTriggerCount, long* plEncoderCount);
LJX8_IF_API long __stdcall LJX8IF_SetTimerCount(long lDeviceId, unsigned long dwTimerCount);
LJX8_IF_API long __stdcall LJX8IF_GetTimerCount(long lDeviceId, unsigned long* pdwTimerCount);
LJX8_IF_API long __stdcall LJX8IF_GetHeadTemperature(long lDeviceId, short* pnSensorTemperature, short* pnProcessorTemperature, short* pnCaseTemperature);
LJX8_IF_API long __stdcall LJX8IF_GetHeadModel(long lDeviceId, char* pHeadModel);
LJX8_IF_API long __stdcall LJX8IF_GetSerialNumber(long lDeviceId, char* pControllerSerialNo, char* pHeadSerialNo);
LJX8_IF_API long __stdcall LJX8IF_GetAttentionStatus(long lDeviceId, unsigned short* pwAttentionStatus);
LJX8_IF_API long __stdcall LJX8IF_GetLedLightImage(long lDeviceId, unsigned char byLedBrightness, unsigned char byLaserBrightness, unsigned char* pbyImageData);
LJX8_IF_API long __stdcall LJX8IF_Trigger(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_StartMeasure(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_StopMeasure(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_ClearMemory(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_SetSetting(long lDeviceId, unsigned char byDepth, LJX8IF_TARGET_SETTING TargetSetting, void* pData, unsigned long dwDataSize, unsigned long* pdwError);
LJX8_IF_API long __stdcall LJX8IF_GetSetting(long lDeviceId, unsigned char byDepth, LJX8IF_TARGET_SETTING TargetSetting, void* pData, unsigned long dwDataSize);
LJX8_IF_API long __stdcall LJX8IF_InitializeSetting(long lDeviceId, unsigned char byDepth, unsigned char byTarget);
LJX8_IF_API long __stdcall LJX8IF_ReflectSetting(long lDeviceId, unsigned char byDepth, unsigned long* pdwError);
LJX8_IF_API long __stdcall LJX8IF_RewriteTemporarySetting(long lDeviceId, unsigned char byDepth);
LJX8_IF_API long __stdcall LJX8IF_CheckMemoryAccess(long lDeviceId, unsigned char* pbyBusy);
LJX8_IF_API long __stdcall LJX8IF_SetXpitch(long lDeviceId, unsigned long dwXpitch);
LJX8_IF_API long __stdcall LJX8IF_GetXpitch(long lDeviceId, unsigned long* pdwXpitch);
LJX8_IF_API long __stdcall LJX8IF_ChangeActiveProgram(long lDeviceId, unsigned char byProgramNo);
LJX8_IF_API long __stdcall LJX8IF_GetActiveProgram(long lDeviceId, unsigned char* pbyProgramNo);
LJX8_IF_API long __stdcall LJX8IF_GetProfile(long lDeviceId, LJX8IF_GET_PROFILE_REQUEST* pReq, LJX8IF_GET_PROFILE_RESPONSE* pRsp, LJX8IF_PROFILE_INFO* pProfileInfo, unsigned long* pdwProfileData, unsigned long dwDataSize);
LJX8_IF_API long __stdcall LJX8IF_GetBatchProfile(long lDeviceId, LJX8IF_GET_BATCH_PROFILE_REQUEST* pReq, LJX8IF_GET_BATCH_PROFILE_RESPONSE* pRsp, LJX8IF_PROFILE_INFO * pProfileInfo, unsigned long* pdwBatchData, unsigned long dwDataSize);
LJX8_IF_API long __stdcall LJX8IF_GetBatchSimpleArray(long lDeviceId, LJX8IF_GET_BATCH_PROFILE_REQUEST* pReq, LJX8IF_GET_BATCH_PROFILE_RESPONSE* pRsp, LJX8IF_PROFILE_INFO* pProfileInfo, LJX8IF_PROFILE_HEADER* pProfileHeaderArray, unsigned short* pHeightProfileArray, unsigned short* pLuminanceProfileArray);
LJX8_IF_API long __stdcall LJX8IF_InitializeHighSpeedDataCommunication(long lDeviceId, LJX8IF_ETHERNET_CONFIG* pEthernetConfig, unsigned short wHighSpeedPortNo,
LJX8IF_CALLBACK pCallBack, unsigned long dwProfileCount, unsigned long dwThreadId);
LJX8_IF_API long __stdcall LJX8IF_InitializeHighSpeedDataCommunicationSimpleArray(long lDeviceId, LJX8IF_ETHERNET_CONFIG* pEthernetConfig, unsigned short wHighSpeedPortNo,
LJX8IF_CALLBACK_SIMPLE_ARRAY pCallBackSimpleArray, unsigned long dwProfileCount, unsigned long dwThreadId);
LJX8_IF_API long __stdcall LJX8IF_PreStartHighSpeedDataCommunication(long lDeviceId, LJX8IF_HIGH_SPEED_PRE_START_REQ* pReq, LJX8IF_PROFILE_INFO* pProfileInfo);
LJX8_IF_API long __stdcall LJX8IF_StartHighSpeedDataCommunication(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_StopHighSpeedDataCommunication(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_FinalizeHighSpeedDataCommunication(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_GetZUnitSimpleArray(long lDeviceId, unsigned short* pwZUnit);
LJX8_IF_API long __stdcall LJX8IF_CombineImage(unsigned char bPixel, long lNumX, long lNumY, long lSizeX, long lSizeY, long *plOpSort,
unsigned char *pbOpInvX, unsigned char *pBOpInvY, long *plOpCutX, long *plOpGeoX, long *plOpGeoY, void *pSourceImage, void *pDestImage);
LJX8_IF_API long __stdcall LJX8IF_CircularImage(long lXPointNum, long lProfileNum, float fCircleCenterXUm, float fThetaPitchDeg, float fTiltCorrectDeg,
float fXPitchUm, float fZUnit, unsigned char byImageType, long lDestXPointNum, long lDestYPointNumP, long lDestYPointNumM, void* pSourceImage, void* pDestImage);
LJX8_IF_API long __stdcall LJX8IF_CircularImagePointCloud(long lXPointNum, long lProfileNum, float fCircleCenterXUm, float fThetaPitchDeg,
float fTiltCorrectDeg, float fViewAngleDeg, float fXPitchUm, float fZUnit, void* pSourceImage, float* pfDestData);
LJX8_IF_API long __stdcall LJX8IF_SpecialCommandInitialize(long lDeviceId);
LJX8_IF_API long __stdcall LJX8IF_SpecialCommandEncoder(long lDeviceId, unsigned char byEncoderTriggerInputMode, unsigned short wSkippingPoints, unsigned char byEncoderMinimumInputTime);
};
#pragma managed(pop)