diff --git a/HSI_HexagonMI_EF3/HSI.h b/HSI_HexagonMI_EF3/HSI.h index 23c8fb9..00b074e 100644 --- a/HSI_HexagonMI_EF3/HSI.h +++ b/HSI_HexagonMI_EF3/HSI.h @@ -79,7 +79,7 @@ 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 }; @@ -357,22 +357,22 @@ enum HSI_MOTION_IO_TYPE HSI_MOTION_INPUT = 0x0001, HSI_MOTION_INPUT_LIMIT_SWITCH, HSI_MOTION_INPUT_CH1, - //̸ߡΪˡEF1 + //固高、众为兴、EF1输入 HSI_MOTION_INPUT_CH2, 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 + //固高、众为兴、EF1输出 HSI_MOTION_OUTPUT_CH2, HSI_MOTION_OUTPUT_CH3, - //ڿ - HSI_MOTION_OUTPUT_CH4 //Ϊ˶ƿ + //串口控制器输出 + HSI_MOTION_OUTPUT_CH4 //众为兴运动控制卡测试输出 }; //const UINT HSI_MOTION_AXIS_ALL = HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_Y | HSI_MOTION_AXIS_Z; @@ -406,10 +406,10 @@ enum HSI_SCAN_MOTION_TYPE HSI_SCAN_MOTION_EQ_DIS, HSI_SCAN_MOTION_EQ_DIS_II, HSI_SCAN_MOTION_LINEAR_TEST, - //ʹ + //测试使用 HSI_SCAN_MOTION_EQ_TEST, - //ʹ - HSI_SCAN_MOTION_MANUAL_TEST //ʹ + //测试使用 + HSI_SCAN_MOTION_MANUAL_TEST //测试使用 }; enum HSI_ZOOM_TYPE @@ -427,7 +427,7 @@ using Point = struct const int HSI_MAX_POSITIONS_STORED = 500; // >>>> In Interfaces -// һ׶ҪдAPI +// 第一阶段需要重写的API 函数 HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome); HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte* verion); @@ -445,16 +445,16 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed); 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(); //ֹͣɨ + 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 +// 第二阶段需要重写的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); @@ -493,7 +493,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double& HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel); -//δʵ +//暂未实现 //HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_MAGNIFICATION(UINT AxisTypes, double mag, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); //HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_MAGNIFICATION(UINT AxisTypes, double &mag); //HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_POS(UINT AxisTypes, double ScalePos, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index 95c9b1f..d4742c6 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -2906,12 +2906,13 @@ HSI_STATUS HSI_Motion::GetPositionXyz(UINT AxisTypes, double& PositionX, double& } //=========================================================================== -HSI_STATUS HSI_Motion::GetEncoderXyz(long* lEncoderVal)//原读取编码器值使用串口获取EF3的光栅尺读数,待测试 +HSI_STATUS HSI_Motion::GetEncoderXyzOld(long* lEncoderVal)//原读取编码器值使用串口获取EF3的光栅尺读数,待测试 { auto rStatus = HSI_STATUS_NORMAL; //读取3个轴的编码器值 if (g_pHSI_Motion) { + g_pLogger->SendAndFlushWithTime(L"[GetEncoderXyz] In\n"); if (m_SO7_Serial.m_RecvData[0] == 2) { if (m_DeviceType != 1) @@ -2969,6 +2970,32 @@ HSI_STATUS HSI_Motion::GetEncoderXyz(long* lEncoderVal)//原读取编码器值 auto rStatus = HSI_STATUS_FAILED; g_pLogger->SendAndFlushWithTime(L"[GetEncoderXyz] failed\n"); } + g_pLogger->SendAndFlushWithTime(L"[GetEncoderXyz] Out\n"); + } + return rStatus; +} + +HSI_STATUS HSI_Motion::GetEncoderXyz(long* lEncoderVal)//原读取编码器值使用串口获取EF3的光栅尺读数,待测试 +{ + auto rStatus = HSI_STATUS_NORMAL; + //读取3个轴的编码器值 + if (g_pHSI_Motion) + { + g_pLogger->SendAndFlushWithTime(L"[GetEncoderXyz] In\n"); + + { + lEncoderVal[0] = m_EncPos[1] / m_Resolution[1];//PositionX + lEncoderVal[1] = m_EncPos[2] / m_Resolution[1];// PositionY; + lEncoderVal[2] = m_EncPos[3]/ m_Resolution[1]; // PositionZ; + + g_pLogger->SendAndFlushWithTime(L"[GetEncoderXyz] lEncoderVal[0]= %ld,EncoderVal[1]= %ld,,EncoderVal[2]= %ld, \n", lEncoderVal[0], lEncoderVal[1], lEncoderVal[2]); + } + //else + //{ + // auto rStatus = HSI_STATUS_FAILED; + // g_pLogger->SendAndFlushWithTime(L"[GetEncoderXyz] failed\n"); + //} + g_pLogger->SendAndFlushWithTime(L"[GetEncoderXyz] Out\n"); } return rStatus; } diff --git a/HSI_HexagonMI_EF3/HSI_Motion.h b/HSI_HexagonMI_EF3/HSI_Motion.h index a8de5f5..1b7076b 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.h +++ b/HSI_HexagonMI_EF3/HSI_Motion.h @@ -16,7 +16,7 @@ const double SCALE_UNITS = 1000.0; static CLogger* g_pLogger; static CLogger* g_pLogger2; -static bool g_IsClose; //DoEvents()˳쳣 +static bool g_IsClose; //用于DoEvents()的退出,而不异常 enum E_SO7_MOTION_TYPE { @@ -28,23 +28,23 @@ enum E_SO7_MOTION_TYPE enum E_EF3_HOME_STATUS { - E_EF3_HOME_NONE,//0ʾδعԭ - E_EF3_HOME_ING,//1ʾڻԭ - E_EF3_HOME_FINISHED,//2ʾѾعԭ + E_EF3_HOME_NONE,//0表示从未回过回原点 + E_EF3_HOME_ING,//1表示正在回原点 + E_EF3_HOME_FINISHED,//2表示已经回过原点 }; -enum FUN_CMD //һָ +enum FUN_CMD //第一级指令 { CT_MOTOR = 0x01,//MOTOR CT_LIGHT,//LIGHT CT_PORT,//PORT CT_ORDER,//ORDER CT_SOFTSTOP,//STOP - CT_GLUEDISPENSER,//㽺 + CT_GLUEDISPENSER,//点胶 CT_TURNTABLE, }; -enum MOTOR_CMD //ڶָ +enum MOTOR_CMD //第二级指令 { CT_MOTOR_SET = 0x01, CT_START_JOG_POS,// @@ -63,7 +63,7 @@ enum MOTOR_CMD // CT_GLUEDISPENSER_SET, CT_GLUEDISPENSER_CLEAR, CT_GLUEDISPENSER_START, - CT_GLUEDISPENSER_STOP,//תʱ + CT_GLUEDISPENSER_STOP,//转盘时启用 CT_RTSET, CT_BINSDATA, CT_RTSTOP,// @@ -73,14 +73,14 @@ enum MOTOR_CMD // enum MOTOR_START_POSOTION // { INTERPOLATION = 0x61, - //岹 + //插补 GANGED = 0x41, - // + //独立 CIRCLER = 0x64, CIRCLEL = 0x65, }; -enum MOTOR_AXISCHOOES_CMD //ָ +enum MOTOR_AXISCHOOES_CMD //第三级指令 { AXIS_X = 0x01, AXIS_Y = 0x00, @@ -99,7 +99,7 @@ enum MOTOR_AXISCHOOES_CMD // AXIS_XYZU = 0x0f, }; -enum MOTOR_SET_KIND //ļָ +enum MOTOR_SET_KIND //第四级指令 { JOG_SPEED_ACC_DEC, POSITION_SPEED_ACC_DEC_POS, @@ -147,13 +147,13 @@ public: HSI_STATUS IsSupported(UINT& Types) override; HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly) override; /** - * \brief ȡEF3̼汾 + * \brief 获取EF3固件版本 * \param version * \return */ HSI_STATUS GetFirmwareVersion(byte* version); /** - * \brief жϻ̨ǷؼңûУִлؼҶ + * \brief 判断机台是否回家,如果没有,则执行回家动作 * \param bHomed * \return */ @@ -164,14 +164,14 @@ public: HSI_STATUS ZeroPos(bool bZeroPos); /** - * \brief жϻ̨ǷؼңȡǷؼҵ״̬ - * \param bHomed Ƿؼұ־λ + * \brief 判断机台是否回家,仅获取是否回家的状态 + * \param bHomed 是否回家标志位 * \return */ HSI_STATUS IsHomed(bool& bHomed); HSI_STATUS IsHomedOld(bool& bHomed); /** - * \brief ȡ˶ٶ + * \brief 获取单轴运动速度 * \param AxisNum * \param Speed * \return @@ -190,7 +190,7 @@ public: HSI_STATUS GetDeadBand(double& DeadbandX, double& DeadbandY, double& DeadbandZ, double& DeadbandR); HSI_STATUS GetRefreshDeadBand(double& Deadband); /** - * \brief Jog˶,λֻJOGУCNCеٶǺϳٶ + * \brief Jog运动,挡位只有在JOG才有,CNC运行的速度是合成速度 * \param AxisTypes * \param Speed * \return @@ -216,11 +216,11 @@ public: HSI_STATUS GetPositionEncPrfMulti(UINT AxisTypes, double* EncPos, double* PrfPos, int Count); HSI_STATUS GetPositionEncPrfMultiOld(UINT AxisTypes, double* EncPos, double* PrfPos, int Count); /** - * \brief ȡᵱǰλ - * \param AxisTypes - * \param PositionX X - * \param PositionY Y - * \param PositionZ Z + * \brief 获取轴当前位置 + * \param AxisTypes 轴号 + * \param PositionX X坐标 + * \param PositionY Y坐标 + * \param PositionZ Z坐标 * \param Time * \return */ @@ -228,12 +228,13 @@ public: HSI_STATUS GetPositionXyzOld(UINT AxisTypes, double& PositionX, double& PositionY, double& PositionZ, double& Time); HSI_STATUS GetPositionXyzaProbe(UINT AxisTypes, double& PositionX, double& PositionY, double& PositionZ, double& PositionA); - HSI_STATUS GetEncoderXyz(long* lEncoderVal); + HSI_STATUS GetEncoderXyz(long* lEncoderVal);//获取编码器位置 + HSI_STATUS GetEncoderXyzOld(long* lEncoderVal); HSI_STATUS JogProbe(UINT AxisTypes, double Speed); void ProbeRetractManDist(int RetractManDist); int CaculateStepMotorACC(int pos, int maxacc, int minacc); /** - * \brief ˶ò + * \brief 求各轴运动配置参数 * \param AXIS * \param motionParam * \return @@ -241,12 +242,12 @@ public: HSI_STATUS HSI_Motion::GetSingleAxisParam(int AXIS, double motionParam[5]); HSI_STATUS HSI_Motion::SetSingleAxisParam(int AXIS, double motionParam[5]); /** - * \brief еָλ - * \param AxisTypes - * \param PositionX X - * \param PositionY Y - * \param PositionZ Z - * \param eType ˶ģʽ + * \brief 运行到指定位置 + * \param AxisTypes 轴号 + * \param PositionX X坐标 + * \param PositionY Y坐标 + * \param PositionZ Z坐标 + * \param eType 运动模式, * \param dFlyRadius * \return */ @@ -260,7 +261,7 @@ public: HSI_STATUS 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); //Բ岹 + HSI_STATUS SetCircleInterpolate(double PositionX, double PositionY, double PositionZ); //圆弧插补 HSI_STATUS Load_EF3_Motion_Inifile(CString GoogolIniFile); HSI_STATUS Load_EF3_Config_Inifile(CString GoogolIniFile); /** @@ -301,7 +302,7 @@ public: HSI_STATUS SetPositionEx(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); HSI_STATUS GetSpeedEx(UINT AxisTypes, double& Speed); /** - * \brief õ˶ٶ + * \brief 设置单轴运动速度 * \param AxisTypes * \param Speed * \return @@ -314,23 +315,23 @@ public: double* Intensities); HSI_STATUS DCCPPStartPoint(double* startPoint); /** - * \brief · - * \param AxisTypes - * \param eType ȼߵʱ - * \param lTrigNumber - * \param dTrigDis + * \brief 下发触发间距 + * \param AxisTypes 轴 + * \param eType 等间距或者等时间 + * \param lTrigNumber 触发数量 + * \param dTrigDis 间距 * \return */ HSI_STATUS DCCScanSetData(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis); HSI_STATUS DCCScanSetDataOld(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis); /** - * \brief ʼɨ + * \brief 开始扫描 * \return */ HSI_STATUS DCCScanStart(); HSI_STATUS DCCScanStartOld(); /** - * \brief ֹͣɨ + * \brief 停止扫描 * \return */ HSI_STATUS DCCScanStop(); @@ -356,28 +357,28 @@ public: static HANDLE m_Thread_Id; static HANDLE m_Thread_Mutex; static HANDLE m_hTriggerEvent; - //IOϢ߳ + //用于IO发消息的线程 static int m_Thread_StateIO; static HANDLE m_Thread_IdIO; static HANDLE m_Thread_MutexIO; static HANDLE m_hTriggerEventIO; - //ȡEF3״̬ + //读取EF3的数据状态 static int m_Thread_StateData; static HANDLE m_Thread_IdData; static HANDLE m_Thread_MutexData; static HANDLE m_hTriggerEventData; - //ȡEF3̽״̬ + //读取EF3的探针状态 static int m_Thread_StateProbe; static HANDLE m_Thread_IdProbe; static HANDLE m_Thread_MutexProbe; static HANDLE m_hTriggerEventProbe; - //㽺״̬ + //点胶运行状态 static int bRunGlueDispenser; - //ȡEF3JOG stop ״̬ + //读取EF3的JOG stop 的状态 static int m_Thread_StateJOGStop; static HANDLE m_Thread_IdJOGStop; static HANDLE m_Thread_MutexJOGStop; @@ -387,16 +388,16 @@ public: static HANDLE g_WR_ToMove_Mutex; static HANDLE g_Lock_JogAndTrigger; - double m_Resolution[5]; //1ʼ,0 - double m_N_Work_Limit[5]; //λ - double m_P_Work_Limit[5]; //λ + double m_Resolution[5]; //从1开始,0不用 + double m_N_Work_Limit[5]; //负限位 + double m_P_Work_Limit[5]; //正限位 int m_Home_AddJogGears[5]; int m_Home_DecJogGears[5]; int m_Home_Time[5]; int m_SetPotion_Count[5]; - //λ + //定位参数 int m_SetPotion_StartSpeed[5]; int m_SetPotion_DriveSpeed[5]; int m_SetPotion_Line[5]; @@ -409,134 +410,134 @@ public: int m_stepPosition_H_speed[10]; int m_stepPosition_Load[10]; int m_stepPosition_acc[10]; - double m_PositionA; //ĵλλ + double m_PositionA; //第四轴的地位位置 - //jog - int m_JogDriveSpeed[5][5]; //5,1ʼ5λ + //jog 参数 + int m_JogDriveSpeed[5][5]; //5:轴号,从1开始;5:档位 int m_JogStartSpeed[5][5]; int m_JogAccLine[5][5]; int m_JogDecLine[5][5]; int m_JogAccCurve[5][5]; int m_JogDecCurve[5][5]; - int m_Jog_Auto_Focus; //佹ʹõٶ - int m_LogIsOpen[5]; //Ƿ򿪼¼0Ϊ򿪣0Ϊر + int m_Jog_Auto_Focus; //变焦使用的速度 + int m_LogIsOpen[5]; //是否打开记录,0为打开,非0为关闭 - unsigned int m_precisionCount[5]; //ؼ - unsigned int m_precisionTime[5]; //ʱʱ(0.1ms) - int m_StopJogMode[5]; //JOGģʽüͣƽֹͣ - double m_PosThread[5]; //SetpositionXyzĿλ - int m_PosNow[5]; //SetpositionXyzʱȡǰλ + unsigned int m_precisionCount[5]; //回家误差脉冲个数 + unsigned int m_precisionTime[5]; //超时时间(0.1ms) + int m_StopJogMode[5]; //JOG模式采用急停还是平滑停止 + double m_PosThread[5]; //SetpositionXyz的目标位置 + int m_PosNow[5]; //调用SetpositionXyz时,读取当前位置 double targetpos_n[5]; double targetpos_l[5]; short m_AxisThread; - int m_IsExMotion; //0xyzõģ1ǵõģ2 - int m_Home_Machine_Axis[10]; //ʱҪԭѡ - int m_Home_Pos_Axis[5]; //סرյԴʱλãжǷҪԭ - int m_IsHomeEncPos; //ǷʵλжǷؼңĬ01ã0ر - int m_IsHomePrfPos; //Ƿ滮λжǷؼңĬ11ã0ر + int m_IsExMotion; //0是xyz用的,1是单轴用的,2都不用 + int m_Home_Machine_Axis[10]; //用于启动时需要回原点的轴号选择 + int m_Home_Pos_Axis[5]; //记住关闭电源时的位置,用于判断是否还需要回原点 + int m_IsHomeEncPos; //是否启动实际位置判断是否回家,默认0,1启用,0关闭 + int m_IsHomePrfPos; //是否启动规划位置判断是否回家,默认1,1启用,0关闭 - int m_IsIOFuntion; //ǷIOܣ1Ϊ򿪣0Ϊر - int m_IsStartInput; //Ƿý̤عܣ1Ϊã0ΪرգĬ0 - UINT m_StartInputPort; //ⲿ밴ť + int m_IsIOFuntion; //是否启动IO功能,1为打开,0为关闭 + int m_IsStartInput; //是否启用脚踏开关功能,1为启用,0为关闭,默认0 + UINT m_StartInputPort; //外部输入按钮启动程序 UINT m_InputStatus; UINT m_ForStatus; - int m_Set_XYZA_Reserve; //XYZA᷽ - int m_motorType; // 1Ϊŷ 0Ϊ - int m_setPositionDelay; //öλʱ - int m_setPositionPrecision; //öλ + int m_Set_XYZA_Reserve; //XYZA轴方向 + int m_motorType; //电机类型 1为伺服电机 0为步进电机 + int m_setPositionDelay; //设置定位超时 + int m_setPositionPrecision; //设置定位精度 int m_setPositionNum; - CString m_AppPath;//MSTб־trueMSTѾfalseMSTֹͣ + CString m_AppPath;//MST软件运行标志,trueMST软件已经启动,falseMST软件停止 bool m_MSTRunFlag; - int m_IsUse_HSICompensation; //ǷHSIжλ 0Ϊ 1Ϊ ĬΪ0 - int m_Compensation_Pluse; // - int m_IsHardLimit; //豸Ӳλ Ϊ0ʾᶼΪλ 1ΪXΪӲλ 2ΪY 3ΪXY 4ΪZ 7ΪXYZ ĬΪ7 - int m_IsEnableAxis; //豸 Ϊ0ʾ᲻ 1ΪX 2ΪY 3ΪXY 4ΪZ 7ΪXYZ ĬΪ7 - int m_IsUseExternalTrigger; //Ƿⴥ 0Ϊ 1Ϊ ĬΪ1 - int m_IsUseSixRingEightArea; //Ƿƹ 0Ϊ 1Ϊ 2Ϊ ĬΪ0 - int m_SixEightSubArea[8]; // - int m_IsUseTwentySixLight; //Ƿ26·ƹ 0Ϊ 1λ ĬΪ0 - int m_IsUseEF3; //ǷEF3 - int m_IsUseACS; //ǷACS˶ - int m_DeviceType; //豸ͣ0Ϊͨ豸1Ϊ, 2ΪҰ3Ϊת豸 ĬΪ0 - int m_UseAxisNum; //ת豸ʹ - int m_IbinCount; //¼ȡķbin + int m_IsUse_HSICompensation; //是否启用HSI进行定位补偿 0为不启用 1为启用 默认为0 + int m_Compensation_Pluse; //补偿脉冲数 + int m_IsHardLimit; //设备轴硬限位设置 为0表示所有轴都为软限位 1为X轴为硬限位 2为Y轴 3为XY轴 4为Z轴 7为XYZ轴 默认为7 + int m_IsEnableAxis; //设备启用轴设置 为0表示所有轴不启用 1为X轴启用 2为Y轴启用 3为XY轴启用 4为Z轴启用 7为XYZ轴启用 默认为7 + int m_IsUseExternalTrigger; //是否启用外触发功能 0为不启用 1为启用 默认为1 + int m_IsUseSixRingEightArea; //是否启用六环八区灯功能 0为不启用 1为启用 2为二环八区灯 默认为0 + int m_SixEightSubArea[8]; //六环八区分区功能 + int m_IsUseTwentySixLight; //是否启用26路灯光 0为不启用 1位启用 默认为0 + int m_IsUseEF3; //是否启用EF3 + int m_IsUseACS; //是否用ACS运动控制 + int m_DeviceType; //设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0 + int m_UseAxisNum; //转盘设备使用轴号 + int m_IbinCount; //记录获取到的分bin数 bool m_IsUsePPS; - int m_iJoyStick; //ҡͣ0 1ʽҡ - int m_bISUseMoreLights; //ƹ + int m_iJoyStick; //摇杆类型:0:无 1:老式摇杆 + int m_bISUseMoreLights; //更多灯光 int m_EF3LightType; int m_LightType; int m_IsUseFourthSpeed; - CString m_IsOpenTCPIP[4]; //ṩtcpͨŵip + CString m_IsOpenTCPIP[4]; //可提供的tcp通信的ip bool m_tcpCntFlag[4]; int m_selectedIndex; - bool m_Led8MotionFlag[4]; //ǷΪ8·Դ - int m_IsHavePattern; //Ƿйդ - int m_AxisHomeDirection; //ؼʱķ - int m_IsUseJerk; //Ƿüͣ 0Ϊ 1Ϊ - DWORD t_start; //ȡjogеĿʼʱ - DWORD t_end; //ȡjogеĽʱ - DWORD set_start; //ȡλпʼʱ - DWORD set_end; //ȡλнʱ - //Ƿ̽벶ܣ1ãĬ0ر - int m_IsProbe;//̽봥ʱţĬ3ʾXYZ3ᣬ4ʾXYZA4 + bool m_Led8MotionFlag[4]; //是否为8路光源板 + int m_IsHavePattern; //是否有光栅 + int m_AxisHomeDirection; //轴回家时的方向 + int m_IsUseJerk; //是否启用急停 0为不启用 1为启用 + DWORD t_start; //获取jog运行的开始时间 + DWORD t_end; //获取jog运行的结束时间 + DWORD set_start; //获取定位运行开始时间 + DWORD set_end; //获取定位运行结束时间 + //是否启用探针捕获功能,1启用,默认0关闭 + int m_IsProbe;//探针触发时,锁存的轴号,默认3表示锁存XYZ共3轴,4表示XYZA共4轴 int m_ProbeAllAxis; - long m_ProbeCapturePos[5]; //λ - double m_ProbeReturnPos; //̽봥ʱʱصľmmťʱ,Ĭ10.0mm - int m_ProbeReturnSpeed; //̽봥Ļٶ - int m_isOKGlint; //Ƿok/ng ˸ - int m_ETIPort; //ⲿ˿ں - int m_axisStatus; //˶״̬ - int m_axisAlarmStatus; //ᱨ״̬ - int m_EF3COMPort; //EF3comڣĬΪ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 + long m_ProbeCapturePos[5]; //锁存各轴的位置 + double m_ProbeReturnPos; //探针触发时,调试时返回的距离mm,点击启动按钮时不起作用,默认10.0mm + int m_ProbeReturnSpeed; //探针触发后,轴的回退速度 + int m_isOKGlint; //是否开启ok/ng 闪烁 + int m_ETIPort; //外部触发拍照输入端口号 + int m_axisStatus; //运动各轴的状态 + int m_axisAlarmStatus; //轴报警状态 + 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; - int m_IsLightDebug; //Ƿ񲻻ؼҲܵԵƹ 0Ϊ 1Ϊ ĬΪ0 - int m_rockerHStartSpeed[4]; //ҡXYZ߳ʼٶ - int m_rockerHDriveSpeed[4]; //ҡXYZٶ - int m_rockerLStartSpeed[4]; //ҡXYZͳʼٶ - int m_rockerLDriveSpeed[4]; //ҡXYZٶ - int m_rockerASpeed[4]; //XYZӼ1 - int m_rockerDSpeed[4]; //XYZӼ2 - int m_SaveAxisNum; // - int m_SaveAxisSpeed; //ٶ + int m_IsLightDebug; //是否不回家也能调试灯光 0为不启用 1为启用 默认为0 + int m_rockerHStartSpeed[4]; //摇杆XYZ轴高初始速度 + int m_rockerHDriveSpeed[4]; //摇杆XYZ轴高驱动速度 + int m_rockerLStartSpeed[4]; //摇杆XYZ轴低初始速度 + int m_rockerLDriveSpeed[4]; //摇杆XYZ轴低驱动速度 + int m_rockerASpeed[4]; //XYZ轴加减速1 + int m_rockerDSpeed[4]; //XYZ轴加减速2 + int m_SaveAxisNum; //保存轴号 + int m_SaveAxisSpeed; //保存速度 bool bSaveSpeedFlag; bool fourthAxisFlag; - bool bCircleRun; //Բ岹 - int iCircleRunPnt[5]; //Բ岹ʱԲλ - int jogAxisNum; //jog˶ - int jogspeed; //jog ˶ٶ + bool bCircleRun; //圆弧插补 + int iCircleRunPnt[5]; //圆弧插补时的圆心位置 + int jogAxisNum; //jog运动的轴号 + int jogspeed; //jog 运动的速度 bool jogMoving; bool jogDirFlag; bool m_bEmergencyState; - bool bUseGlueDispenser; //Ƿ㽺 + bool bUseGlueDispenser; //是否开启点胶 int m_iGlueStartSpeed; int m_iGlueDriveSpeed; int m_iGlueAccSpeed; - int GlueDispenserindexNum; //㽺 + int GlueDispenserindexNum; //点胶段数 int GluerunCount; int m_iSpeedType; - int m_axisDirX; //̽˶ʱX˶ - int m_axisDirY; //̽˶ʱY˶ - int m_axisDirZ; //̽˶ʱZ˶ + int m_axisDirX; //探针运动时X轴的运动方向 + int m_axisDirY; //探针运动时Y轴的运动方向 + int m_axisDirZ; //探针运动时Z轴的运动方向 int m_probeSeekSpeed; - int m_isUseAport; //A + int m_isUseAport; //A串口 int m_portAnum; - int m_isUseBport; //B + int m_isUseBport; //B串口 int m_portBnum; int SpCompleteTStart; int SpCompleteTEnd; int SpTimeCount; bool SetPotionRunEnd; - double PntToPntDistance; //ŷϾ + double PntToPntDistance; //欧氏距离 double m_LockPos[5]; double m_ijk[5]; @@ -545,9 +546,9 @@ public: double m_EncPos[5]; double m_PrfPos[5]; - double m_PosForAllAxis[5]; //¼4λ + double m_PosForAllAxis[5]; //记录4轴位置 bool m_bConnected; - bool m_bACSConnected; // ACSǷӳɹ + bool m_bACSConnected; // ACS是否连接成功 int m_SendDataLength; unsigned char m_cSendData[64]; unsigned char m_direct_pos; @@ -556,20 +557,20 @@ public: CPSerial m_SO7_Serial; DWORD m_WriteByte; BOOL Send_Command(int com, const char* _SendData, DWORD _SendDataLength); - BOOL Send_Command(int com, const char* _SendData, DWORD SendDataLength, int expectType);// ֵķ + BOOL Send_Command(int com, const char* _SendData, DWORD SendDataLength, int expectType);// 带期望返回值的发送命令 BOOL Receive_Data(); bool PortInit(int iSerialComPort, int iBuadRate); char m_RecvData[MAX_RECIEVE_BUFFER_SIZE]; DWORD m_RecvDataSize; E_EF3_HOME_STATUS CurrentHomeMachineState; - //ˢ̽״̬ + //刷新探针状态 static unsigned __stdcall m_ThreadProbe(LPVOID pThis); void CreateThreadProbe(); void CloseThreadProbe(); void UpdateMotionStateProbe(); - //ˢλ״̬ + //刷新位置状态 static unsigned __stdcall m_Thread(LPVOID pThis); void CreateThread(); void CloseThread(); @@ -578,19 +579,19 @@ public: void UpdateMotionStateEx(); void GluedispenserDone(); - //IOϢʹ + //IO发消息使用 static unsigned __stdcall m_ThreadIO(LPVOID pThis); void CreateThreadIO(); void CloseThreadIO(); void UpdateMotionStateIO(); - //ȡEF3״̬ + //读取EF3的数据状态 static unsigned __stdcall m_ThreadData(LPVOID pThis); void CreateThreadData(); void CloseThreadData(); void UpdateMotionStateData(); - //ȡEF3JOGλ ԱֹͣJOG˶ + //读取EF3的JOG位置 以便停止JOG运动 static unsigned __stdcall m_ThreadJOGStop(LPVOID pThis); void CreateThreadJOGStop(); void CloseThreadJOGStop(); @@ -600,7 +601,7 @@ public: void SendMsgProbeFinished(); VOID EventCallback(sHSIEventProperties& sEventProp); /** - * \brief 浲λȡٶ + * \brief 界面挡位获取速度 * \param AxisNum * \param Speed * \param DriveSpeed @@ -614,7 +615,7 @@ public: int SpeedPercent(int AxisNum, double& Speed, int& DriveSpeed, int& StartSpeed, int& AccLine, int& DecLine, int& AccCurve, int& DecCurve); /** - * \brief ҡл˶ٶ, Ǹ˽ ҡ˾ͻʧ; + * \brief 摇杆切换的运动速度, 与上面那个互锁,动了界面的 摇杆就会失能; * \param AxisNum * \param Speed * \param DriveSpeed @@ -652,12 +653,12 @@ private: int iScanMotionType; int iTriggleNum; int iMotionDirection; - int begin_position[5]; //ⴥʼҪ͵ + int begin_position[5]; //外触发到初始点需要发送的脉冲数 HINSTANCE m_Hinst; - E_SO7_MOTION_TYPE CurrentMotionState; //ǰ˶״̬ + E_SO7_MOTION_TYPE CurrentMotionState; //当前运动状态 E_SO7_MOTION_READ_TYPE CurrentReadDataType; - //ͨ + //网口通信添加 private: TCPIP_RETURN_CODE TCPConnect(int index, char* Address, u_short port); void DisConnect(); @@ -681,12 +682,12 @@ public: unsigned char lightdata[64]; int LightSend; public: - HSI_STATUS CollectPos(bool isEnable, MOTOR_AXISCHOOES_CMD axis, short cycle); //λòɼ/ر + HSI_STATUS CollectPos(bool isEnable, MOTOR_AXISCHOOES_CMD axis, short cycle); //位置采集打开/关闭 private: - HSI_STATUS SetAllGears(); //·еλ + HSI_STATUS SetAllGears(); //下发所有档位数据 }; extern HSI_Motion* g_pHSI_Motion; -//extern void ErrorsHandler(const char* ErrorMessage, BOOL fCloseComm); //ACS ӡ +//extern void ErrorsHandler(const char* ErrorMessage, BOOL fCloseComm); //ACS 错误打印 #endif diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP index 049dd00..6ecc597 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP @@ -222,7 +222,7 @@ void CMMIO::LineReceive(char* s, int nbCharAvail, BOOL ignoreDelimiter /*= FALSE c = s[i]; m_InputBuffer[CurrentPointer++] = c; - // only add a packet if we have a delimiter ָ + // only add a packet if we have a delimiter 分隔符 if ((!m_usesTerminator && i == nbCharAvail - 1) || (m_usesTerminator && c == m_terminator) || ignoreDelimiter) { diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.H b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.H index 3b77940..874b838 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.H +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.H @@ -38,7 +38,7 @@ protected: CString m_lastErrMsg; int m_iNbMsgWaiting; BOOL m_UseBuffferedSend; - CRITICAL_SECTION m_QueueLock; //ٽ + CRITICAL_SECTION m_QueueLock; //临界区 CRITICAL_SECTION m_ReadLock; CRITICAL_SECTION m_WriteLock; diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H index ac71c09..e1e3f65 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H @@ -128,7 +128,7 @@ public: // Convert ascii hex into an int int HexToInt(char* Data, int Bytes); void hex2str(char* pszDest, byte* pbSrc, int nLen); - //ֽתΪ16ַ + //字节数据转换为16进制字符串 CString HexToStr(const char* pData, int nLen); int Receive(void* buf, int maxlen, bool sync); @@ -191,11 +191,11 @@ public: // BV Nov 2001: Made public // CRITICAL_SECTION m_QueueLock; - BOOL m_iRecvState; //״̬ - INT m_iRecvBytes; //ֽ - INT m_iRecvCount; //ռ - INT m_iExpectBytes = 0; //յݳ - BOOL m_bDebug = true; //ģʽĬϹر + BOOL m_iRecvState; //接收状态 + INT m_iRecvBytes; //接收字节数 + INT m_iRecvCount; //接收计数 + INT m_iExpectBytes = 0; //定义期望接收的数据长度 + BOOL m_bDebug = true; //调试模式,默认关闭 unsigned char m_RecvData[MAX_RECIEVE_BUFFER_SIZE]; }; diff --git a/HSI_HexagonMI_EF3/logger.cpp b/HSI_HexagonMI_EF3/logger.cpp index d2813f9..2c212b3 100644 --- a/HSI_HexagonMI_EF3/logger.cpp +++ b/HSI_HexagonMI_EF3/logger.cpp @@ -66,7 +66,7 @@ void CLogger::SendAndFlush(LPCTSTR format, ...) } //vswprintf_s() -//οӣhttps://www.educative.io/answers/what-is-vswprintfs-in-c +//参考连接:https://www.educative.io/answers/what-is-vswprintfs-in-c void CLogger::SendAndFlushWithTime(LPCTSTR format, ...) { EnterCriticalSection(&m_lockLogger); @@ -76,20 +76,20 @@ void CLogger::SendAndFlushWithTime(LPCTSTR format, ...) } if (!m_File) { - m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYNO); //׷ + m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYNO); //追加 } if (m_File) { int length = 0; va_list list; - //CУ޷гݺʵεͺĿʱʡԺָ + //在C中,当无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 va_start(list, format); - //vswprintf()ַдַ + //vswprintf()函数将宽字符串写入宽字符串缓冲区 - //ws:ַָָָ룬û洢 - //len : ָдػĿַ󳤶ȣֹĿַ - //format : ָָֹĿַָ - //arg : ָʶбֵ + //ws:指定指向给定宽字符串缓冲区的指针,该缓冲区将存储结果 + //len : 指定写回缓冲区的宽字符的最大长度,包括终止的空字符 + //format : 指定指向空终止的宽字符串的指针 + //arg : 指定标识变量参数列表的值 length = vswprintf(m_Str2, 5000, format, list); CTime _cTime = CTime::GetCurrentTime(); CString csTime = _cTime.Format("[%Y/%m/%d %H:%M:%S"); @@ -111,10 +111,10 @@ void CLogger::SendAndFlushWithTime(LPCTSTR format, ...) va_end(list); } - /*ǰ̶ֵ߳ȨһֵȨôٽһ̣߳ԶֽвÿһEnterCriticalSectioṇ߳ӦõһLeaveCriticalSection + /*放弃当前线程对锁定部分的所有权。一旦锁定部分的所有权被放弃,那么请求访问临界区的下一个线程,将可以对锁定部分进行操作。每一个调用EnterCriticalSection的线程,都应该调用一次LeaveCriticalSection。 - ʹһ߳̿ʹһٽζлͬҪȴһٽṹʹڴ棩ʹٽ֮ǰ, ٽḺ̌InitializeCriticalSection InitializeCriticalSectionAndSpinCountʼٽ - һ߳ʹEnterCriticalSection TryEnterCriticalSectionùؼֶȨʱ̱߳뿪ٽʱLeaveCriticalSection*/ + 使一个线程可以使用一个临界段对象来进行互斥同步。这个过程需要优先创建一个临界区结构体变量(分配使用内存)。在使用临界区之前, 待操作临界区的进程必须调用InitializeCriticalSection 或者 InitializeCriticalSectionAndSpinCount函数来初始化临界区。 + 一个线程使用EnterCriticalSection 或TryEnterCriticalSection函数来获得关键部分对象的所有权时,该线程必须在离开临界区时调用LeaveCriticalSection。*/ LeaveCriticalSection(&m_lockLogger); } @@ -151,7 +151,7 @@ string ConvertCharToString(char* a, int size) return s; } -//ɾָĿ¼ԼĿ¼µļ +//删除指定目录以及目录下的所有文件 #include #include #include @@ -160,17 +160,17 @@ using namespace std; void DelFiles(string path) { - //Ŀ¼"\\*.*"еһ + //在目录后面加上"\\*.*"进行第一次搜索 string newDir = path + "\\*.*"; - //ڲҵľ + //用于查找的句柄 intptr_t handle; struct _finddata_t fileinfo; - //һβ + //第一次查找 handle = _findfirst(newDir.c_str(), &fileinfo); if (handle == -1) { - cout << "ļ" << endl; + cout << "无文件" << endl; system("pause"); return; } @@ -179,17 +179,17 @@ void DelFiles(string path) { if (fileinfo.attrib & _A_SUBDIR) { - //ΪļУļ·ٴα + //如果为文件夹,加上文件夹路径,再次遍历 if (strcmp(fileinfo.name, ".") == 0 || strcmp(fileinfo.name, "..") == 0) continue; - // Ŀ¼"\\"Ŀ¼һ + // 在目录后面加上"\\"和搜索到的目录名进行下一次搜索 newDir = path + "\\" + fileinfo.name; - DelFiles(newDir.c_str()); //ȱɾļµļɾյļ + DelFiles(newDir.c_str()); //先遍历删除文件夹下的文件,再删除空的文件夹 cout << newDir.c_str() << endl; if (_rmdir(newDir.c_str()) == 0) { - //ɾļ + //删除空文件夹 cout << "delete empty dir success" << endl; } else @@ -203,7 +203,7 @@ void DelFiles(string path) cout << file_path.c_str() << endl; if (remove(file_path.c_str()) == 0) { - //ɾļ + //删除文件 cout << "delete file success" << endl; } else diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index 96712df..faf8e5c 100644 --- a/HSI_HexagonMI_EF3/version.h +++ b/HSI_HexagonMI_EF3/version.h @@ -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 "2024.04.01 / 19:06 " -#define HSI_FILE_CSDESCRIPTION _T("2024.04.01 / 19:06 ") +#define HSI_FILE_DESCRIPTION "周四 2.24.05 / 18:55 " +#define HSI_FILE_CSDESCRIPTION _T("周四 2.24.05 / 18:55 ") diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll index 3900f21..2149f62 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll differ