结构整理,修改文件编码格式适配VS gb2312

This commit is contained in:
wio
2022-10-10 10:13:29 +08:00
parent 58eabbedad
commit 698e1223fa
34 changed files with 514 additions and 375 deletions
-1
View File
@@ -102,7 +102,6 @@ Global
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x64.ActiveCfg = Debug|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x64.Build.0 = Debug|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x86.ActiveCfg = Debug|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x86.Build.0 = Debug|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+44 -27
View File
@@ -113,6 +113,15 @@ HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM()
//===========================================================================
#pragma endregion
////////////////////////////////////////////////////////////////////////////////
// MOTION API
///////////////////////////////////////////////////////////////////////////////
#pragma region Motion API
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -188,25 +197,19 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome)
return rStatus;
}
//===========================================================================
/**
* .ѯʻ̨Ƿԭ
*
* \param bHomed Ƿ ԭ
* \return
*/
//HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed)
//{
// auto rStatus = HSI_STATUS_NORMAL;
// if (g_pHSI_Motion)
// {
// rStatus = g_pHSI_Motion->IsHomed(bHomed);
// }
// else
// {
// rStatus = HSI_STATUS_FAILED;
// }
// return rStatus;
//}
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->IsHomed(bHomed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis,double &Speed)
{
@@ -615,7 +618,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IOPROGRAM_DATA(byte* SendData,int length)
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_PPStartPoint(double *startPoint)
{
@@ -753,7 +755,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_DISPENSERSTART(double xOffset, double
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_PTPDISTANCE(double& ptpDistance, int& spTimeCount)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -980,9 +981,14 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_FINDORIGINTEST(bool type)
return rStatus;
}
#if 0
/////////////////////////////////////////////////////////////////////////////
#pragma endregion
//²¹¹âµÆ
#ifdef USE_ILLUMINATION_API
////////////////////////////////////////////////////////////////////////////////
// ILLUMINATION API
///////////////////////////////////////////////////////////////////////////////
#pragma region // ILLUMINATION API
//===========================================================================
@@ -1152,8 +1158,14 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_TESTLIGHT(bool flag)
}
//===========================================================================
#pragma endregion
// 0
/////////////////////////////////////////////////////////////////////////////
#endif // USE_ILLUMINATION_API
//̽Õë
#ifdef USE_Probe_API
///////////////////////////////////////////////////////////////////////////////
// Probe API
///////////////////////////////////////////////////////////////////////////////
#pragma region probe
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_TP_STARTUP()
@@ -1344,7 +1356,10 @@ HSI_API HSI_STATUS WINAPI HSI_TP_SHUTDOWN()
//===========================================================================
#pragma endregion
#endif
#endif // USE_Probe_API
//²âÊÔ
#ifdef Test
#pragma region Test
//===========================================================================
@@ -1362,4 +1377,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_COLLECTPOS(bool isEnable, MOTOR_AXISCHOOES_
return rStatus;
}
//===========================================================================
#pragma endregion
#pragma endregion
#endif // Test
+69 -50
View File
@@ -234,11 +234,11 @@ struct sHSIEventProperties
// >>>> In Interfaces
typedef VOID(WINAPI *pEventCallback)(HSI_EVENT_TYPE EventType, HSI_EVENT_RESPONSE_TYPE ResponseType, UINT EventID, char EventData[HSI_MaxStringLength + 1], UINT &EventCallbackID);
//HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly);
//HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT &APIVersionMajor, UINT &APIVersionMinor);
//HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes);
//HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback);
//HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM();
HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly);
HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT &APIVersionMajor, UINT &APIVersionMinor);
HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes);
HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback);
HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM();
// <<<< Out Interfaces
@@ -284,18 +284,18 @@ 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_CH4//Ϊ˶ƿ
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;
@@ -326,11 +326,12 @@ enum HSI_SCAN_MOTION_TYPE
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_MANUAL_TEST//ʹ
HSI_SCAN_MOTION_LINEAR_TEST,//测试使用
HSI_SCAN_MOTION_EQ_TEST,//测试使用
HSI_SCAN_MOTION_MANUAL_TEST//测试使用
};
enum HSI_ZOOM_TYPE
{
HSI_ZOOM_MANUAL = 0,
@@ -347,8 +348,8 @@ const int HSI_MAX_POSITIONS_STORED = 500;
// >>>> In Interfaces
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome);
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed);
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double &Speed);
@@ -368,10 +369,9 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband);
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG();
//HSI_API BOOL WINAPI HSI_MOTION_GET_PROBE_TOUCH();
//HSI_API HSI_STATUS WINAPI HSI_MOTION_TOUCH_MOVE(double dSpeed, double dEndPosX, double dEndPosY, double dEndPosZ, double dI, double dJ, double dK);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &Time);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZA_PROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &dI, double &dJ, double &dK, double &PositionA);
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);
@@ -389,6 +389,8 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_
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_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);
@@ -400,74 +402,88 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();
//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);
//暂未实现
//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);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_POS(UINT AxisTypes, double &ScalePos);
//HSI_API BOOL WINAPI HSI_MOTION_GET_PROBE_TOUCH();
//HSI_API HSI_STATUS WINAPI HSI_MOTION_TOUCH_MOVE(double dSpeed, double dEndPosX, double dEndPosY, double dEndPosZ, double dI, double dJ, double dK);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZA_PROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &dI, double &dJ, double &dK, double &PositionA);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN();
// <<<< Out Interfaces
#ifdef USE_Illumination_API
///////////////////////////////////////////////////////////////////////////////
// Illumination API
///////////////////////////////////////////////////////////////////////////////
enum HSI_ILLUMINATION_INFO
{
HSI_ILLUMINATION_INFO_UNKNOWN = 0,
HSI_ILLUMINATION_INFO_SO7 = 0x01,
HSI_ILLUMINATION_INFO_SO7_II = 0x02,//lvgang
HSI_ILLUMINATION_INFO_SO7_III = 0x04,//shixuyong
HSI_ILLUMINATION_INFO_TOTAL
HSI_ILLUMINATION_INFO_UNKNOWN = 0,
HSI_ILLUMINATION_INFO_SO7 = 0x01,
HSI_ILLUMINATION_INFO_SO7_II = 0x02,//lvgang
HSI_ILLUMINATION_INFO_SO7_III = 0x04,//shixuyong
HSI_ILLUMINATION_INFO_TOTAL
};
enum HSI_ILLUMINATION_BULB_TYPE
{
HSI_ILLUMINATION_BULB_ROUND = 1,
HSI_ILLUMINATION_BULB_SQUARE = 2,
HSI_ILLUMINATION_BULB_RING = 3,
HSI_ILLUMINATION_BULB_GRID = 4
HSI_ILLUMINATION_BULB_ROUND = 1,
HSI_ILLUMINATION_BULB_SQUARE = 2,
HSI_ILLUMINATION_BULB_RING = 3,
HSI_ILLUMINATION_BULB_GRID = 4
};
enum HSI_ILLUMINATION_LAMP_TYPE
{
HSI_ILLUMINATION_LAMP_COAXIAL = 0,
HSI_ILLUMINATION_LAMP_SURFACE = 1,
HSI_ILLUMINATION_LAMP_PROFILE = 2,
HSI_ILLUMINATION_LAMP_PROFILE_OUTER = 3
HSI_ILLUMINATION_LAMP_COAXIAL = 0,
HSI_ILLUMINATION_LAMP_SURFACE = 1,
HSI_ILLUMINATION_LAMP_PROFILE = 2,
HSI_ILLUMINATION_LAMP_PROFILE_OUTER = 3
};
enum HSI_ILLUMINATION_LAMP_CONTROL_TYPE
{
HSI_ILLUMINATION_LAMP_CONTROL_BY_WHOLE_LAMP = 0x0000,
HSI_ILLUMINATION_LAMP_CONTROL_BY_RINGS = 0x0001,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OCTANTS = 0x0002,
HSI_ILLUMINATION_LAMP_CONTROL_BY_SEGMENTS = 0x0004,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OTHER
HSI_ILLUMINATION_LAMP_CONTROL_BY_WHOLE_LAMP = 0x0000,
HSI_ILLUMINATION_LAMP_CONTROL_BY_RINGS = 0x0001,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OCTANTS = 0x0002,
HSI_ILLUMINATION_LAMP_CONTROL_BY_SEGMENTS = 0x0004,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OTHER
};
enum HSI_ILLUMINATION_BULB_STATE
{
HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0,
HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1,
HSI_ILLUMINATION_BULB_STATE_TOTAL
HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0,
HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1,
HSI_ILLUMINATION_BULB_STATE_TOTAL
};
enum HSI_ILLUMINATION_TYPE
{
HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001,
HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002
HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001,
HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002
};
enum HSI_ILLUMINATION_LAMP_LOCATION_TYPE
{
HSI_ILLUMINATION_LAMP_LOCATION_NONE = 0,
HSI_ILLUMINATION_LAMP_LOCATION_TOP_ON_AXIS = 1,
HSI_ILLUMINATION_LAMP_LOCATION_TOP_ANGLED = 2,
HSI_ILLUMINATION_LAMP_LOCATION_BOTTOM = 3,
HSI_ILLUMINATION_LAMP_LOCATION_MOVABLE = 4
HSI_ILLUMINATION_LAMP_LOCATION_NONE = 0,
HSI_ILLUMINATION_LAMP_LOCATION_TOP_ON_AXIS = 1,
HSI_ILLUMINATION_LAMP_LOCATION_TOP_ANGLED = 2,
HSI_ILLUMINATION_LAMP_LOCATION_BOTTOM = 3,
HSI_ILLUMINATION_LAMP_LOCATION_MOVABLE = 4
};
const int HSI_ILLUMINATION_MAX_LAMPS = 6;
const int HSI_ILLUMINATION_MAX_BULB_COLORS = 3;
const int HSI_ILLUMINATION_MAX_RINGS = 12;
const int HSI_ILLUMINATION_MAX_SECTORS = 16;
const int HSI_ILLUMINATION_MAX_BULBS = HSI_ILLUMINATION_MAX_RINGS*HSI_ILLUMINATION_MAX_SECTORS;
const int HSI_ILLUMINATION_MAX_BULBS = HSI_ILLUMINATION_MAX_RINGS * HSI_ILLUMINATION_MAX_SECTORS;
const int HSI_ILLUMINATION_MAX_BULB_TYPE = 2;
const int HSI_MaxLampNameLength = 29, HSI_MaxLampDescriptionLength = 255; // Maximum string length (buffer size - 1)
@@ -477,7 +493,7 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_IS_SUPPORTED(UINT &Types);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_STARTUP();
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_COUNT(int &nLamps);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_INFO(int& _LampInfo, int& _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE],
int *NumRings, int *NumSectors, int* _Color, double *_Angle, bool &bCanBeCalibrated);
int *NumRings, int *NumSectors, int* _Color, double *_Angle, bool &bCanBeCalibrated);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int &Color, double &Angle);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int Color, double Angle, bool bWait);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_STATE_ALL(int _LampInfo, int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS]);
@@ -485,6 +501,9 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_LAMP_STATE_ALL(int _LampInfo, int
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SHUTDOWN();
// <<<< Out Interfaces
#endif // !USE_Illumination_API
class HSI
{
+1 -1
View File
@@ -254,7 +254,7 @@ private:
double seekSpeed;
double retractDis;
double retractManDis;
E_EF3_PROBE_STATUS probeRunStatus;//探针运行状态
E_EF3_PROBE_STATUS probeRunStatus;//探锟斤拷锟斤拷锟斤拷状态
};
extern HSI_Function *g_pHSI_Function;
+2 -1
View File
@@ -89,7 +89,7 @@
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;HSI_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -178,6 +178,7 @@ xcopy "$(OutDir)\$(ProjectName).pdb" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI.
<ClInclude Include="HSI_Motion.h" />
<ClInclude Include="HSI_Sevenocean_EF3.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="SevenOcean\CMMIO_SERIAL.H" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="version.h" />
@@ -19,5 +19,6 @@
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="version.h" />
<ClInclude Include="SevenOcean\CMMIO_SERIAL.H" />
</ItemGroup>
</Project>
+137 -138
View File
@@ -1,5 +1,4 @@
// HSI_Motion.cpp : 定义 DLL 的初始化例程。
//
// HSI_Motion.cpp : 定义 DLL 的初始化例程。
#include "stdafx.h"
#include "HSI.h"
#include "HSI_Sevenocean_EF3.h"
@@ -18,7 +17,7 @@ using namespace std;
//===========================================================================
HSI_Motion *g_pHSI_Motion = nullptr;
CLogger extern *g_pLogger = nullptr;
HANDLE hCom;//串口句柄
HANDLE hCom;//串口句柄
const int WSA_MAJOR_VERSION = 2;
const int WSA_MINOR_VERSION = 2;
@@ -127,7 +126,7 @@ HSI_Motion::HSI_Motion()
bSaveSpeedFlag = false;
m_IsUseManualRunin = 0;
fourthAxisFlag = false;
bCircleRun = false;//圆弧插补
bCircleRun = false;//圆弧插补
m_UseAxisNum = 1;
jogAxisNum = 0;
jogDirFlag = false;
@@ -136,9 +135,9 @@ HSI_Motion::HSI_Motion()
set_start = 0;
set_end = 0;
m_iSpeedType = 0;
m_axisDirX = 0;//探针运动时X轴的运动方向
m_axisDirY = 0;//探针运动时Y轴的运动方向
m_axisDirZ = 0;//探针运动时Z轴的运动方向
m_axisDirX = 0;//探针运动时X轴的运动方向
m_axisDirY = 0;//探针运动时Y轴的运动方向
m_axisDirZ = 0;//探针运动时Z轴的运动方向
m_probeSeekSpeed = 0;
bUseGlueDispenser = false;
@@ -147,9 +146,9 @@ HSI_Motion::HSI_Motion()
m_iGlueAccSpeed = 1;
GlueDispenserindexNum = 0;
m_isUseAport = 0;//A串口
m_isUseAport = 0;//A串口
m_portAnum = 0;
m_isUseBport = 0;//B串口
m_isUseBport = 0;//B串口
m_portBnum = 0;
m_bEmergencyState = false;
SpCompleteTStart = 0;
@@ -182,7 +181,7 @@ HSI_Motion::HSI_Motion()
}
CTime tm = CTime::GetCurrentTime();
CString csTime = tm.Format("%Y-%m-%d");//显示年月日
CString csTime = tm.Format("%Y-%m-%d");//显示年月日
CString dir = L"\\Log\\" + csTime += L".SO7_EF3.Log";
g_pLogger = new CLogger(dir);
g_pLogger2 = new CLogger(L"\\Log\\EF3_SumTime.Log");
@@ -190,7 +189,7 @@ HSI_Motion::HSI_Motion()
{
for (int j = 0; j < 5; j++)
{
m_JogDriveSpeed[j][i] = 10; //表示5个档位
m_JogDriveSpeed[j][i] = 10; //表示5个档位
m_JogStartSpeed[j][i] = 10;
m_JogAccLine[j][i] = 5;
m_JogAccCurve[j][i] = 0;
@@ -293,12 +292,12 @@ bool HSI_Motion::PortInit(int iSerialComPort, int iBuadRate)
sprintf_s(buf, "COM%d", iSerialComPort);
CString comName(buf);
hCom = CreateFile(comName,
GENERIC_READ | GENERIC_WRITE, //允许读和写
0, //独占方式,串口必须为0
GENERIC_READ | GENERIC_WRITE, //允许读和写
0, //独占方式,串口必须为0
NULL,
OPEN_EXISTING, //打开而不是创建,串口必须为打开
0, //同步方式,同步执行时,函数直到操作完成后才返回
NULL);//串口必须为NULL
OPEN_EXISTING, //打开而不是创建,串口必须为打开
0, //同步方式,同步执行时,函数直到操作完成后才返回
NULL);//串口必须为NULL
if (hCom != (HANDLE)-1)
{
PurgeComm(hCom, PURGE_TXCLEAR | PURGE_RXCLEAR);
@@ -315,7 +314,7 @@ bool HSI_Motion::PortInit(int iSerialComPort, int iBuadRate)
return false;//Setting Error!!!!
}
//设置读写超时时间
//设置读写超时时间
COMMTIMEOUTS to;
memset(&to, 0, sizeof(to));
to.ReadIntervalTimeout = 100;
@@ -371,7 +370,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3控制器打开失败,串口");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3控制器打开失败,串口");
EventCallback(sEvenProp);
return HSI_STATUS_FAILED;
}
@@ -418,7 +417,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
g_pLogger->SendAndFlushWithTime(L"[Startup] DriverAlarmStatus HSI_STATUS_FAILED\n");
//return HSI_STATUS_FAILED;
}
//无效软限位
//无效软限位
m_cSendData[0] = CT_MOTOR;
m_cSendData[1] = CT_MOTOR_SET;
m_cSendData[2] = AXIS_XYZU;
@@ -431,12 +430,12 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
m_cSendData[9] = 0;
m_cSendData[10] = 0;
m_cSendData[11] = 0;
m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength);//初始化防止第一次无效
m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength);//初始化防止第一次无效
Sleep(5);
m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength);
g_pLogger->SendAndFlushWithTime(L"[Startup] Limit no Enable\n");
//设置方向4个轴的方向,按位
//设置方向4个轴的方向,按位
m_cSendData[0] = CT_MOTOR;
m_cSendData[1] = CT_MOTOR_SET;
m_cSendData[2] = AXIS_X;
@@ -448,28 +447,28 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
Sleep(10);
m_cSendData[0] = CT_MOTOR;
m_cSendData[1] = CT_MDATA_INIT;
m_cSendData[2] = m_motorType & 0xff; //电机类型(步进电机或伺服电机)
m_cSendData[3] = m_IsUseExternalTrigger; //是否启用外触发功能
m_cSendData[4] = m_IsUseSixRingEightArea; //是否启用六环八区灯功能
m_cSendData[2] = m_motorType & 0xff; //电机类型(步进电机或伺服电机)
m_cSendData[3] = m_IsUseExternalTrigger; //是否启用外触发功能
m_cSendData[4] = m_IsUseSixRingEightArea; //是否启用六环八区灯功能
m_cSendData[5] = m_IsHardLimit;
m_cSendData[6] = m_IsEnableAxis;
m_cSendData[7] = m_IsProbe; //是否启用探针
m_cSendData[8] = m_EF3LightType; //5V高频灯光配置
m_cSendData[9] = m_IsUseRocker; //是否启用摇杆
m_cSendData[10] = m_IsHavePattern; //光栅
m_cSendData[11] = m_AxisHomeDirection; //轴回家方向
m_cSendData[12] = m_IsCollectPos; //是否从串口打印位置
m_cSendData[16] = m_IsLightDebug; //是否不回家也能调试灯光
m_cSendData[7] = m_IsProbe; //是否启用探针
m_cSendData[8] = m_EF3LightType; //5V高频灯光配置
m_cSendData[9] = m_IsUseRocker; //是否启用摇杆
m_cSendData[10] = m_IsHavePattern; //光栅
m_cSendData[11] = m_AxisHomeDirection; //轴回家方向
m_cSendData[12] = m_IsCollectPos; //是否从串口打印位置
m_cSendData[16] = m_IsLightDebug; //是否不回家也能调试灯光
if (m_IsStartInput == 1 && m_IsUseRocker == 2)
{
m_cSendData[14] = m_StartInputPort >> 8 & 0xff; //外部启动端口号 H
m_cSendData[15] = m_StartInputPort & 0xff; //外部启动端口号 L
m_cSendData[14] = m_StartInputPort >> 8 & 0xff; //外部启动端口号 H
m_cSendData[15] = m_StartInputPort & 0xff; //外部启动端口号 L
}
m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength);
Sleep(10);
////步进电机补偿值设定
////步进电机补偿值设定
//if (m_motorType == 0)
//{
// m_cSendData[0] = CT_MOTOR;
@@ -485,7 +484,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
// g_pLogger->SendAndFlushWithTime(L"[Startup] Set Encoder Dir\n");
//}
//多光源板
//多光源板
if (m_bISUseMoreLights > 0)
{
for (int i = 0; i < m_bISUseMoreLights; i++)
@@ -505,7 +504,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板打开网口失败");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板打开网口失败");
EventCallback(sEvenProp);
return HSI_STATUS_FAILED;
}
@@ -529,7 +528,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
}
}
//摇杆速度设置
//摇杆速度设置
if (m_IsUseRocker == 1)
{
m_cSendData[0] = CT_MOTOR;
@@ -557,7 +556,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
Sleep(5);
g_pLogger->SendAndFlushWithTime(L"[Startup] Set Rocker Success\n");
}
//摇杆2下载档位
//摇杆2下载档位
if (m_IsUseRocker == 2)
{
SetAllGears();
@@ -604,7 +603,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
return rStatus;
}
//获取EF3固件版本
//获取EF3固件版本
HSI_STATUS HSI_Motion::GetFirmwareVersion(byte *version)
{
m_Thread_StateData = HSI_THREAD_PAUSED;
@@ -663,7 +662,7 @@ HSI_STATUS HSI_Motion::GetFirmwareVersion(byte *version)
return HSI_STATUS_NORMAL;
}
//回家
//回家
//===========================================================================
HSI_STATUS HSI_Motion::HomeMachine(bool bHomed)
{
@@ -680,7 +679,7 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed)
if (g_pHSI_Motion)
{
g_pLogger->SendAndFlushWithTime(L"[HomeMachine] In\n");
//判断是否需要回家
//判断是否需要回家
bool home(false);
IsHomed(home);
if (home == true)
@@ -700,7 +699,7 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed)
}
if (m_bEmergencyState)
{
AfxMessageBox(_T("急停或安全门或安全光幕触发!"));
AfxMessageBox(_T("急停或安全门或安全光幕触发!"));
return HSI_STATUS_FAILED;
}
CurrentHomeMachineState = E_EF3_HOME_ING;
@@ -842,7 +841,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex()
if (m_Home_Machine_Axis[i] == 1)
{
AxisTypes = IndexConvertAxis(i);
//无效软限位
//无效软限位
m_cSendData[0] = CT_MOTOR;
m_cSendData[1] = CT_MOTOR_SET;
m_cSendData[2] = AxisTypes;
@@ -974,7 +973,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex()
}
if (m_bEmergencyState)
{
AfxMessageBox(_T("急停或安全门或安全光幕触发!"));
AfxMessageBox(_T("急停或安全门或安全光幕触发!"));
return HSI_STATUS_FAILED;
}
if (Count > 25000)
@@ -984,7 +983,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex()
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "回家超时");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "回家超时");
EventCallback(sEvenProp);
return HSI_STATUS_FAILED;
}
@@ -995,22 +994,22 @@ HSI_STATUS HSI_Motion::HomeFindIndex()
bool bHomed = true;
if ((m_SO7_Serial.m_RecvData[38] & 0x01) == 0 && m_Home_Machine_Axis[1] == 1)
{
strcat_s(MessageHome, 30, "1、");
strcat_s(MessageHome, 30, "1、");
bHomed = false;
}
if ((m_SO7_Serial.m_RecvData[38] & 0x02) == 0 && m_Home_Machine_Axis[2] == 1)
{
strcat_s(MessageHome, 30, "2、");
strcat_s(MessageHome, 30, "2、");
bHomed = false;
}
if ((m_SO7_Serial.m_RecvData[38] & 0x04) == 0 && m_Home_Machine_Axis[3] == 1)
{
strcat_s(MessageHome, 30, "3、");
strcat_s(MessageHome, 30, "3、");
bHomed = false;
}
if ((m_SO7_Serial.m_RecvData[38] & 0x08) == 0 && m_Home_Machine_Axis[4] == 1)
{
strcat_s(MessageHome, 30, "4、");
strcat_s(MessageHome, 30, "4、");
bHomed = false;
}
if (!bHomed)
@@ -1019,7 +1018,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex()
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcat_s(MessageHome, 100, "轴回家失败!");
strcat_s(MessageHome, 100, "轴回家失败!");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, MessageHome);
EventCallback(sEvenProp);
return HSI_STATUS_FAILED;
@@ -1069,11 +1068,11 @@ HSI_STATUS HSI_Motion::IsHomed(bool &bHomed)
g_pLogger->SendAndFlushWithTime(L"[IsHomed] In\n");
short isHomed[5] = { 1, 1, 1, 1, 1 };
//int Count = 0;
//if (bHomed == true)//定位是增大判断精度
//if (bHomed == true)//定位是增大判断精度
//{
// Count = 1000;
//}
//所有轴都不需要回家
//所有轴都不需要回家
if (m_Home_Machine_Axis[1] == 0 && m_Home_Machine_Axis[2] == 0 && m_Home_Machine_Axis[3] == 0 && m_Home_Machine_Axis[4] == 0)
{
g_pLogger->SendAndFlushWithTime(L"[IsHomed] No Axis Go Home E_GTS_HOME_FINISHED\n");
@@ -1082,7 +1081,7 @@ HSI_STATUS HSI_Motion::IsHomed(bool &bHomed)
return HSI_STATUS_NORMAL;
}
//判断是否需要回家
//判断是否需要回家
int Delay = 0;
while (m_SO7_Serial.m_RecvData[0] != 2)
{
@@ -1176,7 +1175,7 @@ HSI_STATUS HSI_Motion::ZeroPos(bool bZeroPos)
return rStatus;
}
//JOG模式
//JOG模式
//===========================================================================
HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
{
@@ -1206,12 +1205,12 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
m_cSendData[1] = CT_MOTOR_SET;
m_cSendData[2] = AxisTypes;
m_cSendData[3] = SOFT_LIMIT_POS_NEG;
m_cSendData[4] = (int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff;
m_cSendData[4] = (int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff;//正限位
m_cSendData[5] = ((int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 8) & 0xff;
m_cSendData[6] = ((int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 16) & 0xff;
m_cSendData[7] = ((int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 24) & 0xff;
m_cSendData[8] = (int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff;
m_cSendData[8] = (int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff; //负限位
m_cSendData[9] = ((int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 8) & 0xff;
m_cSendData[10] = ((int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 16) & 0xff;
m_cSendData[11] = ((int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 24) & 0xff;
@@ -1221,7 +1220,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
}
else
{
//无效软限位
//无效软限位
m_cSendData[0] = CT_MOTOR;
m_cSendData[1] = CT_MOTOR_SET;
m_cSendData[2] = AxisTypes;
@@ -1254,7 +1253,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
{
if (AxisTypes == AXIS_X && m_motorType & 0x01)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[1] / m_Resolution[1]) - (int)(m_N_Work_Limit[1] / m_Resolution[1]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1285,7 +1284,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
}
else if (AxisTypes == AXIS_Y && m_motorType & 0x02)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[2] / m_Resolution[2]) - (int)(m_N_Work_Limit[2] / m_Resolution[2]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1316,7 +1315,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
}
if (AxisTypes == AXIS_Z && m_motorType & 0x04)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[3] / m_Resolution[3]) - (int)(m_N_Work_Limit[3] / m_Resolution[3]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1347,7 +1346,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
}
if (AxisTypes == AXIS_U && m_motorType & 0x08)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[4] / m_Resolution[4]) - (int)(m_N_Work_Limit[4] / m_Resolution[4]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1426,7 +1425,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
m_cSendData[0] = CT_MOTOR;
if (AxisNumber == 1 || AxisNumber == 2)
{
if (!bJOGDir)//方向
if (!bJOGDir)//方向
{
m_cSendData[1] = CT_START_JOG_NEG;
}
@@ -1437,7 +1436,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
}
else
{
if (bJOGDir)//方向
if (bJOGDir)//方向
{
m_cSendData[1] = CT_START_JOG_POS;
}
@@ -1455,7 +1454,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
}
return rStatus;
}
//JOG模式
//JOG模式
//===========================================================================
HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
{
@@ -1500,7 +1499,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
}
else
{
//无效软限位
//无效软限位
m_cSendData[0] = CT_MOTOR;
m_cSendData[1] = CT_MOTOR_SET;
m_cSendData[2] = AxisTypes;
@@ -1537,7 +1536,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
{
if (AxisTypes == AXIS_X && m_motorType & 0x01)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[1] / m_Resolution[1]) - (int)(m_N_Work_Limit[1] / m_Resolution[1]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1568,7 +1567,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
}
else if (AxisTypes == AXIS_Y && m_motorType & 0x02)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[2] / m_Resolution[2]) - (int)(m_N_Work_Limit[2] / m_Resolution[2]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1599,7 +1598,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
}
if (AxisTypes == AXIS_Z && m_motorType & 0x04)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[3] / m_Resolution[3]) - (int)(m_N_Work_Limit[3] / m_Resolution[3]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1630,7 +1629,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
}
if (AxisTypes == AXIS_U && m_motorType & 0x08)
{
if (!bJOGDir)//负方向
if (!bJOGDir)//负方向
{
RemainPul = (int)(now_pos[4] / m_Resolution[4]) - (int)(m_N_Work_Limit[4] / m_Resolution[4]);
limitSDPul = (DriveSpeed - StartSpeed) * 13;
@@ -1709,7 +1708,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
m_cSendData[0] = CT_MOTOR;
if (AxisNumber == 1 || AxisNumber == 2)
{
if (!bJOGDir)//方向
if (!bJOGDir)//方向
{
m_cSendData[1] = CT_START_JOG_NEG;
}
@@ -1720,7 +1719,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed)
}
else
{
if (bJOGDir)//方向
if (bJOGDir)//方向
{
m_cSendData[1] = CT_START_JOG_POS;
}
@@ -1849,7 +1848,7 @@ int HSI_Motion::P2P(short AxisNumber, long Pos, double Speed, double Acc)
return 0;
}
//运动控制部分
//运动控制部分
//===========================================================================
HSI_STATUS HSI_Motion::GetPositionEncPrfMulti(UINT AxisTypes, double *EncPos, double *PrfPos, int Count)
{
@@ -1919,7 +1918,7 @@ HSI_STATUS HSI_Motion::GetPositionXyz(UINT AxisTypes, double &PositionX, double
{
auto rStatus = HSI_STATUS_NORMAL;
UNREFERENCED_PARAMETER(AxisTypes);
//读取3个轴的位置
//读取3个轴的位置
CString tempStr;
if (g_pHSI_Motion)
{
@@ -1980,7 +1979,7 @@ HSI_STATUS HSI_Motion::GetPositionXyz(UINT AxisTypes, double &PositionX, double
HSI_STATUS HSI_Motion::GetEncoderXyz(long *lEncoderVal)
{
auto rStatus = HSI_STATUS_NORMAL;
//读取3个轴的编码器值
//读取3个轴的编码器值
if (g_pHSI_Motion)
{
if (m_SO7_Serial.m_RecvData[0] == 2)
@@ -2112,19 +2111,19 @@ HSI_STATUS HSI_Motion::SetPositionXyz(UINT AxisTypes, double PositionX, double
Pos_t[4] = NowPos[4] = (int)(m_EncPos[4] / m_Resolution[4]);
}
if (m_motorType & 0x01) //步进电机
if (m_motorType & 0x01) //步进电机
Pos[1] = (int)(PositionX / m_Resolution[1]) - NowPos[1];
else
Pos[1] = (int)(PositionX / m_Resolution[1]) - Pos_t[1];
if (m_motorType & 0x02) //步进电机
if (m_motorType & 0x02) //步进电机
Pos[2] = (int)(PositionX / m_Resolution[2]) - NowPos[2];
else
Pos[2] = (int)(PositionY / m_Resolution[2]) - Pos_t[2];
if (m_motorType & 0x04) //步进电机
if (m_motorType & 0x04) //步进电机
Pos[3] = (int)(PositionX / m_Resolution[3]) - NowPos[3];
else
Pos[3] = (int)(PositionZ / m_Resolution[3]) - Pos_t[3];
if (m_motorType & 0x08) //步进电机
if (m_motorType & 0x08) //步进电机
Pos[4] = (int)(PositionX / m_Resolution[4]) - NowPos[4];
else
Pos[4] = (int)(m_PositionA / m_Resolution[4]) - Pos_t[4];
@@ -2454,7 +2453,7 @@ HSI_STATUS HSI_Motion::SetPositionXyz(UINT AxisTypes, double PositionX, double
}
Sleep(10);
//启动插补和定位功能
//启动插补和定位功能
/* if (m_motorType == 1)
{
send_pos_data[0] = CT_MOTOR;
@@ -2617,7 +2616,7 @@ HSI_STATUS HSI_Motion::SetCircleInterpolate(double PositionX, double PositionY
return rStatus;
}
//探针接口
//探针接口
//===========================================================================
void HSI_Motion::ProbeRetractManDist(int RetractManDist)
{
@@ -2750,7 +2749,7 @@ HSI_STATUS HSI_Motion::JogProbe(UINT AxisTypes, double Speed)
return rStatus;
}
//读取配置
//读取配置
//===========================================================================
HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile)
{
@@ -2762,7 +2761,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile)
CString temp = L"";
CString strGear[5] = { L"GEAR0_", L"GEAR1_", L"GEAR2_", L"GEAR3_", L"GEAR4_" };
CString axisNum[5] = { L"0", L"1", L"2", L"3", L"4" };
//判断Log目录是否存在,不存在就创建
//判断Log目录是否存在,不存在就创建
if (CreateDirectory(m_AppPath + L"\\Log", NULL))
{
g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Motion_Inifile] Create Log Directory\n");
@@ -2775,7 +2774,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile)
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Motion.ini文件不存在!");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Motion.ini文件不存在!");
EventCallback(sEvenProp);
return HSI_STATUS_FAILED;
}
@@ -2836,7 +2835,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile)
m_setPositionPrecision = GetPrivateProfileInt(L"SETPOSITION", L"SETPPSITION_PRECISION", 1, csAppPath);
m_setPositionNum = GetPrivateProfileInt(L"SETPOSITION", L"SETPOSITION_NUMBER", 1, csAppPath);
//两块四路光源板
//两块四路光源板
m_isUseAport = GetPrivateProfileInt(L"COMPORT", L"IS_COM_PORT_A", 0, csAppPath);
m_portAnum = GetPrivateProfileInt(L"COMPORT", L"COM_PORT_A", 0, csAppPath);
m_isUseBport = GetPrivateProfileInt(L"COMPORT", L"IS_COM_PORT_B", 0, csAppPath);
@@ -2909,7 +2908,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile)
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Config.ini文件不存在!");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Config.ini文件不存在!");
EventCallback(sEvenProp);
return HSI_STATUS_FAILED;
}
@@ -2977,7 +2976,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile)
return rStatus;
}
//读取/设置光栅尺精度
//读取/设置光栅尺精度
//===========================================================================
HSI_STATUS HSI_Motion::GetScaleResolution(double &_ScaleX, double &_ScaleY, double &_ScaleZ)
{
@@ -3003,7 +3002,7 @@ HSI_STATUS HSI_Motion::SetScaleResolution(double _ScaleX, double _ScaleY, double
return rStatus;
}
//回调定位完成
//回调定位完成
//===========================================================================
void HSI_Motion::SendMsgMotionFinished()
{
@@ -3014,7 +3013,7 @@ void HSI_Motion::SendMsgMotionFinished()
EventCallback(sEvenProp);
}
//回调探针运行
//回调探针运行
//===========================================================================
void HSI_Motion::SendMsgProbeFinished()
{
@@ -3095,7 +3094,7 @@ void HSI_Motion::UpdateMotionState()
// double ProPulse[5] = { 0.0 };
if (interpolationflag&&m_motorType)
{
while (Count < m_SetPotion_Count[1])//到位次数判断
while (Count < m_SetPotion_Count[1])//到位次数判断
{
Sleep(2);
GetPositionXyz(HSI_MOTION_AXIS_ALL, prfpos[1], prfpos[2], prfpos[3], prfpos[0]);
@@ -3122,7 +3121,7 @@ void HSI_Motion::UpdateMotionState()
Count++;
g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] m_SetPotion_Count = %d\n", Count);
}
//if (Count == m_SetPotion_Count[1]) //超时退出
//if (Count == m_SetPotion_Count[1]) //超时退出
//{
// if (g_IsClose == false)
// {
@@ -3131,7 +3130,7 @@ void HSI_Motion::UpdateMotionState()
// sEvenProp.EventType = HSI_EVENT_ERROR;
// sEvenProp.EventID = HSI_EVENT_MOTION;
// sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
// strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_HSI定位超时!");
// strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_HSI定位超时!");
// EventCallback(sEvenProp);
// }
// else
@@ -3164,25 +3163,25 @@ void HSI_Motion::UpdateMotionState()
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_EF3定位超时!");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_EF3定位超时!");
EventCallback(sEvenProp);
}
switch (CurrentMotionState)
{
case E_SO7_MOTION_MOVETO:
{
g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState E_SO7_MOTION_MOVETO\n");
m_Thread_State = HSI_THREAD_PAUSED;
CurrentMotionState = E_SO7_MOTION_NONE;
m_IsExMotion = 2;
SendMsgMotionFinished();
break;
}
default:
{
g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState default\n");
break;
}
case E_SO7_MOTION_MOVETO:
{
g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState E_SO7_MOTION_MOVETO\n");
m_Thread_State = HSI_THREAD_PAUSED;
CurrentMotionState = E_SO7_MOTION_NONE;
m_IsExMotion = 2;
SendMsgMotionFinished();
break;
}
default:
{
g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState default\n");
break;
}
}
}
g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Out\n");
@@ -3207,7 +3206,7 @@ void HSI_Motion::UpdateMotionStateIO()
UINT recvData = 0;
while (m_Thread_StateIO == HSI_THREAD_RUNNING)
{
//1个脚踏开关
//1个脚踏开关
Sleep(3);
GetDIO(HSI_MOTION_INPUT_CH1, m_InputStatus);
if (m_IsStartInput == 1)
@@ -3371,7 +3370,7 @@ void HSI_Motion::DoEvents()
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "DoEvents_异常");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "DoEvents_异常");
EventCallback(sEvenProp);
}
if (g_IsClose)
@@ -3445,12 +3444,12 @@ HSI_STATUS HSI_Motion::GetDIO(UINT IOChannel, UINT& _Status)
{
_Status = m_SO7_Serial.m_RecvData[40];
}
if (IOChannel == HSI_MOTION_INPUT_CH1) //获取通用输入
if (IOChannel == HSI_MOTION_INPUT_CH1) //获取通用输入
{
_Status = m_SO7_Serial.m_RecvData[34];
_Status = (m_SO7_Serial.m_RecvData[35] | (_Status << 8)) & 0xffff;
}
if (IOChannel == HSI_MOTION_OUTPUT_CH1) //获取通用输出
if (IOChannel == HSI_MOTION_OUTPUT_CH1) //获取通用输出
{
_Status = m_SO7_Serial.m_RecvData[36];
_Status = (m_SO7_Serial.m_RecvData[37] | (_Status << 8)) & 0xffff;
@@ -3549,7 +3548,7 @@ HSI_STATUS HSI_Motion::GetAxisStatus(int* _Status)
}
//===========================================================================
//暂停和关闭
//暂停和关闭
HSI_STATUS HSI_Motion::AbortMotion()
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -3653,7 +3652,7 @@ HSI_STATUS HSI_Motion::Shutdown()
}
//===========================================================================
//触发灯光
//触发灯光
HSI_STATUS HSI_Motion::SetTriggerLight(int triggleNum, int delayLighting, int delayLightBefor, int triggleMode, double* Intensities)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -3715,7 +3714,7 @@ HSI_STATUS HSI_Motion::SetTriggerLight(int triggleNum, int delayLighting, int de
return rStatus;
}
//硬件触发拍照
//硬件触发拍照
//===========================================================================
HSI_STATUS HSI_Motion::DCCPPStartPoint(double *startPoint)
{
@@ -3736,7 +3735,7 @@ HSI_STATUS HSI_Motion::DCCScanSetData(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
//触发的位置为相对位置,用法一般是移动到起点位置,再开始设置触发位置(相对位置),最终设置终点位置
//触发的位置为相对位置,用法一般是移动到起点位置,再开始设置触发位置(相对位置),最终设置终点位置
g_pLogger->SendAndFlushWithTime(L"[DCCScanSetData] In\n");
int axisNum;
unsigned char m_SendDCCData[64] = { 0 };
@@ -4272,7 +4271,7 @@ HSI_STATUS HSI_Motion::DCCForLightPlate()
return rStatus;
}
//转盘
//转盘
//===========================================================================
HSI_STATUS HSI_Motion::StartPlcJob(int* CamerasDis, int* BinsDis, int SubArea, int filterTime1, int filterTime2, int pluseSumDis)
{
@@ -4287,7 +4286,7 @@ HSI_STATUS HSI_Motion::StartPlcJob(int* CamerasDis, int* BinsDis, int SubArea, i
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "开始前请确认当前位置大于零!");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "开始前请确认当前位置大于零!");
EventCallback(sEvenProp);
return HSI_STATUS_FAILED;
}
@@ -4387,7 +4386,7 @@ HSI_STATUS HSI_Motion::GetTriggleCount(int *nCount, int& nArea)
return rStatus;
}
//===========================================================================
//点胶
//点胶
HSI_STATUS HSI_Motion::GluePPSpnts(int* ppsDir, double* gluePPSPos, int* delayLightBefore, int* lightTime, double* lightData, int num)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -4395,20 +4394,20 @@ HSI_STATUS HSI_Motion::GluePPSpnts(int* ppsDir, double* gluePPSPos, int* delayLi
{
unsigned char send_gluePPS_data[64] = { 0 };
send_gluePPS_data[0] = CT_GLUEDISPENSER;
send_gluePPS_data[1] = 0x01; //擦除指令
send_gluePPS_data[1] = 0x01; //擦除指令
m_WriteByte = Send_Command(0, (const char*)send_gluePPS_data, m_SendDataLength);
Sleep(200);
int posIndex = 0;
int loadFeet[4];
int j = 0;
int c = 0; //触发计数
int c = 0; //触发计数
int dirType = 0;
int saveDir = 0;
int duanNum = 0;
double triggerPnt[4];
double savePPSPnt[4];
GlueDispenserindexNum = 0;
#pragma region 拍照点
#pragma region 拍照点
for (size_t i = 0; i < num; i++)
{
if (i == 0)
@@ -5214,7 +5213,7 @@ HSI_STATUS HSI_Motion::GlueDispenserStart(double xOffset, double yOffset, double
}
return rStatus;
}
void HSI_Motion::GluedispenserDone()
void HSI_Motion::GluedispenserDone()//涂胶机完成
{
if (bRunGlueDispenser == HSI_THREAD_RUNNING)
{
@@ -5231,7 +5230,7 @@ void HSI_Motion::GluedispenserDone()
{
if ((m_SO7_Serial.m_RecvData[60] & 0x0f))
{
g_pLogger->SendAndFlushWithTime(L"[GluedispenserDone] Run End Normal\n");
g_pLogger->SendAndFlushWithTime(L"[GluedispenserDone] Run End Normal\n");//涂胶机完成
m_SO7_Serial.m_RecvData[60] = 0;
break;
}
@@ -5274,7 +5273,7 @@ HSI_STATUS HSI_Motion::GetPntsDistance(double& pDistance, int& spTimeCount)
return rStatus;
}
//===========================================================================
//运动控制参数读取及设置
//运动控制参数读取及设置
//===========================================================================
int HSI_Motion::SpeedPercent(int AxisNum, double &Speed, int &DirveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve)
{
@@ -5338,7 +5337,7 @@ int HSI_Motion::SpeedPercent(int AxisNum, double &Speed, int &DirveSpeed, int &S
return (int)Speed;
}
//===========================================================================
//JoyStick运动控制参数读取及设置
//JoyStick运动控制参数读取及设置
//===========================================================================
bool HSI_Motion::SpeedPercentJoyStick(int AxisNum, long &Speed, int &DirveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve)
{
@@ -5505,7 +5504,7 @@ double HSI_Motion::LimitOver(UINT AxisTypes, double &LimitPos)
{
switch (AxisNumber)
{
case 1: //轴1
case 1: //轴1
{
if (LimitPos >= m_P_Work_Limit[1])
{
@@ -6180,7 +6179,7 @@ unsigned __stdcall HSI_Motion::m_ThreadData(LPVOID pThis)
case HSI_THREAD_RUNNING:
{
TRACE("HSI_THREAD_RUNNING.\r\n");
_This->UpdateMotionStateData();
_This->UpdateMotionStateData();//获取最新位置命令
break;
}
case HSI_THREAD_PAUSED:
@@ -6201,7 +6200,7 @@ unsigned __stdcall HSI_Motion::m_ThreadData(LPVOID pThis)
}
//===========================================================================
//JOG运行到软限位的运动调节
//JOG运行到软限位的运动调节
//===========================================================================
void HSI_Motion::UpdateMotionStateJOGStop()
{
@@ -6311,7 +6310,7 @@ void HSI_Motion::UpdateMotionStateJOGStop()
case 4:
{
//第四轴未添加
//第四轴未添加
} break;
default:
break;
@@ -6321,7 +6320,7 @@ void HSI_Motion::UpdateMotionStateJOGStop()
}
}
//===========================================================================
void HSI_Motion::CreateThreadJOGStop()
void HSI_Motion::CreateThreadJOGStop() //JOG运行到软限位的运动调节
{
if (m_Thread_IdJOGStop == NULL)
{
@@ -6365,7 +6364,7 @@ void HSI_Motion::CloseThreadJOGStop()
}
//===========================================================================
unsigned __stdcall HSI_Motion::m_ThreadJOGStop(LPVOID pThis)
unsigned __stdcall HSI_Motion::m_ThreadJOGStop(LPVOID pThis) //JOG运行到软限位的运动调节
{
HSI_Motion* _This = (HSI_Motion*)pThis;
for (;;)
@@ -6399,7 +6398,7 @@ unsigned __stdcall HSI_Motion::m_ThreadJOGStop(LPVOID pThis)
}
}
//===========================================================================
//无用
//无用
HSI_STATUS HSI_Motion::IOStep(bool RunSts)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -6465,7 +6464,7 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3控制器已断开连接");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3控制器已断开连接");
EventCallback(sEvenProp);
}
}
@@ -6481,7 +6480,7 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng
/////////////////////////////////////////////////////////////////////////
#pragma region //网口通信8路 26路光源板通信
#pragma region //网口通信8路 26路光源板通信
#pragma warning(disable:4996)
TCPIP_RETURN_CODE HSI_Motion::TCPConnect(int index, char* Address, u_short port)
@@ -6505,7 +6504,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPConnect(int index, char* Address, u_short port)
{
int iMode = 1;
int i = 0;
int retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);//非阻塞连接
int retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);//非阻塞连接
if (retVal == SOCKET_ERROR)
{
closesocket(m_socket[index]);
@@ -6545,7 +6544,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPConnect(int index, char* Address, u_short port)
}
}
iMode = 0;
retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);//设置阻塞
retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);//设置阻塞
if (retVal == SOCKET_ERROR)
{
closesocket(m_socket[index]);
@@ -6680,7 +6679,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPSend()
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板已断开连接");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板已断开连接");
EventCallback(sEvenProp);
m_ThreadTCP_State = TCPIP_THREAD_EXIT;
closesocket(m_socket[m_selectedIndex]);
@@ -6723,7 +6722,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPSend()
sEvenProp.EventType = HSI_EVENT_ERROR;
sEvenProp.EventID = HSI_EVENT_MOTION;
sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK;
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板已断开连接");
strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板已断开连接");
EventCallback(sEvenProp);
m_ThreadTCP_State = TCPIP_THREAD_EXIT;
closesocket(m_socket[m_selectedIndex]);
@@ -6845,7 +6844,7 @@ HSI_STATUS HSI_Motion::SetAllGears()
unsigned char send_glue_data[64] = { 0 };
send_glue_data[0] = 0x01;
send_glue_data[1] = 0x01;
send_glue_data[2] = 0x01 << (i - 1); //轴号
send_glue_data[2] = 0x01 << (i - 1); //轴号
send_glue_data[3] = 0x08;
for (size_t j = 0; j < 5; j++)
+107 -107
View File
@@ -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
{
@@ -27,23 +27,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_CLEAR,
CT_GLUEDISPENSER_START,
CT_GLUEDISPENSER_STOP,
//转盘时启用
//转盘时启用
CT_RTSET,
CT_BINSDATA,
CT_RTSTOP,
@@ -72,13 +72,13 @@ enum MOTOR_CMD //第二级指令
enum MOTOR_START_POSOTION //
{
INTERPOLATION = 0x61,//插补
GANGED = 0x41,//独立
INTERPOLATION = 0x61,//插补
GANGED = 0x41,//独立
CIRCLER = 0x64,
CIRCLEL = 0x65,
};
enum MOTOR_AXISCHOOES_CMD //第三级指令
enum MOTOR_AXISCHOOES_CMD //第三级指令
{
AXIS_X = 0x01,
AXIS_Y = 0x02,
@@ -97,7 +97,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,
@@ -235,28 +235,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;
//读取EF3的JOG stop的状态
//读取EF3的JOG stop的状态
static int m_Thread_StateJOGStop;
static HANDLE m_Thread_IdJOGStop;
static HANDLE m_Thread_MutexJOGStop;
@@ -266,16 +266,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];
@@ -288,129 +288,129 @@ 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_Jog_Auto_Focus;//变焦使用的速度
int m_LogIsOpen[5];//是否打开记录,0为打开,非0为关闭
int m_LogIsOpen[5];//是否打开记录,0为打开,非0为关闭
unsigned int m_precisionCount[5];
unsigned int m_precisionTime[5];
int m_StopJogMode[5];//JOG模式采用急停还是平滑停止
double m_PosThread[5];//SetpositionXyz的目标位置
int m_PosNow[5];//调用SetpositionXyz时,读取当前位置
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; //0是xyz用的,1是单轴用的,2都不用
int m_Home_Machine_Axis[5];//用于启动时需要回原点的轴号选择
int m_Home_Pos_Axis[5];//记住关闭电源时的位置,用于判断是否还需要回原点
int m_IsHomeEncPos; //是否启动实际位置判断是否回家,默认0,1启用,0关闭
int m_IsHomePrfPos; //是否启动规划位置判断是否回家,默认1,1启用,0关闭
int m_IsExMotion; //0是xyz用的,1是单轴用的,2都不用
int m_Home_Machine_Axis[5];//用于启动时需要回原点的轴号选择
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软件停止
//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_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_DeviceType;//设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0
int m_UseAxisNum;//转盘设备使用轴号
int m_IbinCount;//记录获取到的分bin数
bool m_IsUsePPS;
int m_iJoyStick;//遥感类型:0:无 1:老式摇杆
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关闭
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轴
//探针触发时,锁存的轴号,默认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;//EF3板com口,默认为2
int m_ForSoft;//针对使用软件 0为MST 1为Metus
int m_IsUseManualRunin;//是否开启手动插补(只针对步进电机)
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_IsUseRocker; //是否启用摇杆 0为不启用 1为启用旧摇杆,2为新摇杆, 默认为0
int m_IsCollectPos; //是否通过串口打印位置,与摇杆2互斥
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运动的轴号
bool bCircleRun;//圆弧插补
int iCircleRunPnt[5];//圆弧插补时的圆心位置
int jogAxisNum;//jog运动的轴号
int jogspeed;
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;
@@ -426,7 +426,7 @@ public:
double m_EncPos[5];
double m_PrfPos[5];
double m_PosForAllAxis[5];//记录4轴位置
double m_PosForAllAxis[5];//记录4轴位置
bool m_bConnected;
int m_SendDataLength;
unsigned char m_cSendData[64];
@@ -442,13 +442,13 @@ public:
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();
@@ -456,19 +456,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();
//读取EF3的JOG位置 以便停止JOG运动
//读取EF3的JOG位置 以便停止JOG运动
static unsigned __stdcall m_ThreadJOGStop(LPVOID pThis);
void CreateThreadJOGStop();
void CloseThreadJOGStop();
@@ -496,12 +496,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_READ_TYPE CurrentReadDataType;
//网口通信添加
//网口通信添加
private:
TCPIP_RETURN_CODE TCPConnect(int index,char* Address, u_short port);
void DisConnect();
@@ -525,9 +525,9 @@ private:
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;
+4 -4
View File
@@ -1,4 +1,4 @@
// HSI_Sevenocean_EF3.cpp : 定义 DLL 的初始化例程。
// HSI_Sevenocean_EF3.cpp : 定义 DLL 的初始化例程。
//
#include "stdafx.h"
@@ -30,10 +30,10 @@ HSI_Sevenocean_EF3::~HSI_Sevenocean_EF3()
}
//===========================================================================
/**
* HSI
* HSI
*
* \param _hWnd
* \param _bOfflineOnly False
* \param _hWnd
* \param _bOfflineOnly False
* \return
*/
HSI_STATUS HSI_Sevenocean_EF3::Startup(HWND _hWnd, bool _bOfflineOnly)
+3 -3
View File
@@ -1,13 +1,13 @@
// HSI_Sevenocean_EF3.h : HSI_Sevenocean_EF3 DLL 的主头文件
// HSI_Sevenocean_EF3.h : HSI_Sevenocean_EF3 DLL 的主头文件
//
#pragma once
#ifndef __AFXWIN_H__
#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
#endif
#include "resource.h" // 主符号
#include "resource.h" // 主符号
#include <cstring>
+2 -1
View File
@@ -1,4 +1,5 @@
#include "stdafx.h"
#include "../stdafx.h"
#include "cmmio_base.h"
#ifdef _WIN64
@@ -1,4 +1,4 @@
#include "stdafx.h"
#include "../stdafx.h"
#include <process.h>
@@ -170,7 +170,7 @@ DWORD CPSerial::Open()
if( SetCommMask( m_PortHandle, EV_RXCHAR | EV_TXEMPTY | EV_BREAK |
EV_CTS | EV_DSR | EV_ERR | EV_RLSD ) )
{
// Initialise the Overlapping structures and start the
// Initialize the Overlapping structures and start the
// monitoring task
m_ReceiveOLap.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
m_TransmitOLap.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
+1
View File
@@ -2,6 +2,7 @@
#include "logger.h"
#include <atltime.h>
#include <sys/timeb.h>
void CLogger::SendAtTime(const TCHAR* buffer)
{
EnterCriticalSection(&m_lockLogger);
+1 -1
View File
@@ -50,7 +50,7 @@ public:
void SendAndFlush(LPCTSTR, ...);
void SendAndFlushPerMode(LPCTSTR, ...);
void SendAndFlushWithTime(LPCTSTR, ...);
bool IsEnabledLog/* = false*/;//是否启用日志
bool IsEnabledLog/* = false*/;//Ƿ־
CString m_FileName;
long m_lLogMask;
FILE *m_File;
+2 -2
View File
@@ -1,8 +1,8 @@
//{{NO_DEPENDENCIES}}
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by HSI_Sevenocean_EF3.rc
// 新对象的下一组默认值
// 新对象的下一组默认值
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
+5 -5
View File
@@ -1,8 +1,8 @@
// stdafx.cpp : 只包括标准包含文件的源文件
// HSI_Sevenocean_EF3.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息
// stdafx.cpp : 只包括标准包含文件的源文件
// HSI_Sevenocean_EF3.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息
#include "stdafx.h"
// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用
// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用
+6 -9
View File
@@ -1,17 +1,14 @@
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息
// Windows 头文件:
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息
// Windows 头文件:
//#include <windows.h>
#include <afxwin.h>
// TODO: 在此处引用程序需要的其他头文件
// TODO: 在此处引用程序需要的其他头文件
+2 -2
View File
@@ -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.09.30 / 10:33 "
#define HSI_FILE_CSDESCRIPTION _T("2022.09.30 / 10:33 ")
#define HSI_FILE_DESCRIPTION "2022.10.10 / 9:43 "
#define HSI_FILE_CSDESCRIPTION _T("2022.10.10 / 9:43 ")
@@ -1,2 +1,2 @@
#TargetFrameworkVersion=:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native64Bit:WindowsTargetPlatformVersion=10.0.19041.0
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.19041.0
Debug|x64|E:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\|
Binary file not shown.
+3 -1
View File
@@ -106,7 +106,9 @@ namespace WPFSerialAssistant
}
}
private void AutoSendData()
private void AutoSendData()
{
bool ret = SendData();
@@ -435,11 +435,6 @@
Header="功能按键">
<StackPanel>
<TextBox
x:Name="textVersion"
Margin="5"
Padding="10" />
<Button
x:Name="getVersionButton"
Margin="5"
@@ -25,55 +25,137 @@ namespace WPFSerialAssistant
InitializeComponent();
InitCore();
}
// 单次锁存
// 单次锁存 可以通过单次锁存,读取当前的位置值
private void SingleLatch_Checked(object sender, RoutedEventArgs e)
{
//1 清空缓存
string cmd = "01 06";
SerialPortWrite(cmd);
Utilities.sleep(5);
//2 设置单次模式
cmd = "01 01 01";
SerialPortWrite(cmd);
Utilities.sleep(5);
//3 开始锁存
cmd = "01 02";
SerialPortWrite(cmd);
Utilities.sleep(5);
//4 读取锁存值
cmd = "01 09";
SerialPortWrite(cmd);
Utilities.sleep(5);
}
//定时锁存
//定时锁存 每10ms(1000*10us),即100HZ,锁存一次位置的值,发一个脉冲
private void TimingLatches_Checked(object sender, RoutedEventArgs e)
{
//1 清空缓存
string cmd = "01 06";
SerialPortWrite(cmd);
Utilities.sleep(5);
//2 设置定时模式
cmd = "01 01 02 03 e8";
SerialPortWrite(cmd);
Utilities.sleep(5);
//3 开始锁存
cmd = "01 02";
SerialPortWrite(cmd);
Utilities.sleep(5);
//4 停止锁存
cmd = "01 03";
SerialPortWrite(cmd);
Utilities.sleep(5);
//5 读取锁存值
cmd = "01 09";
SerialPortWrite(cmd);
Utilities.sleep(5);
//6 清空数据与flash
cmd = "01 04";
SerialPortWrite(cmd);
Utilities.sleep(5);
}
//分频锁存
//分频锁存 以X轴为基准,每20个脉冲锁存一次,并发送一次脉冲
private void FreDivsionRadioButton_Checked(object sender, RoutedEventArgs e)
{
//1 清空缓存
string cmd = "01 06";
SerialPortWrite(cmd);
Utilities.sleep(5);
//2 设置定时模式
cmd = "01 01 03 00 00 14 01";
SerialPortWrite(cmd);
Utilities.sleep(5);
//3 开始锁存
cmd = "01 02";
SerialPortWrite(cmd);
Utilities.sleep(5);
//4 停止锁存
cmd = "01 03";
SerialPortWrite(cmd);
Utilities.sleep(5);
//5 读取锁存值
cmd = "01 09";
SerialPortWrite(cmd);
Utilities.sleep(5);
//6 清空数据与flash
cmd = "01 04";
SerialPortWrite(cmd);
Utilities.sleep(5);
}
//获取固件版本
private void GetVersionButton_Click(object sender, RoutedEventArgs e)
{
string cmd = "01 08";
SerialPortWrite(cmd);
}
//设置归零
//设置归零,表示XYZ轴的清零,把当前的位置读数重置为0.
private void SetZeroButton_Click(object sender, RoutedEventArgs e)
{
string cmd = "01 06";
SerialPortWrite(cmd);
}
//开始锁存
private void StartRecordButtion_Click(object sender, RoutedEventArgs e)
{
string cmd = "01 02";
SerialPortWrite(cmd);
}
//停止锁存
private void StopRecordButton_Click(object sender, RoutedEventArgs e)
{
string cmd = "01 03";
SerialPortWrite(cmd);
}
//获取锁存值
private void GetRecordButton_Click(object sender, RoutedEventArgs e)
{
string cmd = "01 09";
SerialPortWrite(cmd);
}
//清除Flash区
private void ClearFlashButton_Click(object sender, RoutedEventArgs e)
{
string cmd = "01 04";
SerialPortWrite(cmd);
}
//获得锁存点数量
private void GetPointsButton_Click(object sender, RoutedEventArgs e)
{
string cmd = "01 05";
SerialPortWrite(cmd);
}
}
}
@@ -2,12 +2,13 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
//using System.Windows;
//using System.Threading.Tasks;
using System.Windows.Forms;
namespace WPFSerialAssistant
{
public static class Utilities
public static class Utilities
{
public static double m_Resolution = 0.0001; //分辨率设置 0.1um
public static string BytesToText(List<byte> bytesBuffer, ReceiveMode mode, Encoding encoding)
@@ -117,5 +118,28 @@ namespace WPFSerialAssistant
return result.Trim();
}
}
public static void sleep(int milliSecond)
{
int start = Environment.TickCount;
while (Math.Abs(Environment.TickCount - start) < milliSecond)
{
Application.DoEvents();
}
}
public static bool Delay(int delayTime)
{
DateTime now = DateTime.Now;
int s;
do
{
TimeSpan spand = DateTime.Now - now;
s = spand.Seconds;
Application.DoEvents();
}
while (s < delayTime);
return true;
}
}
}
@@ -63,6 +63,7 @@
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
Binary file not shown.