1、对串口获取返回值
2、新增获取批量点 3、新增测试用例 4、对对端设备进行调试
This commit is contained in:
+430
-357
File diff suppressed because it is too large
Load Diff
+186
-102
@@ -79,7 +79,8 @@ enum HSI_STATUS
|
||||
HSI_STATUS_VP_TIMEOUT = 350,
|
||||
HSI_STATUS_VP_IMAGEPROCESS_FAIL,
|
||||
|
||||
HSI_ACS_OK=400,// ACS命令成功
|
||||
HSI_ACS_OK=400,
|
||||
// ACS命令成功
|
||||
HSI_ACS_ERROR
|
||||
};
|
||||
|
||||
@@ -107,43 +108,74 @@ enum HSI_EVENT_FUNCTION_ID // EventData
|
||||
{
|
||||
// Send Receive
|
||||
// V4.2 & V4.3 +
|
||||
HSI_EVENT_DONE = 0,// N/A N/A
|
||||
HSI_EVENT_TAKE_HIT = 1,// N/A N/A
|
||||
HSI_EVENT_ERASE_HIT = 2,// N/A N/A
|
||||
HSI_EVENT_TIME_CRITICAL = 3,// "ON", or "OFF" N/A
|
||||
HSI_EVENT_ZOOM_IN = 4,// "MAX", "COARSE", or "FINE" N/A
|
||||
HSI_EVENT_ZOOM_OUT = 5,// "MAX", "COARSE", or "FINE" N/A
|
||||
HSI_EVENT_REFRESH_LIVE_VIEW = 6,// N/A N/A
|
||||
HSI_EVENT_UPDATE_READOUTS = 7,// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" N/A
|
||||
HSI_EVENT_READ_MC_POSITION = 8,// "AxisFlags" "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}"
|
||||
HSI_EVENT_MOVE_MC_POSITION = 9,// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed},%1d{bWait}" N/A
|
||||
HSI_EVENT_CONVERT_MC_TO_GLOBAL = 10,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_UPDATE_STATUS_MESSAGE = 11,// N/A N/A
|
||||
HSI_EVENT_OPENFILE_DLG = 12,// N/A "FileName"
|
||||
HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13,// N/A N/A
|
||||
HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14,// N/A N/A
|
||||
HSI_EVENT_DISPLAY_OK_MESSAGE = 15,// N/A N/A
|
||||
HSI_EVENT_DONE = 0,
|
||||
// N/A N/A
|
||||
HSI_EVENT_TAKE_HIT = 1,
|
||||
// N/A N/A
|
||||
HSI_EVENT_ERASE_HIT = 2,
|
||||
// N/A N/A
|
||||
HSI_EVENT_TIME_CRITICAL = 3,
|
||||
// "ON", or "OFF" N/A
|
||||
HSI_EVENT_ZOOM_IN = 4,
|
||||
// "MAX", "COARSE", or "FINE" N/A
|
||||
HSI_EVENT_ZOOM_OUT = 5,
|
||||
// "MAX", "COARSE", or "FINE" N/A
|
||||
HSI_EVENT_REFRESH_LIVE_VIEW = 6,
|
||||
// N/A N/A
|
||||
HSI_EVENT_UPDATE_READOUTS = 7,
|
||||
// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" N/A
|
||||
HSI_EVENT_READ_MC_POSITION = 8,
|
||||
// "AxisFlags" "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}"
|
||||
HSI_EVENT_MOVE_MC_POSITION = 9,
|
||||
// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed},%1d{bWait}" N/A
|
||||
HSI_EVENT_CONVERT_MC_TO_GLOBAL = 10,
|
||||
// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_UPDATE_STATUS_MESSAGE = 11,
|
||||
// N/A N/A
|
||||
HSI_EVENT_OPENFILE_DLG = 12,
|
||||
// N/A "FileName"
|
||||
HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13,
|
||||
// N/A N/A
|
||||
HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14,
|
||||
// N/A N/A
|
||||
HSI_EVENT_DISPLAY_OK_MESSAGE = 15,
|
||||
// N/A N/A
|
||||
|
||||
// V4.3 + Only
|
||||
HSI_EVENT_DEBUG_LOG = 20,// "%s" N/A
|
||||
HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21,// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A
|
||||
HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_TO_TABLE_POINT = 23,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_OUT_TABLE_POINT = 24,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_TO_TABLE_VECTOR = 25,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_OUT_TABLE_VECTOR = 26,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_DEBUG_LOG = 20,
|
||||
// "%s" N/A
|
||||
HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21,
|
||||
// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A
|
||||
HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22,
|
||||
// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_TO_TABLE_POINT = 23,
|
||||
// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_OUT_TABLE_POINT = 24,
|
||||
// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_TO_TABLE_VECTOR = 25,
|
||||
// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_CONVERT_ROT_OUT_TABLE_VECTOR = 26,
|
||||
// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
|
||||
HSI_EVENT_ILLUMINATION_REFRESH = 27,
|
||||
HSI_EVENT_ILLUMINATION_LOCK = 28,
|
||||
HSI_EVENT_ILLUMINATION_STORE_SET = 29,
|
||||
HSI_EVENT_ILLUMINATION_RESTORE_SET = 30,
|
||||
HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_SELECT_LAMP = 35,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY = 36,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_GET_LAMP_INTENSITY = 37,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_SET_LAMP_CALIBRATION_OVERRIDE = 38,// "%d"
|
||||
HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_SELECT_LAMP = 35,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY = 36,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_GET_LAMP_INTENSITY = 37,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_SET_LAMP_CALIBRATION_OVERRIDE = 38,
|
||||
// "%d"
|
||||
HSI_EVENT_ILLUMINATION_NEXT_RING = 39,
|
||||
HSI_EVENT_ILLUMINATION_PREV_RING = 40,
|
||||
HSI_EVENT_ILLUMINATION_NEXT_SECTOR = 41,
|
||||
@@ -154,31 +186,49 @@ enum HSI_EVENT_FUNCTION_ID // EventData
|
||||
HSI_EVENT_ILLUMINATION_ALLOFF = 46,
|
||||
HSI_EVENT_ILLUMINATION_ALLON = 47,
|
||||
HSI_EVENT_ILLUMINATION_UNLOCK = 48,
|
||||
HSI_EVENT_IS_PROGRAMMING_MODE = 49,// 1/0
|
||||
HSI_EVENT_IS_PORTLOCK_DCC = 50,// 1/0
|
||||
HSI_EVENT_IS_ROTAB_ENABLED = 51,// 1/0
|
||||
HSI_EVENT_IS_TIME_CRITICAL = 52, // 1/0
|
||||
HSI_EVENT_IS_PROGRAMMING_MODE = 49,
|
||||
// 1/0
|
||||
HSI_EVENT_IS_PORTLOCK_DCC = 50,
|
||||
// 1/0
|
||||
HSI_EVENT_IS_ROTAB_ENABLED = 51,
|
||||
// 1/0
|
||||
HSI_EVENT_IS_TIME_CRITICAL = 52,
|
||||
// 1/0
|
||||
HSI_EVENT_CONVERT_MM_TO_GLOBAL = 53,
|
||||
HSI_EVENT_CONVERT_GLOBAL_TO_MC = 54,
|
||||
HSI_EVENT_LASER_FOCUS_ENABLE = 55,// "%d" 0 = not available, 1 = available
|
||||
HSI_EVENT_MOVE_POINT = 56,// N/A N/A
|
||||
HSI_EVENT_LASER_FOCUS_ENABLE = 55,
|
||||
// "%d" 0 = not available, 1 = available
|
||||
HSI_EVENT_MOVE_POINT = 56,
|
||||
// N/A N/A
|
||||
HSI_EVENT_MAG_CHANGED = 57,
|
||||
HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY_IN_MACHINE_LEVELx100 = 58,// "%d" //PR251359-- Instructed to "Please focus on slide" but it's rather unhelpfully turned the lights off for us.
|
||||
HSI_EVENT_DCC_SCAN_POINTS_AVAILABLE = 59,// "%d" = more to come, 1 = last set N/A
|
||||
HSI_EVENT_ILLUMINATION_IS_ALL_OFF = 60,// 1/0 //PR253777-- Sensilight does not work if the target has 'ALL OFF' for illum setting--4/16/2008
|
||||
HSI_EVENT_ILLUMINATION_DECREASE_ALL_NONZERO = 61,// Sensilight command that wont change a lamp currently set to zero
|
||||
HSI_EVENT_ILLUMINATION_INCREASE_ALL_NONZERO = 62,// Sensilight command that wont change a lamp currently set to zero22
|
||||
HSI_EVENT_LP_QUALITY = 63,// "%d" 0-100%
|
||||
HSI_EVENT_TP_QUALITY = 64,// "%d" 0-100%
|
||||
HSI_EVENT_VP_QUALITY = 65,// "%d" 0-100%
|
||||
HSI_EVENT_FLYMODE_MOVE_COMPLETE = 66,// A queued flymode move has completed
|
||||
HSI_EVENT_PENDANT_SPEED_PERCENT = 67,// 108336 HMV : Add calls to HSI.H for Speed
|
||||
HSI_EVENT_PENDANT_AXES_SELECTED = 68,// 108335 HMV : Need to add calls to the HSI.H for Stacked Rotary
|
||||
HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY_IN_MACHINE_LEVELx100 = 58,
|
||||
// "%d" //PR251359-- Instructed to "Please focus on slide" but it's rather unhelpfully turned the lights off for us.
|
||||
HSI_EVENT_DCC_SCAN_POINTS_AVAILABLE = 59,
|
||||
// "%d" = more to come, 1 = last set N/A
|
||||
HSI_EVENT_ILLUMINATION_IS_ALL_OFF = 60,
|
||||
// 1/0 //PR253777-- Sensilight does not work if the target has 'ALL OFF' for illum setting--4/16/2008
|
||||
HSI_EVENT_ILLUMINATION_DECREASE_ALL_NONZERO = 61,
|
||||
// Sensilight command that wont change a lamp currently set to zero
|
||||
HSI_EVENT_ILLUMINATION_INCREASE_ALL_NONZERO = 62,
|
||||
// Sensilight command that wont change a lamp currently set to zero22
|
||||
HSI_EVENT_LP_QUALITY = 63,
|
||||
// "%d" 0-100%
|
||||
HSI_EVENT_TP_QUALITY = 64,
|
||||
// "%d" 0-100%
|
||||
HSI_EVENT_VP_QUALITY = 65,
|
||||
// "%d" 0-100%
|
||||
HSI_EVENT_FLYMODE_MOVE_COMPLETE = 66,
|
||||
// A queued flymode move has completed
|
||||
HSI_EVENT_PENDANT_SPEED_PERCENT = 67,
|
||||
// 108336 HMV : Add calls to HSI.H for Speed
|
||||
HSI_EVENT_PENDANT_AXES_SELECTED = 68,
|
||||
// 108335 HMV : Need to add calls to the HSI.H for Stacked Rotary
|
||||
HSI_EVENT_MOTION = 500,
|
||||
HSI_EVENT_MOTION_DCC_HOME = 501,
|
||||
HSI_EVENT_MOTION_FOCUS_HOME = 502,
|
||||
HSI_EVENT_MOTION_EMERGENT_STOP = 503,
|
||||
HSI_EVENT_SHUTDOWN_ = 999,// N/A N/A
|
||||
HSI_EVENT_SHUTDOWN_ = 999,
|
||||
// N/A N/A
|
||||
HSI_EVENT_MOTION_DRIVER_ALARM = 1000,
|
||||
HSI_EVENT_MOTION_PROBE = 1001,
|
||||
HSI_EVENT_MOTION_DISPENSER = 1002
|
||||
@@ -269,21 +319,36 @@ enum HSI_MOTION_TYPE
|
||||
|
||||
enum HSI_MOTION_AXIS_TYPE
|
||||
{
|
||||
HSI_MOTION_AXIS_X = 0x0001,// This is the default "Sensor level" X Axis - use on single X axis machines
|
||||
HSI_MOTION_AXIS_Y = 0x0002,// This is the default "Sensor level" Y Axis - use on single Y axis machines
|
||||
HSI_MOTION_AXIS_Z = 0x0004,// This is the default "Sensor level" Z Axis - use on single Z axis machines
|
||||
HSI_MOTION_AXIS_R = 0x0008,// This is the default "Sensor level" R Axis - use on single R axis machines
|
||||
HSI_MOTION_AXIS_X1 = 0x0010,// This is the 1st X Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Y1 = 0x0020,// This is the 1st Y Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Z1 = 0x0040,// This is the 1st Z Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_R1 = 0x0080,// This is the 1st R Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_X2 = 0x0100,// This is the 2nd X Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Y2 = 0x0200,// This is the 2nd Y Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Z2 = 0x0400,// This is the 2nd Z Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_R2 = 0x0800,// This is the 2nd R Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_X3 = 0x1000,// This is the 3rd X Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Y3 = 0x2000,// This is the 3rd Y Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Z3 = 0x4000,// This is the 3rd Z Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_X = 0x0001,
|
||||
// This is the default "Sensor level" X Axis - use on single X axis machines
|
||||
HSI_MOTION_AXIS_Y = 0x0002,
|
||||
// This is the default "Sensor level" Y Axis - use on single Y axis machines
|
||||
HSI_MOTION_AXIS_Z = 0x0004,
|
||||
// This is the default "Sensor level" Z Axis - use on single Z axis machines
|
||||
HSI_MOTION_AXIS_R = 0x0008,
|
||||
// This is the default "Sensor level" R Axis - use on single R axis machines
|
||||
HSI_MOTION_AXIS_X1 = 0x0010,
|
||||
// This is the 1st X Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Y1 = 0x0020,
|
||||
// This is the 1st Y Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Z1 = 0x0040,
|
||||
// This is the 1st Z Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_R1 = 0x0080,
|
||||
// This is the 1st R Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_X2 = 0x0100,
|
||||
// This is the 2nd X Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Y2 = 0x0200,
|
||||
// This is the 2nd Y Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Z2 = 0x0400,
|
||||
// This is the 2nd Z Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_R2 = 0x0800,
|
||||
// This is the 2nd R Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_X3 = 0x1000,
|
||||
// This is the 3rd X Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Y3 = 0x2000,
|
||||
// This is the 3rd Y Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_Z3 = 0x4000,
|
||||
// This is the 3rd Z Axis - use on multiple axis machines when specific axis needed
|
||||
HSI_MOTION_AXIS_R3 = 0x8000 // This is the 3rd R Axis - use on multiple axis machines when specific axis needed
|
||||
};
|
||||
|
||||
@@ -291,21 +356,28 @@ enum HSI_MOTION_IO_TYPE
|
||||
{
|
||||
HSI_MOTION_INPUT = 0x0001,
|
||||
HSI_MOTION_INPUT_LIMIT_SWITCH,
|
||||
HSI_MOTION_INPUT_CH1,//固高、众为兴、EF1输入
|
||||
HSI_MOTION_INPUT_CH1,
|
||||
//固高、众为兴、EF1输入
|
||||
HSI_MOTION_INPUT_CH2,
|
||||
HSI_MOTION_INPUT_CH3,//串口控制器输入
|
||||
HSI_MOTION_INPUT_CH4,//众为兴运动控制卡测试输入
|
||||
HSI_MOTION_INPUT_ALARM,//驱动报警
|
||||
HSI_MOTION_INPUT_CH3,
|
||||
//串口控制器输入
|
||||
HSI_MOTION_INPUT_CH4,
|
||||
//众为兴运动控制卡测试输入
|
||||
HSI_MOTION_INPUT_ALARM,
|
||||
//驱动报警
|
||||
HSI_MOTION_OUTPUT = 0x0100,
|
||||
HSI_MOTION_OUTPUT_LASER_PEN,
|
||||
HSI_MOTION_OUTPUT_CH1,//固高、众为兴、EF1输出
|
||||
HSI_MOTION_OUTPUT_CH1,
|
||||
//固高、众为兴、EF1输出
|
||||
HSI_MOTION_OUTPUT_CH2,
|
||||
HSI_MOTION_OUTPUT_CH3,//串口控制器输出
|
||||
HSI_MOTION_OUTPUT_CH3,
|
||||
//串口控制器输出
|
||||
HSI_MOTION_OUTPUT_CH4 //众为兴运动控制卡测试输出
|
||||
};
|
||||
|
||||
//const UINT HSI_MOTION_AXIS_ALL = HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_Y | HSI_MOTION_AXIS_Z;
|
||||
const UINT HSI_MOTION_AXIS_ALL = ACSC_AXIS_0 | ACSC_AXIS_1 | ACSC_AXIS_4;
|
||||
|
||||
enum HSI_MOTION_MOVE_TYPE
|
||||
{
|
||||
HSI_MOTION_MOVE_WAIT = 1,
|
||||
@@ -329,11 +401,14 @@ enum HSI_SCAN_MOTION_TYPE
|
||||
{
|
||||
HSI_SCAN_MOTION_LINEAR = 1,
|
||||
HSI_SCAN_MOTION_CIRCULAR,
|
||||
HSI_SCAN_MOTION_SPEC_LOCA = 100,//EF1
|
||||
HSI_SCAN_MOTION_SPEC_LOCA = 100,
|
||||
//EF1
|
||||
HSI_SCAN_MOTION_EQ_DIS,
|
||||
HSI_SCAN_MOTION_EQ_DIS_II,
|
||||
HSI_SCAN_MOTION_LINEAR_TEST,//测试使用
|
||||
HSI_SCAN_MOTION_EQ_TEST,//测试使用
|
||||
HSI_SCAN_MOTION_LINEAR_TEST,
|
||||
//测试使用
|
||||
HSI_SCAN_MOTION_EQ_TEST,
|
||||
//测试使用
|
||||
HSI_SCAN_MOTION_MANUAL_TEST //测试使用
|
||||
};
|
||||
|
||||
@@ -372,42 +447,51 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status);
|
||||
|
||||
//扫描相关函数
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis);//扫描配置
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START();//开始扫描
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();//停止扫描
|
||||
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber,
|
||||
double* dTrigDis); //扫描配置
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START(); //开始扫描
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP(); //停止扫描
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ_CACHE(unsigned char* CacheData, int DataCount);
|
||||
// 第一阶段结束
|
||||
|
||||
|
||||
// 第二阶段需要重写的API 函数
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double &Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double &AccelR);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double &ScaleX, double &ScaleY, double &ScaleZ);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT& Types);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double& Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double& AccelX, double& AccelY, double& AccelZ);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double& Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double& AccelR);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double& ScaleX, double& ScaleY, double& ScaleZ);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITIONPROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &PositionA);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double &PositionR, double &Time);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double *pdStartPosX, double *pdStartPosY, double *pdStartPosZ, double *pdEndPosX, double *pdEndPosY, double *pdEndPosZ, double *pdStepDis, bool *pbTrig, int iCount);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double& DeadbandX, double& DeadbandY, double& DeadbandZ,
|
||||
double& DeadbandR);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double& Deadband);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITIONPROBE(UINT AxisTypes, double& PositionX, double& PositionY,
|
||||
double& PositionZ, double& PositionA);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long* lEncVal);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount,
|
||||
Point* CacheData);
|
||||
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED_EX(UINT AxisTypes, UINT &Types);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double& PositionR, double& Time);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR,
|
||||
HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double* pdStartPosX, double* pdStartPosY, double* pdStartPosZ,
|
||||
double* pdEndPosX, double* pdEndPosY, double* pdEndPosZ,
|
||||
double* pdStepDis, bool* pbTrig, int iCount);
|
||||
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED_EX(UINT AxisTypes, UINT& Types);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP_EX(UINT AxisTypes, bool bHome);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double &Scale);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double& Scale);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION_EX(UINT AxisTypes, double Scale);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double &Position, double &Time);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double &Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double &Accel);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double& Position, double& Time);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType,
|
||||
double dSpeedGear);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double& Speed);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double& Accel);
|
||||
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel);
|
||||
|
||||
|
||||
|
||||
@@ -786,8 +786,12 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
|
||||
m_cSendData[0] = 0x01;
|
||||
m_cSendData[1] = 0x01;
|
||||
m_cSendData[2] = 0x02;
|
||||
m_cSendData[3] = 0x03; // 10000 (0x27 0x10)对应1秒,3-4字节表示锁存周期
|
||||
m_cSendData[4] = 0xE8;
|
||||
//m_cSendData[3] = 0x03; // 10000 (0x27 0x10)对应1秒,3-4字节表示锁存周期
|
||||
//m_cSendData[4] = 0xE8;
|
||||
|
||||
// 10000 (0x27 0x10)对应1秒,3-4字节表示锁存周期
|
||||
m_cSendData[3] = (m_axisLatchFrequency >> 8) & 0xFF;
|
||||
m_cSendData[4] = m_axisLatchFrequency & 0xFF;
|
||||
m_WriteByte = Send_Command(0, (const char*)m_cSendData, 5);
|
||||
Sleep(10);
|
||||
|
||||
@@ -1125,6 +1129,21 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed)
|
||||
}
|
||||
while (!home);
|
||||
|
||||
|
||||
//回家后,将锁存板的位置设置为0
|
||||
unsigned char m_cSendData[8] = { 0 };
|
||||
m_cSendData[0] = 0x01;
|
||||
m_cSendData[1] = 0x06;
|
||||
m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2);
|
||||
Sleep(5);
|
||||
|
||||
|
||||
//清除锁存板Flash区
|
||||
m_cSendData[0] = 0x01;
|
||||
m_cSendData[1] = 0x04;
|
||||
m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2);
|
||||
Sleep(5);
|
||||
|
||||
g_pLogger->SendAndFlushWithTime(L"[HomeMachine] Go Home success\n");
|
||||
g_pLogger->SendAndFlushWithTime(L"[HomeMachine] Out\n");
|
||||
}
|
||||
@@ -3720,9 +3739,76 @@ HSI_STATUS HSI_Motion::SetPositionXyzCache(UINT AxisTypes, HSI_MOTION_MOVE_TYPE
|
||||
auto rStatus = HSI_STATUS_NORMAL;
|
||||
if (g_pHSI_Motion)
|
||||
{
|
||||
g_pLogger->SendAndFlushWithTime(L"SetPositionXyzCache : start\n");
|
||||
g_pLogger->SendAndFlushWithTime(L"[SetPositionXyzCache] start\n");
|
||||
|
||||
g_pLogger->SendAndFlushWithTime(L"SetPositionXyzCache : end\n");
|
||||
g_pLogger->SendAndFlushWithTime(L"[SetPositionXyzCache] end\n");
|
||||
}
|
||||
return rStatus;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
/**
|
||||
* \brief 获取缓存点
|
||||
* \param CacheData
|
||||
* \param DataCount
|
||||
* \return
|
||||
*/
|
||||
HSI_STATUS HSI_Motion::GetPositionXyzCache(unsigned char * CacheData, int DataCount)
|
||||
{
|
||||
auto rStatus = HSI_STATUS_NORMAL;
|
||||
if (g_pHSI_Motion)
|
||||
{
|
||||
g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] start\n");
|
||||
|
||||
if(m_SO7_Serial.IsOpen())
|
||||
{
|
||||
//发送获取点数量命令 0x01 0x05
|
||||
unsigned char m_cSendData[8] = { 0 };
|
||||
m_cSendData[0] = 0x01;
|
||||
m_cSendData[1] = 0x05;
|
||||
m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2);
|
||||
Sleep(2);
|
||||
|
||||
//解析缓存点数量
|
||||
if(m_SO7_Serial.m_iRecvState)
|
||||
{
|
||||
//特殊帧头, 表示该内容为回复点数
|
||||
if ((m_SO7_Serial.m_RecvData[0] == 0x01) && (m_SO7_Serial.m_RecvData[0] == 0x1B))
|
||||
{
|
||||
DataCount = (m_SO7_Serial.m_RecvData[4] << 24 | m_SO7_Serial.m_RecvData[5] << 16 | m_SO7_Serial.m_RecvData[6] << 8 | m_SO7_Serial.m_RecvData[7]);
|
||||
|
||||
//详细 https://blog.csdn.net/hebbely/article/details/79577880
|
||||
g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] DataCount:%d, %s\n",DataCount, m_SO7_Serial.ToHexStr((const char *)m_SO7_Serial.m_RecvData,8));
|
||||
}
|
||||
}
|
||||
|
||||
//读取锁存点
|
||||
m_cSendData[0] = 0x01;
|
||||
m_cSendData[1] = 0x09;
|
||||
m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2); //此处应该返回 "ok"
|
||||
Sleep(2);
|
||||
|
||||
//读取点的字节数,每个点占用12个字节
|
||||
if (m_SO7_Serial.m_iRecvBytes != DataCount*12)
|
||||
{
|
||||
g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] m_iRecvBytes: %d != Points: %d\n", m_SO7_Serial.m_iRecvBytes, DataCount * 12);
|
||||
rStatus = HSI_STATUS_FAILED;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(CacheData, m_SO7_Serial.m_RecvData, m_SO7_Serial.m_iRecvBytes);
|
||||
m_SO7_Serial.m_iRecvState = FALSE;
|
||||
rStatus = HSI_STATUS_FAILED;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] Serial Port is unavailable! \n");
|
||||
rStatus = HSI_STATUS_FAILED;
|
||||
}
|
||||
|
||||
g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] end\n");
|
||||
}
|
||||
return rStatus;
|
||||
}
|
||||
@@ -3971,7 +4057,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile)
|
||||
/*m_JogDriveSpeed[j][i] = GetPrivateProfileInt(L"JOG_SPEED", L"JOG_DRIVESPEED_" , 10, csAppPath);*/
|
||||
//m_JogDriveSpeed[j][i] = speed / (m_Resolution[j] * 50);//速度转换为脉冲
|
||||
m_JogDriveSpeed[j][i] = speed; //直接读取速度
|
||||
g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Motion_Inifile] m_JogDriveSpeed[%d][%d]: %ld %ld\n", i, j,
|
||||
g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Motion_Inifile] m_JogDriveSpeed[%d][%d]: %d %ld\n", i, j,
|
||||
speed, m_JogDriveSpeed[j][i]); //打印配置文件 档位速度
|
||||
|
||||
GetPrivateProfileString(L"JOG_SPEED", L"JOG_STARTSPEED_" + strGear[i] + axisNum[j], L"10",
|
||||
@@ -4097,6 +4183,25 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile)
|
||||
m_IsHavePattern = GetPrivateProfileInt(L"ASIX", L"ISHAVE_AXISPATTERN", 15, csAppPath);
|
||||
m_AxisHomeDirection = GetPrivateProfileInt(L"ASIX", L"AXIS_HOMEDIRECTION", 15, csAppPath);
|
||||
m_IsUseManualRunin = GetPrivateProfileInt(L"ASIX", L"IS_USEMANUALRUNIN", 0, csAppPath);
|
||||
m_axisLatchFrequency = GetPrivateProfileInt(L"ASIX", L"AXIS_LATCHFREQUENCY", 1, csAppPath);
|
||||
switch (m_axisLatchFrequency)
|
||||
{
|
||||
case 1:
|
||||
m_axisLatchFrequency = 1000;
|
||||
break;
|
||||
case 2:
|
||||
m_axisLatchFrequency = 2000;
|
||||
break;
|
||||
case 3:
|
||||
m_axisLatchFrequency = 4000;
|
||||
break;
|
||||
case 4:
|
||||
m_axisLatchFrequency = 8000;
|
||||
break;
|
||||
case 5:
|
||||
m_axisLatchFrequency = 16000;
|
||||
break;
|
||||
} //锁存频率处理
|
||||
|
||||
m_IsUseExternalTrigger = GetPrivateProfileInt(L"FUNCTION", L"IS_USEEXTERNALTRIGGER", 1, csAppPath);
|
||||
m_IsUseSixRingEightArea = GetPrivateProfileInt(L"FUNCTION", L"IS_USESIXRINGEIGHTAREA", 0, csAppPath);
|
||||
@@ -6296,11 +6401,11 @@ HSI_STATUS HSI_Motion::DCCScanStart()
|
||||
|
||||
//启动定时锁存的同时,启动扫描 外部IO
|
||||
unsigned char m_cSendData[8] = {0};
|
||||
|
||||
m_cSendData[0] = 0x01;
|
||||
m_cSendData[1] = 0x02;
|
||||
m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2);
|
||||
Sleep(2);
|
||||
|
||||
g_pLogger->SendAndFlushWithTime(L"[DCCScanStart] Out\n");
|
||||
m_IsUsePPS = false;
|
||||
}
|
||||
@@ -8785,14 +8890,7 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng
|
||||
WaitForSingleObject(g_RW_Data_Mutex, INFINITE);
|
||||
if (m_bConnected && (m_IsUseEF3 == 1) && (com == 0))
|
||||
{
|
||||
g_pLogger->SendAndFlushWithTime(L"[Send_Command] lenth:%d, %s\n", SendDataLength,m_SO7_Serial.ToHexStr(_SendData, SendDataLength));
|
||||
int iWriteByte = m_SO7_Serial.Send(_SendData, SendDataLength);
|
||||
if (iWriteByte != SendDataLength)// 写入字节数不等于发送字节数
|
||||
{
|
||||
rStatus = FALSE;
|
||||
g_pLogger->SendAndFlushWithTime(L"[Send_Command] WriteByte:%d,!= SendDataLength:%d\n", iWriteByte, SendDataLength);
|
||||
}
|
||||
|
||||
//------------------------------调试区-----------------------------------//
|
||||
//原文链接:https://blog.csdn.net/qq_31073871/article/details/85696092
|
||||
/*printf("Send_Command: ");
|
||||
for (int i = 0; i < SendDataLength; i++)
|
||||
@@ -8801,6 +8899,11 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng
|
||||
}
|
||||
printf("\r\n");*/
|
||||
|
||||
//------------------------------调试区-----------------------------------//
|
||||
|
||||
g_pLogger->SendAndFlushWithTime(L"[Send_Command] lenth:%d, %s\n", SendDataLength,m_SO7_Serial.ToHexStr(_SendData, SendDataLength));
|
||||
int iWriteByte = m_SO7_Serial.Send(_SendData, SendDataLength);
|
||||
|
||||
if (iWriteByte == 0)
|
||||
{
|
||||
int iError = GetLastError();
|
||||
@@ -8824,7 +8927,31 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng
|
||||
rStatus = FALSE;
|
||||
}
|
||||
|
||||
//打印串口返回值
|
||||
if (iWriteByte != SendDataLength)// 写入字节数不等于发送字节数
|
||||
{
|
||||
rStatus = FALSE;
|
||||
g_pLogger->SendAndFlushWithTime(L"[Send_Command] WriteByte:%d,!= SendDataLength:%d\n", iWriteByte, SendDataLength);
|
||||
}
|
||||
|
||||
//判断回复值,是否为ok 6F 6B
|
||||
int iRetrys = 0;
|
||||
while (!m_SO7_Serial.m_iRecvState && iRetrys < 20)
|
||||
{
|
||||
iRetrys++;
|
||||
Sleep(100);
|
||||
}
|
||||
|
||||
//发送完当前指令后,第一次结束完成标志
|
||||
if (m_SO7_Serial.m_iRecvState)
|
||||
{
|
||||
if ((m_SO7_Serial.m_RecvData[0] == 0x6F) && (m_SO7_Serial.m_RecvData[0] == 0x6B))
|
||||
{
|
||||
g_pLogger->SendAndFlushWithTime(L"[Send_Command] m_SO7_Serial[%d]. EF3 Reply not ok.\n", com);
|
||||
rStatus = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
//打印串口返回值,该方式废弃
|
||||
//Sleep(5);
|
||||
//m_SO7_Serial.OnReceive();
|
||||
}
|
||||
|
||||
@@ -257,6 +257,7 @@ public:
|
||||
HSI_STATUS SetPositionXyza(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, double PositionA,
|
||||
HSI_MOTION_MOVE_TYPE eType, double dFlyRadius);
|
||||
HSI_STATUS SetPositionXyzCache(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point* CacheData);
|
||||
HSI_STATUS HSI_Motion::GetPositionXyzCache(unsigned char * CacheData, int DataCount);
|
||||
HSI_STATUS GetPositionR(UINT AxisTypes, double& PositionR, double& Time);
|
||||
HSI_STATUS SetPositionR(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
|
||||
HSI_STATUS SetCircleInterpolate(double PositionX, double PositionY, double PositionZ); //圆弧插补
|
||||
@@ -491,6 +492,7 @@ public:
|
||||
int m_EF3COMPort; //EF3板com口,默认为2
|
||||
int m_ForSoft; //针对使用软件 0为MST 1为Metus
|
||||
int m_IsUseManualRunin; //是否开启手动插补(只针对步进电机)
|
||||
int m_axisLatchFrequency; //轴锁存频率
|
||||
int m_IsUseRocker; //是否启用摇杆 0为不启用 1为启用旧摇杆,2为新摇杆, 默认为0
|
||||
int m_IsCollectPos; //是否通过串口打印位置,与摇杆2互斥
|
||||
int m_IsCloseRocker;
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#include "../stdafx.h"
|
||||
|
||||
#include <process.h>
|
||||
|
||||
#include "CMMIO_SERIAL.H "
|
||||
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
@@ -179,7 +176,7 @@ DWORD CPSerial::Open()
|
||||
if (ProgramPort(m_Port, m_Baud, m_Parity, m_Bits, m_StopBits, m_HandShake))
|
||||
{
|
||||
TRACE(_T("CmmIO> Port OPEN %s, m_Baud\n", m_Port, m_Baud), Ok);
|
||||
printf("m_Baud: %d\n", m_Baud);
|
||||
//printf("m_Baud: %d\n", m_Baud);
|
||||
// Setup the timeouts
|
||||
CommTimeOut.ReadIntervalTimeout = 25;
|
||||
CommTimeOut.ReadTotalTimeoutMultiplier = 1;
|
||||
|
||||
@@ -191,8 +191,8 @@ public:
|
||||
// BV Nov 2001: Made public
|
||||
// CRITICAL_SECTION m_QueueLock;
|
||||
BOOL m_iRecvState; //接收状态
|
||||
INT m_iRecvBytes; //接收字节数
|
||||
INT m_iRecvCount; //接收计数
|
||||
INT m_iRecvBytes; //接收字节数
|
||||
INT m_iRecvCount; //接收计数
|
||||
unsigned char m_RecvData[MAX_RECIEVE_BUFFER_SIZE];
|
||||
};
|
||||
|
||||
|
||||
@@ -12,5 +12,5 @@
|
||||
#define HSI_VERSION_REVNUM
|
||||
#define HSI_VERSION_BUILD_DATE _T(__DATE__ )
|
||||
#define HSI_VERSION_BUILD_TIME _T(__TIME__ )
|
||||
#define HSI_FILE_DESCRIPTION "2022.11.25 / 15:12 "
|
||||
#define HSI_FILE_CSDESCRIPTION _T("2022.11.25 / 15:12 ")
|
||||
#define HSI_FILE_DESCRIPTION "2022.11.25 / 17:25 "
|
||||
#define HSI_FILE_CSDESCRIPTION _T("2022.11.25 / 17:25 ")
|
||||
|
||||
@@ -142,6 +142,11 @@ namespace HSI_SEVENOCEAN_EF1_CsTest.HSI
|
||||
|
||||
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_DCC_SCAN_STOP", CharSet = CharSet.Unicode)]
|
||||
public static extern Def.HSI_STATUS DCCScanStop();
|
||||
|
||||
|
||||
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_POSITION_XYZ_CACHE", CharSet = CharSet.Unicode)]
|
||||
public static extern Def.HSI_STATUS GetPositionXyzCache(IntPtr CacheData, int DataCount);
|
||||
|
||||
|
||||
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SPEED_R", CharSet = CharSet.Unicode)]
|
||||
//public static extern Def.HSI_STATUS GetSpeedR(ref double speed);
|
||||
|
||||
@@ -7,11 +7,12 @@ namespace HSI_SEVENOCEAN_EF1_CsTest
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
private static Interface.PEventCallback _eventCallback;
|
||||
//private static Interface.PEventCallback _eventCallback;
|
||||
|
||||
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
|
||||
//1 获取HSI Dll版本
|
||||
uint major = Def.HSI_APIVersionMajor;
|
||||
uint minjor = Def.HSI_APIVersionMinor;
|
||||
@@ -40,6 +41,13 @@ namespace HSI_SEVENOCEAN_EF1_CsTest
|
||||
rStatus = Motion.Startup(true); //运动初始化,回家判断
|
||||
Console.WriteLine("Motion.Startup:{0}", rStatus);
|
||||
|
||||
|
||||
IntPtr dataCache = IntPtr.Zero;
|
||||
int pointCount = 0;
|
||||
Motion.GetPositionXyzCache(dataCache, pointCount);
|
||||
Console.WriteLine("pointCount = " + pointCount);
|
||||
|
||||
|
||||
//5 获取EF3固件版本号,待测试
|
||||
//var EF3Version = new byte[20];
|
||||
////IntPtr intPtrEF3Version = IntPtr.Zero;
|
||||
|
||||
@@ -106,7 +106,16 @@ namespace WPFSerialAssistant
|
||||
}
|
||||
}
|
||||
|
||||
private bool SendData(string textToSend)
|
||||
{
|
||||
if (string.IsNullOrEmpty(textToSend))
|
||||
{
|
||||
Alert("要发送的内容不能为空!");
|
||||
return false;
|
||||
}
|
||||
|
||||
return SerialPortWrite(textToSend);
|
||||
}
|
||||
|
||||
private void AutoSendData()
|
||||
{
|
||||
|
||||
@@ -514,9 +514,34 @@ namespace WPFSerialAssistant
|
||||
dataRecvStatusBarItem.Visibility = Visibility.Collapsed;
|
||||
}));
|
||||
|
||||
// TO-DO:
|
||||
// 处理数据,比如解析指令等等
|
||||
}
|
||||
// TO-DO:
|
||||
// 处理数据,比如解析指令等等
|
||||
if (recvBuffer.Count > 0)
|
||||
{
|
||||
// 举例:解析指令,获取锁存点
|
||||
if (recvBuffer[0] == 0x01 && recvBuffer[1] == 0x05)
|
||||
{
|
||||
// TO-DO:处理指令
|
||||
|
||||
this.Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
SendData("string textToSend");
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
if (recvBuffer[0] == 0x01 && recvBuffer[1] == 0x09)
|
||||
{
|
||||
// TO-DO:处理指令
|
||||
|
||||
this.Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
SendData("ok");
|
||||
}));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user