From 5a8bbd2426aeacdbbb2fdb1a7f7a1adce0cac7f9 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 01 八月 2025 16:23:29 +0800
Subject: [PATCH] 1. 新增以下功能函数并集成: - InitStorage():初始化存储区域 - StartStorage():开始数据存储 - StopStorage():停止存储并自动提取、分析数据 - AnalyzeStoredData():分析指定端口数据,返回偏移量
---
SourceCode/Bond/SGMeasurement/DLL/64bit/SGIF.h | 1641 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,641 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/SGMeasurement/DLL/64bit/SGIF.h b/SourceCode/Bond/SGMeasurement/DLL/64bit/SGIF.h
new file mode 100644
index 0000000..c63e77e
--- /dev/null
+++ b/SourceCode/Bond/SGMeasurement/DLL/64bit/SGIF.h
@@ -0,0 +1,1641 @@
+
+
+#ifdef SGIF_EXPORTS
+#define EXP __declspec(dllexport)
+#else
+#define EXP __declspec(dllimport)
+#endif
+
+#include "Winsock2.h"
+#include "Ws2tcpip.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <windows.h>
+#pragma comment(lib, "WS2_32.lib")
+
+// Return Code List
+typedef enum {
+ RC_OK = 0x0000,
+ // The operation is completed successfully.
+ ///////////////////////////////////////////////
+ // Communication error from controller notification
+ //
+ RC_NAK_COMMAND = 0x1001, // Command error
+ RC_NAK_COMMAND_LENGTH, // Command length error
+ RC_NAK_TIMEOUT, // Timeout
+ RC_NAK_CHECKSUM, // Check sum error
+ RC_NAK_INVALID_STATE, // Status error
+ RC_NAK_OTHER, // Other error
+ RC_NAK_PARAMETER, // Parameter error
+ RC_NAK_OUT_STAGE, // OUT calculation count limitation error
+ RC_NAK_OUT_HEAD_NUM, // No. of used head/OUT over error
+ RC_NAK_PARAM_RANGE_DATA_STORED, // OUT No which data reserved over acctive out count
+ RC_NAK_OUT_INVALID_CALC, // OUT which cannot be used for calculation was specified for calculation.
+ RC_NAK_OUT_VOID, // OUT which specified for calculation is not found.
+ RC_NAK_INVALID_CYCLE, // Unavailable sampling cycle
+ RC_NAK_CTRL_ERROR, // Main unit error
+ RC_NAK_SRAM_ERROR, // Setting value error
+ ///////////////////////////////////////////////
+ // Communication DLL error notification
+ //
+ RC_ERR_OPEN_DEVICE = 0x2000,// Opening the device failed.
+ RC_ERR_NO_DEVICE, // The device is not open.
+ RC_ERR_SEND, // Command sending error
+ RC_ERR_RECEIVE, // Response receiving error
+ RC_ERR_TIMEOUT, // Timeout
+ RC_ERR_NODATA, // No data
+ RC_ERR_NOMEMORY, // No free memory
+
+ RC_ERR_DISCONNECT, // Cable disconnection suspected
+ RC_ERR_UNKNOWN, // Undefined error
+ RC_ERR_DEVID_OVER, // over dev_id scale
+ RC_ERR_NET_NO_CONN, // no connected at the deviceID
+ RC_ERR_IP_EXISTED,
+ RC_ERR_SELECT, // select of /socket error
+ RC_ERR_NULL_PARAMETER, // NULL point exception from parameter
+ RC_ERR_DIY_FUNC, // error due to dir function
+ RC_ERR_OVER_PARAMENTER, // paramenter over the limition
+ RC_ERR_NOT_SUPPORT // 功能不支持
+} RC;
+
+//device Version
+typedef enum {
+ SG3035 = 0,
+ SG3030 = 1,
+ SG3085 = 2,
+ SG3080 = 3,
+ SG5025 = 4,
+ SG5020 = 5,
+ SG5055 = 6,
+ SG5050 = 7,
+ SG5085 = 8,
+ SG5080 = 9,
+ SG5155 = 10,
+ SG5150 = 11,
+ SC04025 = 12,
+ SC03560 = 13,
+ SGI500 = 14,
+ SGI505 = 15,
+ SGI400 = 16,
+ SGI405 = 17,
+ SGI150 = 18,
+ SGI155 = 19,
+ SGI080 = 20,
+ SGI085 = 21,
+ SGI050 = 22,
+ SGI055 = 23,
+ SGI030 = 24,
+ SGI035 = 25,
+ SGI020 = 26,
+ SGI025 = 27,
+ SG3155 = 28,
+ SG3150 = 29,
+ SC01045 = 30,
+ SC10015 = 31,
+ SC20011 = 32,
+ SC01236 = 33,
+ SCI04025 = 34,
+ SCI03560 = 35,
+ SCI01045 = 36,
+ SCI10015 = 37,
+ SCI20011 = 38,
+ SCI01236 = 39,
+}SGIF_DEVICE_TYPE;
+
+// Measurement value structures
+typedef enum {
+ SGIF_FLOATRESULT_VALID, // valid data
+ SGIF_FLOATRESULT_RANGEOVER_P, // over range at positive (+) side
+ SGIF_FLOATRESULT_RANGEOVER_N, // over range at negative (-) side
+ SGIF_FLOATRESULT_WAITING, // Wait for comparator result
+ SGIF_FLOATRESULT_ALARM, // alarm
+ SGIF_FLOATRESULT_INVALID, // Invalid (error, etc.)
+} SGIF_FLOATRESULT;
+
+// Set ABLE
+typedef enum {
+ SGIF_ABLEMODE_AUTO, // AUTO
+ SGIF_ABLEMODE_MANUAL, // manual
+} SGIF_ABLEMODE;
+
+// Set Measurement Mode
+typedef enum {
+ SGIF_MEASUREMODE_NORMAL, // normal
+ SGIF_MEASUREMODE_HALF_T, // translucent object
+ SGIF_MEASUREMODE_TRAN_1, // transparent object
+ SGIF_MEASUREMODE_TRAN_2, // transparent object 2
+ SGIF_MEASUREMODE_MRS, // multireflective object
+ SGIF_MEASUREMODE_OPAQUE = SGIF_MEASUREMODE_MRS, // Semi opaque object
+} SGIF_MEASUREMODE;
+
+// Set Basic Point
+typedef enum {
+ SGIF_BASICPOINT_NEAR, // NEAR
+ SGIF_BASICPOINT_FAR, // FAR
+} SGIF_BASICPOINT;
+
+// Set Mounting Mode
+typedef enum {
+ SGIF_REFLECTIONMODE_DIFFUSION, // diffuse reflection
+ SGIF_REFLECTIONMODE_MIRROR, // specular reflection
+} SGIF_REFLECTIONMODE;
+
+// Set Median
+typedef enum {
+ SGIF_MEDIAN_OFF, // OFF
+ SGIF_MEDIAN_7, // 7 point
+ SGIF_MEDIAN_15, // 15 point
+ SGIF_MEDIAN_31, // 31 point
+} SGIF_MEDIAN;
+
+// Set LASER CTRL group.
+typedef enum {
+ SGIF_LASER_CTRL_GROUP_1, // LASER CTRL 1
+ SGIF_LASER_CTRL_GROUP_2, // LASER CTRL 2
+} SGIF_LASER_CTRL_GROUP;
+
+// Set a range.
+typedef enum {
+ SGIF_RANGE_CENTER, // CENTER
+ SGIF_RANGE_FAR, // FAR
+} SGIF_RANGE;
+
+// Set Mutual Interference Prevention Group
+typedef enum {
+ SGIF_MUTUAL_INTERFERENCE_PREVENTION_GROUP_A, // Group A
+ SGIF_MUTUAL_INTERFERENCE_PREVENTION_GROUP_B, // Group B
+ SGIF_MUTUAL_INTERFERENCE_PREVENTION_GROUP_C, // Group C
+} SGIF_MUTUAL_INTERFERENCE_PREVENTION_GROUP;
+
+// Set calculation method.
+typedef enum {
+ SGIF_CALCMETHOD_HEADA, // head A
+ SGIF_CALCMETHOD_HEADB, // head B
+ SGIF_CALCMETHOD_HEAD_HEADA_PLUS_HEADB, // head A+head B
+ SGIF_CALCMETHOD_HEAD_HEADA_MINUS_HEADB, // head A-head B
+ SGIF_CALCMETHOD_HEAD_HEADA_TRANSPARENT, // head A transparent object
+ SGIF_CALCMETHOD_HEAD_HEADB_TRANSPARENT, // head B transparent object
+
+ SGIF_CALCMETHOD_HEAD = 0, // head
+ SGIF_CALCMETHOD_OUT, // OUT
+ SGIF_CALCMETHOD_ADD, // ADD
+ SGIF_CALCMETHOD_SUB, // SUB
+ SGIF_CALCMETHOD_AVE, // AVE
+ SGIF_CALCMETHOD_MAX, // MAX
+ SGIF_CALCMETHOD_MIN, // MIN
+ SGIF_CALCMETHOD_PP, // P-P
+} SGIF_CALCMETHOD;
+
+// Set Target Surface
+typedef enum {
+ SGIF_CALCTARGET_PEAK_1, // peak 1
+ SGIF_CALCTARGET_PEAK_2, // peak 2
+ SGIF_CALCTARGET_PEAK_3, // peak 3
+ SGIF_CALCTARGET_PEAK_4, // peak 4
+ SGIF_CALCTARGET_PEAK_1_2, // peak 1-peak 2
+ SGIF_CALCTARGET_PEAK_1_3, // peak 1-peak 3
+ SGIF_CALCTARGET_PEAK_1_4, // peak 1-peak 4
+ SGIF_CALCTARGET_PEAK_2_3, // peak 2-peak 3
+ SGIF_CALCTARGET_PEAK_2_4, // peak 2-peak 4
+ SGIF_CALCTARGET_PEAK_3_4, // peak 3-peak 4
+} SGIF_CALCTARGET;
+
+// Set Filter Mode
+typedef enum {
+ SGIF_FILTERMODE_MOVING_AVERAGE, // moving average
+} SGIF_FILTERMODE;
+
+// Specify the filter parameter. (The number of averaging for moving average, or the cutoff frequency for LPF/HPF.)
+
+typedef enum {
+ SGIF_FILTERPARA_AVE_1 = 0, // 1 time
+ SGIF_FILTERPARA_AVE_4, // 4 times
+ SGIF_FILTERPARA_AVE_16, // 16 times
+ SGIF_FILTERPARA_AVE_64, // 64 times
+ SGIF_FILTERPARA_AVE_256, // 256 times
+ SGIF_FILTERPARA_AVE_1024, // 1024 times
+ SGIF_FILTERPARA_AVE_4096, // 4096 times
+ SGIF_FILTERPARA_AVE_16384, // 16384 times
+ SGIF_FILTERPARA_AVE_65536, // 65536 times
+ SGIF_FILTERPARA_AVE_262144, // 262144 times
+
+}SGIF_FILTERPARA;
+
+// Set Trigger Mode
+typedef enum {
+ SGIF_TRIGGERMODE_EXT1, // external trigger 1
+ SGIF_TRIGGERMODE_EXT2, // external trigger 2
+} SGIF_TRIGGERMODE;
+
+// Set the Measurement Mode.
+typedef enum {
+ SGIF_CALCMODE_NORMAL, // normal
+ SGIF_CALCMODE_PEAKHOLD, // peak hold
+ SGIF_CALCMODE_BOTTOMHOLD, // bottom hold
+ SGIF_CALCMODE_PEAKTOPEAKHOLD, // peak-to-peak hold
+ SGIF_CALCMODE_SAMPLEHOLD, // sample hold
+} SGIF_CALCMODE;
+
+// Set Minimum Display Unit
+typedef enum {
+ SGIF_DISPLAYUNIT_0000_01MM = 0, // 0.01mm
+ SGIF_DISPLAYUNIT_000_001MM, // 0.001mm
+ SGIF_DISPLAYUNIT_00_0001MM, // 0.0001mm
+ SGIF_DISPLAYUNIT_0_00001MM, // 0.00001mm
+ SGIF_DISPLAYUNIT_00000_1UM, // 0.1um
+ SGIF_DISPLAYUNIT_0000_01UM, // 0.01um
+ SGIF_DISPLAYUNIT_000_001UM, // 0.001um
+
+} SGIF_DISPLAYUNIT;
+
+// Specify OUT
+typedef enum {
+ SGIF_OUTNO_01 = 0x0001, // OUT01
+ SGIF_OUTNO_02 = 0x0002, // OUT02
+ SGIF_OUTNO_03 = 0x0004, // OUT03
+ SGIF_OUTNO_04 = 0x0008, // OUT04
+ SGIF_OUTNO_ALL = 0x000F, // All OUTs
+} SGIF_OUTNO;
+
+// Set Storage (Cycle)
+typedef enum {
+ SGIF_STORAGECYCLE_1, // sampling rate x 1
+ SGIF_STORAGECYCLE_2, // sampling rate x 2
+ SGIF_STORAGECYCLE_5, // sampling rate x 5
+ SGIF_STORAGECYCLE_10, // sampling rate x 10
+ SGIF_STORAGECYCLE_20, // sampling rate x 20
+ SGIF_STORAGECYCLE_50, // sampling rate x 50
+ SGIF_STORAGECYCLE_100, // sampling rate x 100
+ SGIF_STORAGECYCLE_200, // sampling rate x 200
+ SGIF_STORAGECYCLE_500, // sampling rate x 500
+ SGIF_STORAGECYCLE_1000, // sampling rate x 1000
+ SGIF_STORAGECYCLE_TIMING, // Timing sync
+} SGIF_STORAGECYCLE;
+
+// Set Sampling Rate
+typedef enum {
+ //SG5000系列
+ SGIF_5000_SAMPLINGCYCLE_590KHZ, // 590kHz
+ SGIF_5000_SAMPLINGCYCLE_400KHZ, // 400kHz
+ SGIF_5000_SAMPLINGCYCLE_200KHZ, // 200kHz
+ SGIF_5000_SAMPLINGCYCLE_88KHZ, // 88kHz
+ SGIF_5000_SAMPLINGCYCLE_50KHZ, // 50kHz
+ SGIF_5000_SAMPLINGCYCLE_20KHZ, // 20kHz
+ SGIF_5000_SAMPLINGCYCLE_10KHZ, // 10kHz
+ SGIF_5000_SAMPLINGCYCLE_5KHZ, // 5kHz
+ SGIF_5000_SAMPLINGCYCLE_2KHZ, // 2kHz
+ SGIF_5000_SAMPLINGCYCLE_1KHZ, // 1kHz+
+
+ //SG3000系列
+ SGIF_3000_SAMPLINGCYCLE_88KHZ = 10, // 88kHz
+ SGIF_3000_SAMPLINGCYCLE_50KHZ, // 50kHz
+ SGIF_3000_SAMPLINGCYCLE_20KHZ, // 20kHz
+ SGIF_3000_SAMPLINGCYCLE_10KHZ, // 10kHz
+ SGIF_3000_SAMPLINGCYCLE_5KHZ, // 5kHz
+ //SGIF_3000_SAMPLINGCYCLE_2KHZ, // 2kHz
+ SGIF_3000_SAMPLINGCYCLE_1KHZ, // 1kHz
+
+ //SCI系列
+ SCI_SAMPLINGCYCLE_33KHZ = 30, // 33kHz
+ SCI_SAMPLINGCYCLE_20KHZ, // 20kHz
+ SCI_SAMPLINGCYCLE_15KHZ, // 15kHz
+ SCI_SAMPLINGCYCLE_10KHZ, // 10kHz
+ SCI_SAMPLINGCYCLE_5KHZ, // 5kHz
+ SCI_SAMPLINGCYCLE_2KHZ, // 2kHz
+ SCI_SAMPLINGCYCLE_1KHZ, // 1kHz
+ SCI_SAMPLINGCYCLE_05KHZ, // 0.5kHz
+} SGIF_SAMPLINGCYCLE;
+
+// Set Mutual interference prevention
+typedef enum {
+ SGIF_MUTUAL_INTERFERENCE_PREVENTION_OFF, // OFF
+ SGIF_MUTUAL_INTERFERENCE_PREVENTION_AB_ON, // AB-ON
+ SGIF_MUTUAL_INTERFERENCE_PREVENTION_ABC_ON, // ABC-ON
+} SGIF_MUTUAL_INTERFERENCE_PREVENTION;
+
+
+// Set Strobe Time
+typedef enum {
+ SGIF_STOROBETIME_2MS, // 2ms
+ SGIF_STOROBETIME_5MS, // 5ms
+ SGIF_STOROBETIME_10MS, // 10ms
+ SGIF_STOROBETIME_20MS, // 20ms
+} SGIF_STOROBETIME;
+
+// Mode Switch
+typedef enum {
+ SGIF_MODE_NORMAL, // normal mode
+ SGIF_MODE_COMMUNICATION, // setting mode
+} SGIF_MODE;
+
+
+//Encoder ext
+typedef enum {
+ SGIF_EmRunningMode_cont,//off
+ SGIF_EmRunningMode_time,
+ SGIF_EmRunningMode_trig,
+}SGIF_EmRunningMode;
+
+typedef enum {
+ SGIF_EmDirection_all,//+-
+ SGIF_EmDirection_pos,
+ SGIF_EmDirection_neg,
+}SGIF_EmDirection;
+
+typedef enum {
+ SGIF_EmEncoderInput_1x1,
+ SGIF_EmEncoderInput_2x1,
+ SGIF_EmEncoderInput_2x2,
+ SGIF_EmEncoderInput_2x4,
+}SGIF_EmEncoderInput;
+typedef enum {
+ SGIF_EmInputTime_100 = 100,
+ SGIF_EmInputTime_200 = 200,
+ SGIF_EmInputTime_500 = 500,
+ SGIF_EmInputTime_1000 = 1000,
+ SGIF_EmInputTime_2000 = 2000,
+ SGIF_EmInputTime_5000 = 5000,
+ SGIF_EmInputTime_10000 = 10000,
+ SGIF_EmInputTime_20000 = 20000,
+}SGIF_EmInputTime;
+
+
+// Measurement value
+typedef struct {
+ int OutNo; // OUT No(1-4)
+ SGIF_FLOATRESULT FloatResult; // valid or invalid data
+ float Value; // Measurement value
+} SGIF_FLOATVALUE_OUT;
+
+typedef struct {
+ SGIF_FLOATRESULT FloatResult; // valid or invalid data
+ float Value; // Measurement value
+} SGIF_FLOATVALUE;
+
+// IP address
+typedef struct {
+ IN_ADDR IPAddress;
+} SGIF_OPENPARAM_ETHERNET;
+
+//Mask Minimum Display Unit(0.01mm)
+#define MASKUNIT 100
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ EXP RC WINAPI SGIF_GetDeviceType(IN int DeviceID, OUT SGIF_DEVICE_TYPE* deviceType);
+
+ // Measured control commands
+ ///
+ /// \brief SGIF_GetCameraSpotType 光斑类型(不支持SCI)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param ControlType: 输出0:小光斑,1:大光斑
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetCameraSpotType(IN int DeviceID, OUT int *EissionSpotType);
+
+
+ ///////////////////////////////////////////////
+ // Measurement control commands
+ //
+ // Measured value output (single)
+ ///
+ /// \brief SGIF_GetCalcDataSingle 测量值输出
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号
+ /// \param CalcData: 测量值
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetCalcDataSingle(IN int DeviceID, IN int OutNo, OUT SGIF_FLOATVALUE_OUT * CalcData);
+
+ // Measured value output (multiple)
+ ///
+ /// \brief SGIF_GetCalcDataMulti 多个测量值输出
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号组合
+ /// \param CalcData: 测量值数组
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetCalcDataMulti(IN int DeviceID, IN SGIF_OUTNO OutNo, OUT SGIF_FLOATVALUE_OUT * CalcData);
+
+ // Measured value output (ALL)
+ ///
+ /// \brief SGIF_GetCalcDataALL 全部测量值输出
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param CalcData: 测量值数组
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetCalcDataALL(IN int DeviceID, OUT SGIF_FLOATVALUE_OUT * CalcData);
+
+ // Timing ON/OFF (single)
+ ///
+ /// \brief SGIF_SetTimingSingle 计时ON/OFF(一个)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号
+ /// \param OnOff: 开或关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetTimingSingle(IN int DeviceID, IN int OutNo, IN BOOL OnOff);
+
+ // Timing ON/OFF (multiple)
+ ///
+ /// \brief SGIF_SetTimingMulti 计时ON/OFF(多个)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号组合
+ /// \param OnOff: 开或关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetTimingMulti(IN int DeviceID, IN SGIF_OUTNO OutNo, IN BOOL OnOff);
+
+ // Timing ON/OFF (synchronous)
+ ///
+ /// \brief SGIF_SetTimingSync 计时ON/OFF(同步)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OnOff: 开或关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetTimingSync(IN int DeviceID, IN BOOL OnOff);
+
+ // Auto-zero ON/OFF (single)
+ ///
+ /// \brief SGIF_SetZeroSingle 自动归零(一个)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号
+ /// \param OnOff: 开或关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetZeroSingle(IN int DeviceID, IN int OutNo, IN BOOL OnOff);
+
+ // Auto-zero ON/OFF (multiple)
+ ///
+ /// \brief SGIF_SetZeroMulti 自动归零(多个)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号组合
+ /// \param OnOff: 开或关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetZeroMulti(IN int DeviceID, IN SGIF_OUTNO OutNo, IN BOOL OnOff);
+
+ // Auto-zero ON/OFF (synchronous)
+ ///
+ /// \brief SGIF_SetZeroSync 自动归零(同步)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OnOff: 开或关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetZeroSync(IN int DeviceID, IN BOOL OnOff);
+
+ // Measured value reset (single)
+ ///
+ /// \brief SGIF_SetResetSingle 重置(一个)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetResetSingle(IN int DeviceID, IN int OutNo);
+
+ // Measured value reset (multiple)
+ ///
+ /// \brief SGIF_SetResetMulti 重置(多个)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo: 输出OUT编号组合
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetResetMulti(IN int DeviceID, IN SGIF_OUTNO OutNo);
+
+ // Measured value reset (synchronous)
+ ///
+ /// \brief SGIF_SetResetSync 重置(同步)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetResetSync(IN int DeviceID);
+
+ // Program Change
+ ///
+ /// \brief SGIF_SetProgramNo 程序切换
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param ProgramNo: 程序编号(0到7)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetProgramNo(IN int DeviceID, IN int ProgramNo);
+
+ // Program Check
+ ///
+ /// \brief SGIF_GetProgramNo 程序确认
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param ProgramNo: 程序编号(0到7)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetProgramNo(IN int DeviceID, OUT int * ProgramNo);
+
+ // Starting the Data Storage
+ ///
+ /// \brief SGIF_DataStorageStart 数据存储开始
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_DataStorageStart(IN int DeviceID);
+
+ // Stopping the Data Storage
+ ///
+ /// \brief SGIF_DataStorageStop 数据存储停止
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_DataStorageStop(IN int DeviceID);
+
+ // Outputting the Data Storage
+ ///
+ /// \brief SGIF_DataStorageGetData 数据存储数据输出
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param NumOfBuffer 缓冲区大小(最多可接受多少个数据)
+ /// \param OutBuffer 数据数组
+ /// \param NumReceived 实际接收的数据个数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_DataStorageGetData(IN int DeviceID, IN int OutNo, IN int NumOfBuffer, OUT float * OutBuffer, OUT int *NumReceived);
+
+ // Initializing the Data Storage
+ ///
+ /// \brief SGIF_DataStorageInit 数据存储初始化
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_DataStorageInit(IN int DeviceID);
+
+ // Data Storage Accumulation Status Output
+ ///
+ /// \brief SGIF_DataStorageGetStatus 数据存储状态输出
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param lsStorage 存储状态
+ /// \param NumStorageData 各输出口存储数量数组
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_DataStorageGetStatus(IN int DeviceID, OUT BOOL * lsStorage, OUT int * NumStorageData);
+
+ ///////////////////////////////////////////////
+ // Setting change commands
+ //
+
+ // Set Tolerance
+ ///
+ /// \brief SGIF_SetTolerance 公差设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param UpperLimit 上限,传入为有效数字(去掉小数点后的整形)
+ /// \param LowerLimit 下限,传入为有效数字(去掉小数点后的整形)
+ /// \param Hystersys 滞后,传入为有效数字(去掉小数点后的整形)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetTolerance(IN int DeviceID, IN int OutNo, IN int UpperLimit, IN int LowerLimit, IN int Hystersys);
+
+ // Set ABLE
+ ///
+ /// \brief SGIF_SetAbleMode Able模式设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param AbleMode 模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetAbleMode(IN int DeviceID, IN int HeadNo, IN SGIF_ABLEMODE AbleMode);
+
+ // Set ABLE Control Range
+ ///
+ /// \brief SGIF_SetAbleMinMax Able控制范围设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param Min 下限
+ /// \param Max 上限
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetAbleMinMax(IN int DeviceID, IN int HeadNo, IN int Min, IN int Max);
+
+ // Set Detection mode
+ ///
+ /// \brief SGIF_SetMeasureMode 测量模式设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \MeasureMode 测量模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetMeasureMode(IN int DeviceID, IN int HeadNo, IN SGIF_MEASUREMODE MeasureMode);
+
+ // Set Base point
+ ///
+ /// \brief SGIF_SetBasicPoint 基准点设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param BasicPoint 基准点
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetBasicPoint(IN int DeviceID, IN int HeadNo, IN SGIF_BASICPOINT BasicPoint);
+
+ // Set Number of Times of Alarm Processing
+ ///
+ /// \brief SGIF_SetNumAlarm 警报数量设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param AlarmNum 警报数量
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetNumAlarm(IN int DeviceID, IN int HeadNo, IN int AlarmNum);
+
+ // Set Number of Times of Alarm Recovery
+ ///
+ /// \brief SGIF_SetNumRecovery 恢复数量设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param RecoveryNum 恢复次数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetNumRecovery(IN int DeviceID, IN int HeadNo, IN int RecoveryNum);
+
+ // Set Alarm Level
+ ///
+ /// \brief SGIF_SetAlarmLevel 警报级别设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param AlarmLevel 警报级别
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetAlarmLevel(IN int DeviceID, IN int HeadNo, IN int AlarmLevel);
+
+ // Starting the ABLE Calibration
+ ///
+ /// \brief SGIF_AbleStart Able校准开始
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_AbleStart(IN int DeviceID, IN int HeadNo);
+
+ // Finishing the ABLE Calibration
+ ///
+ /// \brief SGIF_AbleStop Able校准完成
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_AbleStop(IN int DeviceID);
+
+ // Stopping the ABLE Calibration
+ ///
+ /// \brief SGIF_AbleCancel Able校准停止
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_AbleCancel(IN int DeviceID);
+
+ // Set Mounting Mode
+ ///
+ /// \brief SGIF_SetReflectionMode 安装模式设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param ReflectionMode 反射模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetReflectionMode(IN int DeviceID, IN int HeadNo, IN SGIF_REFLECTIONMODE ReflectionMode);
+
+ // Set Mask
+ ///
+ /// \brief SGIF_SetMask 屏蔽设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param OnOff 开关
+ /// \param HeadNo 点位1
+ /// \param HeadNo 点位2
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetMask(IN int DeviceID, IN int HeadNo, IN BOOL OnOff, IN int Pos1, IN int Pos2);
+
+ // Set Median
+ ///
+ /// \brief SGIF_SetMedian 中位数设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param Median 中位数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetMedian(IN int DeviceID, IN int HeadNo, IN SGIF_MEDIAN Median);
+
+ // Set LASER CTRL group
+ ///
+ /// \brief SGIF_SetLaserCtrlGroup Laser Ctrl组设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param LaserCtrlGroup Laser Ctrl组
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetLaserCtrlGroup(IN int DeviceID, IN int HeadNo, IN SGIF_LASER_CTRL_GROUP LaserCtrlGroup);
+
+ // Set Mutual interference prevention group
+ ///
+ /// \brief SGIF_SetMutualInterferencePreventionGroup 防止互相干扰组设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param Group 组
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetMutualInterferencePreventionGroup(IN int DeviceID, IN int HeadNo, IN SGIF_MUTUAL_INTERFERENCE_PREVENTION_GROUP Group);
+
+ // Set Calculation method
+ ///
+ /// \brief SGIF_SetCalcMethod 计算方式设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param CalcMethod 计算方法
+ /// \param HeadOutNo 传感头输出编号
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetCalcMethod(IN int DeviceID, IN int OutNo, IN SGIF_CALCMETHOD CalcMethod, IN int HeadOutNo);
+
+ // Set Surface to be measured
+ ///
+ /// \brief SGIF_SetCalcTarget 测量目标设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param CalcTarget 计算标签
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetCalcTarget(IN int DeviceID, IN int OutNo, IN SGIF_CALCTARGET CalcTarget);
+
+ // Set OUT to be calculated (ADD, SUB)
+ ///
+ /// \brief SGIF_SetOutAddSub 待计算的OUT(Add,Sub)设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param AddSub1 待计算的OUT
+ /// \param AddSub2 待计算的OUT
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetOutAddSub(IN int DeviceID, IN int OutNo, IN int AddSub1, IN int AddSub2);
+
+ // Set OUT to be calculated (AVE, MAX, MIN, P-P)
+ ///
+ /// \brief SGIF_SetOutOperation 待计算的OUT(Ave,Max,Min,P-P)设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param TargetOut 多个OUT组合
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetOutOperation(IN int DeviceID, IN int OutNo, IN SGIF_OUTNO TargetOut);
+
+ // Set Scaling
+ ///
+ /// \brief SGIF_SetScaling 缩放设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param InputValue1 点1的测量值(输入值),传有效数字(去掉小数点后的整形)
+ /// \param OutputValue1 点1的显示值(输出值),传有效数字(去掉小数点后的整形)
+ /// \param InputValue2 点2的测量值(输入值),传有效数字(去掉小数点后的整形)
+ /// \param OutputValue2 点2的显示值(输出值),传有效数字(去掉小数点后的整形)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetScaling(IN int DeviceID, IN int OutNo, IN int InputValue1, IN int OutputValue1, IN int InputValue2, IN int OutputValue2);
+
+ // Set Filter Mode
+ ///
+ /// \brief SGIF_SetFilter 滤波器设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param FilterMode 滤波模式
+ /// \param FilterPara 滤波参数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetFilter(IN int DeviceID, IN int OutNo, IN SGIF_FILTERMODE FilterMode, IN SGIF_FILTERPARA FilterPara);
+
+ // Set Trigger Mode
+ ///
+ /// \brief SGIF_SetTriggerMode 触发模式设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param TriggerMode 触发模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetTriggerMode(IN int DeviceID, IN int OutNo, IN SGIF_TRIGGERMODE TriggerMode);
+
+ // Set Offset
+ ///
+ /// \brief SGIF_SetOffset 偏移设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param Offset 偏移量
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetOffset(IN int DeviceID, IN int OutNo, IN int Offset);
+
+ // Set Calculation Mode
+ ///
+ /// \brief SGIF_SetCalcMode 检测模式(测量模式)设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param CalcMode 检测模式编号
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetCalcMode(IN int DeviceID, IN int OutNo, IN SGIF_CALCMODE CalcMode);
+
+ // Set Minimum Display Unit
+ ///
+ /// \brief SGIF_SetDisplayUnit 设定显示单位设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param DisplayUnit 显示单位
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetDisplayUnit(IN int DeviceID, IN int OutNo, IN SGIF_DISPLAYUNIT DisplayUnit);
+
+ // Set Synchronization
+ ///
+ /// \brief SGIF_SetSynchronization 同步设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param OnOff 开关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetSynchronization(IN int DeviceID, IN int OutNo, IN BOOL OnOff);
+
+ // Set Storage (OUT No. specification)
+ ///
+ /// \brief SGIF_SetStorageTarget 存储(OUT编号规格)设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param OnOff 开关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetStorageTarget(IN int DeviceID, IN int OutNo, IN BOOL OnOff);
+
+ // Set Sampling Rate
+ ///
+ /// \brief SGIF_SetSamplingCycle 采样周期设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param SamplingCycle 采样周期
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetSamplingCycle(IN int DeviceID, IN SGIF_SAMPLINGCYCLE SamplingCycle);
+
+ // Set Mutual Interference Prevention
+ ///
+ /// \brief SGIF_SetMutualInterferencePrevention 防止互相干扰组设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OnOff 组设定
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetMutualInterferencePrevention(IN int DeviceID, IN SGIF_MUTUAL_INTERFERENCE_PREVENTION OnOff);
+
+ // Set Strobe Time
+ ///
+ /// \brief SGIF_SetStrobeTime 选通时间设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param StrobeTime 选通时间
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetStrobeTime(IN int DeviceID, IN SGIF_STOROBETIME StrobeTime);
+
+ // Set Data Storage
+ ///
+ /// \brief SGIF_SetDataStorage 数据存储设定
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param NumStorage 待存储数据的编号
+ /// \param StorageCycle 存储周期
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetDataStorage(IN int DeviceID, IN int NumStorage, IN SGIF_STORAGECYCLE StorageCycle);
+
+ // EncoderSetting
+ ///
+ /// \brief SGIF_SetRunningMode 运行模式设置(不支持SCI设备)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param runningmode 运行模式 0:OFF/1:定时/2:触发
+ /// \param CatchDirection 检测方向 0:正负计时/1:正计时/2:负计时
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetRunningMode(IN int DeviceID, IN SGIF_EmRunningMode Runningmode, IN SGIF_EmDirection CatchDirection);
+
+
+ // EncoderInputSetting
+ ///
+ /// \brief SGIF_SetEncoderMode 编码器输入模式设置(不支持SCI设备)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param Inputmode 运行模式 0:1相1递增/1:2相1递增/2:2相2递增,3:2相4递增
+ /// \param MinInputTime 最小输入时间
+ /// \param TrigInterval 触发间隔
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+
+ EXP RC WINAPI SGIF_SetEncoderMode(IN int DeviceID, IN SGIF_EmEncoderInput Inputmode,IN SGIF_EmInputTime InputTime,IN int TrigInterval);
+
+ // SGIF_SetFormula
+ ///
+ /// \brief SGIF_SetFormula 设置配方
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param filePath 配方路径
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ /// derive
+
+ EXP RC WINAPI SGIF_SetFormula(IN int DeviceID, IN char* filePath );
+
+ // SGIF_SetFormula
+ ///
+ /// \brief SGIF_SetFormula 设置配方
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param filePath 配方路径
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_DeriveFormula(IN int DeviceID, IN char* filePath);
+ ///////////////////////////////////////////////
+ // Setting confirmation commands
+ //
+ // Get Tolerance
+ ///
+ /// \brief SGIF_GetTolerance 公差设定获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param UpperLimit 上限,传出为有效数字(去掉小数点后的整形)
+ /// \param LowerLimit 下限,传出为有效数字(去掉小数点后的整形)
+ /// \param Hysteresis 滞后,传出为有效数字(去掉小数点后的整形)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetTolerance(IN int DeviceID, IN int OutNo, OUT int * UpperLimit, OUT int * LowerLimit, OUT int * Hysteresis);
+
+ // Get ABLE
+ ///
+ /// \brief SGIF_GetAbleMode Able设定获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param AbleMode Able模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetAbleMode(IN int DeviceID, IN int HeadNo, OUT SGIF_ABLEMODE * AbleMode);
+
+ // Get ABLE Control Range
+ ///
+ /// \brief SGIF_GetAbleMinMax Able控制范围获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param Min 最小值
+ /// \param Max 最大值
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetAbleMinMax(IN int DeviceID, IN int HeadNo, OUT int * Min, OUT int * Max);
+
+ // Get Detection mode
+ ///
+ /// \brief SGIF_GetMeasureMode 测量模式获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param MeasureMode 测量模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetMeasureMode(IN int DeviceID, IN int HeadNo, OUT SGIF_MEASUREMODE * MeasureMode);
+
+ // Get Base point
+ ///
+ /// \brief SGIF_GetBasicPoint 基准点获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param BasicPoint 基准点
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetBasicPoint(IN int DeviceID, IN int HeadNo, OUT SGIF_BASICPOINT * BasicPoint);
+
+ // Get Number of Times of Alarm Processing
+ ///
+ /// \brief SGIF_GetNumAlarm 警报处理次数获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param AlarmNum 警报次数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetNumAlarm(IN int DeviceID, IN int HeadNo, OUT int * AlarmNum);
+
+ // Get Number of Times of Alarm Recovery
+ ///
+ /// \brief SGIF_GetNumRecovery 警报恢复次数获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param RecoveryNum 恢复次数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetNumRecovery(IN int DeviceID, IN int HeadNo, OUT int * RecoveryNum);
+
+ // Get Alarm Level
+ ///
+ /// \brief SGIF_GetAlarmLevel 警报级别获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param AlarmLevel 警报级别
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetAlarmLevel(IN int DeviceID, IN int HeadNo, OUT int * AlarmLevel);
+
+ // Get Mounting Mode
+ ///
+ /// \brief SGIF_GetReflectionMode 安装模式获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param ReflectionMode 反射模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetReflectionMode(IN int DeviceID, IN int HeadNo, OUT SGIF_REFLECTIONMODE * ReflectionMode);
+
+ // Get Mask
+ ///
+ /// \brief SGIF_GetMask 屏蔽设定获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param OnOff 开关
+ /// \param Pos1 位置1
+ /// \param Pos2 位置2
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetMask(IN int DeviceID, IN int HeadNo, OUT BOOL * OnOff, OUT int * Pos1, OUT int * Pos2);
+
+ // Get Median
+ ///
+ /// \brief SGIF_GetMedian 中位数获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param Median 中位数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetMedian(IN int DeviceID, IN int HeadNo, OUT SGIF_MEDIAN * Median);
+
+ // Get LASER CTRL group
+ ///
+ /// \brief SGIF_GetLaserCtrlGroup Laser Ctrl组获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param LaserCtrlGroup Laser Ctrl组
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetLaserCtrlGroup(IN int DeviceID, IN int HeadNo, OUT SGIF_LASER_CTRL_GROUP * LaserCtrlGroup);
+
+ // Get Mutual interference prevention group
+ ///
+ /// \brief SGIF_GetMutualInterferencePreventionGroup 防止互相干扰组获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 传感头编号
+ /// \param Group 组
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetMutualInterferencePreventionGroup(IN int DeviceID, IN int HeadNo, OUT SGIF_MUTUAL_INTERFERENCE_PREVENTION_GROUP * Group);
+
+ // Get Calculation method
+ ///
+ /// \brief SGIF_GetCalcMethod 计算方式获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param CalcMethod 计算方法
+ /// \param HeadOutNo 传感头或OUT编号
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetCalcMethod(IN int DeviceID, IN int OutNo, OUT SGIF_CALCMETHOD * CalcMethod, OUT int * HeadOutNo);
+
+ // Get Surface to be measured
+ ///
+ /// \brief SGIF_GetCalcTarget 测量目标获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param CalcTarget 计算标签
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetCalcTarget(IN int DeviceID, IN int OutNo, OUT SGIF_CALCTARGET * CalcTarget);
+
+ // Get OUT to be calculated (ADD, SUB)
+ ///
+ /// \brief SGIF_GetOutAddSub 待计算的OUT(Add,Sub)获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param AddSub1 待计算的OUT编号1
+ /// \param AddSub2 待计算的OUT编号2
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetOutAddSub(IN int DeviceID, IN int OutNo, OUT int * AddSub1, OUT int * AddSub2);
+
+ // Get OUT to be calculated (AVE, MAX, MIN, P-P)
+ ///
+ /// \brief SGIF_GetOutOperation 待计算的OUT(Ave,Max,Min,P-P)获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param TargetOut 多个OUT或HEAD组合
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetOutOperation(IN int DeviceID, IN int OutNo, OUT SGIF_OUTNO * TargetOut);
+
+ // Get Scaling
+ ///
+ /// \brief SGIF_GetScaling 缩放设定获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param InputValue1 点1的测量值(输入值),传出为有效数字(去掉小数点后的整形)
+ /// \param OutputValue1 点1的显示值(输出值),传出为有效数字(去掉小数点后的整形)
+ /// \param InputValue2 点2的测量值(输入值),传出为有效数字(去掉小数点后的整形)
+ /// \param OutputValue2 点2的显示值(输出值),传出为有效数字(去掉小数点后的整形)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetScaling(IN int DeviceID, IN int OutNo, OUT int * InputValue1, OUT int * OutputValue1, OUT int * InputValue2, OUT int * OutputValue2);
+
+ // Get Filter Mode
+ ///
+ /// \brief SGIF_GetFilter 滤波器设定获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param FilterMode 滤波器模式
+ /// \param FilterPara 滤波参数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetFilter(IN int DeviceID, IN int OutNo, OUT SGIF_FILTERMODE * FilterMode, OUT SGIF_FILTERPARA * FilterPara);
+
+ // Get Trigger Mode
+ ///
+ /// \brief SGIF_GetTriggerMode 触发模式获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param TriggerMode 触发模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetTriggerMode(IN int DeviceID, IN int OutNo, OUT SGIF_TRIGGERMODE * TriggerMode);
+
+ // Get Offset
+ ///
+ /// \brief SGIF_GetOffset 偏移获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param Offset 偏移量
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetOffset(IN int DeviceID, IN int OutNo, OUT int * Offset);
+
+ // Get Calculation Mode
+ ///
+ /// \brief SGIF_GetCalcMode 检测模式(测量模式)获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param CalcMode 测量模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetCalcMode(IN int DeviceID, IN int OutNo, OUT SGIF_CALCMODE * CalcMode);
+
+ // Get Minimum Display Unit
+ ///
+ /// \brief SGIF_GetDisplayUnit 显示最小单位获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param DisplayUnit 显示最小单位
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetDisplayUnit(IN int DeviceID, IN int OutNo, OUT SGIF_DISPLAYUNIT * DisplayUnit);
+
+ // Get Synchronization
+ ///
+ /// \brief SGIF_GetSynchronization 同步设定获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param OnOff 开关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetSynchronization(IN int DeviceID, IN int OutNo, OUT BOOL * OnOff);
+
+ // Get Storage (OUT No. specification)
+ ///
+ /// \brief SGIF_GetStorageTarget 存储(OUT编号设定)获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 输出OUT编号
+ /// \param OnOff 开关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetStorageTarget(IN int DeviceID, IN int OutNo, OUT BOOL * OnOff);
+
+ // Get Sampling Rate
+ ///
+ /// \brief SGIF_GetSamplingCycle 采样周期获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param SamplingCycle 采样周期
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetSamplingCycle(IN int DeviceID, OUT SGIF_SAMPLINGCYCLE * SamplingCycle);
+
+ // Get Mutual Interference Prevention
+ ///
+ /// \brief SGIF_GetMutualInterferencePrevention 防止互相干扰获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OnOff 开关
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetMutualInterferencePrevention(IN int DeviceID, OUT SGIF_MUTUAL_INTERFERENCE_PREVENTION * OnOff);
+
+ // Get Strobe Time
+ ///
+ /// \brief SGIF_GetStrobeTime 选通时间获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutputFormat 输出形式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetStrobeTime(IN int DeviceID, OUT SGIF_STOROBETIME * StrobeTime);
+
+ // Get Data Storage
+ ///
+ /// \brief SGIF_GetDataStorage 数据存储获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param NumStorage 带存储数据编号
+ /// \param StorageCycle 存储周期
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetDataStorage(IN int DeviceID, OUT int * NumStorage, OUT SGIF_STORAGECYCLE * StorageCycle);
+
+ // Get Active head count
+ ///
+ /// \brief SGIF_GetNumOfUsedHeads 主动OUT计数获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param NumOfUsedHeads 主动OUT/传感头计数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetNumOfUsedHeads(IN int DeviceID, OUT int * NumOfUsedHeads);
+
+ // Get Active OUT count
+ ///
+ /// \brief SGIF_GetNumOfUsedOut 主动传感头计数获取
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param NumOfUsedHeads 主动OUT/传感头计数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetNumOfUsedOut(IN int DeviceID, OUT int * NumOfUsedOut);
+
+ // Get Active Running Time
+ ///
+ /// \brief SGIF_GetDeviceRuningTime 获取相机运行时长,单位s
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param HeadNo 0:控制器; 1-4:传感头编号
+ /// \param RuningTime 运行时间
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetDeviceRuningTime(IN int DeviceID, IN int HeadNo, OUT unsigned int * RuningTime);
+
+ ///////////////////////////////////////////////
+ // Other commands
+ //
+ // Opens the Ethernet device.
+ ///
+ /// \brief SGIF_OpenDeviceETHER 打开设备网络连接
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OpenParam 网络连接参数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_OpenDeviceETHER(IN int DeviceID, SGIF_OPENPARAM_ETHERNET * OpenParam,DWORD TIMEOUT=3);
+
+ // Closes the currently open device.
+ ///
+ /// \brief SGIF_CloseDevice 关闭设备网络连接
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_CloseDevice(IN int DeviceID);
+
+ ///////////////////////////////////////////////
+ // Mode change commands
+ //
+ // Mode Switch
+ ///
+ /// \brief SGIF_SetMode 模式切换
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param Mode 模式
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetMode(IN int DeviceID, IN SGIF_MODE Mode);
+
+ EXP RC WINAPI SGIF_Refresh(IN int DeviceID);
+
+ //////////////////////////////////////////////一次回调相关///////////////////////////////////////
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutBuffer 数据数组
+ /// \param NumReceived 实际接收的数据个数
+ ///
+ typedef void(*SGIF_DataStorageOneTimeCallBack)(OUT int DeviceID);
+
+ ///////////////////////////////////////////////
+ /// \brief SGIF_SetOneDataStorage 注册一次回调
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param SGIF_BatchOneTimeCallBack 回调函数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetOneDataStorage(IN int DeviceID, IN SGIF_DataStorageOneTimeCallBack CallFunc);
+ //////////////////////////////////////////////////////////////////////////////////////////////
+
+ // Get encoder store value
+ /// \brief SGIF_GetEncoderStoreValue编码器值存储数据输出(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 编码器编号
+ /// \param NumOfBuffer 缓冲区大小(最多可接受多少个数据)
+ /// \param OutBuffer 数据数组
+ /// \param NumReceived 实际接收的数据个数
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetEncoderStoreValue(IN int DeviceID, IN int OutNo, IN int NumOfBuffer, OUT int * OutBuffer, OUT int *NumReceived);
+
+ // Get encoder value
+ /// \brief SGIF_GetEncoderCurrentValue 读取编码器当前值(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 编码器编号(1-3)
+ /// \param OutBuffer 数据指针
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetEncoderCurrentValue(IN int DeviceID, IN int OutNo, OUT int * OutBuffer);
+
+ // encoder Reset
+ /// \brief SGIF_EncoderReset 编码器值置零(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 编码器编号(1-3)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_EncoderReset(IN int DeviceID, IN int OutNo);
+
+ // Set Encoder Number
+ /// \brief SGIF_SetEncoderNumber 选择编码器(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 编码器编号(1-3)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetEncoderNumber(IN int DeviceID, IN int OutNo);
+
+ // Get encoder number
+ /// \brief SGIF_GetEncoderNumber 读取设置的编码器编号(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutBuffer 数据指针
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetEncoderNumber(IN int DeviceID, OUT int * OutBuffer);
+
+ //Set Encoder Parameters
+ /// \brief SGIF_SetEncoderParameters设置编码器参数(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 编码器编号(1-3)
+ /// \param InputMode 输入模式(0-3)
+ /// \param InputTime 最低输入时间(100,200,500,1000,2000,5000,10000,20000)(ns)
+ /// \param interval 间隔(1-10000)
+ /// \param OperatingMode 运行模式(0-2)
+ /// \param DetectionDirection 检测方向(0-2)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetEncoderParameters(IN int DeviceID, IN int OutNo, IN int InputMode, IN int InputTime, IN int interval, IN int OperatingMode, IN int DetectionDirection);
+
+ //Get Encoder Parameters
+ /// \brief SGIF_GetEncoderParameters读取编码器参数(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 编码器编号(1-3)
+ /// \param InputMode 输入模式(0-3)
+ /// \param InputTime 最低输入时间(100,200,500,1000,2000,5000,10000,20000)(ns)
+ /// \param interval 间隔(1-10000)
+ /// \param OperatingMode 运行模式(0-2)
+ /// \param DetectionDirection 检测方向(0-2)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetEncoderParameters(IN int DeviceID, IN int OutNo, OUT int * InputMode, OUT int * InputTime, OUT int * interval, OUT int * OperatingMode, OUT int * DetectionDirection);
+
+ //Set Analog Output
+ /// \brief SGIF_SetAnalogOutput 设置模拟量输出(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 模拟量编号(1-3)
+ /// \param OutputChannel 输出通道(0-3)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetAnalogOutput(IN int DeviceID, IN int OutNo, IN int OutputChannel);
+
+ // Retrieve Analog Output Channel Number
+ /// \brief SGIF_GetAnalogOutputChannel 获取模拟量输出通道编号(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 模拟量编号(1-3)
+ /// \param OutBuffer 数据指针
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetAnalogOutputChannel(IN int DeviceID, IN int OutNo, OUT int * OutBuffer);
+
+ //Set IO Digital Output
+ /// \brief SGIF_SetIODigitalOutput 设置IO数字输出(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 数字输出编号(1-4)
+ /// \param Level 输出位数(0:OFF,1:HI,2:GO,3:LO,4:STROBE)
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_SetIODigitalOutput(IN int DeviceID, IN int OutNo, IN int Level);
+
+ // Retrieve IO Digital Output Channel Number
+ /// \brief SGIF_GetIOOutputChannel 获取IO数字量输出通道编号(仅SCI设备支持)
+ /// \param DeviceID 设备ID号,范围为0-63.
+ /// \param OutNo 数字输出编号(1-4)
+ /// \param OutBuffer 数据指针
+ /// \return
+ /// >0: 失败.
+ /// =0: 成功.
+ ///
+ EXP RC WINAPI SGIF_GetIOOutputChannel(IN int DeviceID, IN int OutNo, OUT int * OutBuffer);
+#ifdef __cplusplus
+}
+#endif
--
Gitblit v1.9.3