diff --git a/HSI_HexagonMI_EF3.sln b/HSI_HexagonMI_EF3.sln index 22cafb3..8bb7164 100644 --- a/HSI_HexagonMI_EF3.sln +++ b/HSI_HexagonMI_EF3.sln @@ -1,14 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.34112.143 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34221.43 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HSI_HexagonMI_EF3", "HSI_HexagonMI_EF3\HSI_HexagonMI_EF3.vcxproj", "{ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ACS Motion", "Motion\ACS Motion\ACS Motion.csproj", "{19741897-37D8-43EE-94A2-637975035CEA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSI_CONTROLLER_WPFTest", "..\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_GOOGOL_GTS800_WPFTest\HSI_CONTROLLER_WPFTest.csproj", "{A21A5B56-EB1C-4377-9E76-141FAC055988}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFSerialAssistant", "SerialAssistant\WPFSerialAssistant\WPFSerialAssistant.csproj", "{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSI_SEVENOCEAN_EF1_CsTest", "HSI_SEVENOCEAN_EF1_CsTest\HSI_SEVENOCEAN_EF1_CsTest.csproj", "{7ED499CB-651C-4154-9741-EEF347BDBFB5}" @@ -29,13 +27,12 @@ Global {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Debug|Any CPU.ActiveCfg = Debug|Win32 {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Debug|x64.ActiveCfg = Debug|x64 {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Debug|x64.Build.0 = Debug|x64 - {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Debug|x86.ActiveCfg = Debug|Win32 - {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Debug|x86.Build.0 = Debug|Win32 - {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Release|Any CPU.ActiveCfg = Release|Win32 + {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Debug|x86.ActiveCfg = Debug|x64 + {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Debug|x86.Build.0 = Debug|x64 + {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Release|Any CPU.ActiveCfg = Release|x64 {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Release|x64.ActiveCfg = Release|x64 {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Release|x64.Build.0 = Release|x64 - {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Release|x86.ActiveCfg = Release|Win32 - {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Release|x86.Build.0 = Release|Win32 + {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}.Release|x86.ActiveCfg = Release|x64 {19741897-37D8-43EE-94A2-637975035CEA}.Debug|Any CPU.ActiveCfg = Debug|x86 {19741897-37D8-43EE-94A2-637975035CEA}.Debug|x64.ActiveCfg = Debug|x64 {19741897-37D8-43EE-94A2-637975035CEA}.Debug|x86.ActiveCfg = Debug|x86 @@ -45,17 +42,6 @@ Global {19741897-37D8-43EE-94A2-637975035CEA}.Release|x64.Build.0 = Release|x64 {19741897-37D8-43EE-94A2-637975035CEA}.Release|x86.ActiveCfg = Release|x86 {19741897-37D8-43EE-94A2-637975035CEA}.Release|x86.Build.0 = Release|x86 - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Debug|x64.ActiveCfg = Debug|x64 - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Debug|x86.ActiveCfg = Debug|Any CPU - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Debug|x86.Build.0 = Debug|Any CPU - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Release|Any CPU.Build.0 = Release|Any CPU - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Release|x64.ActiveCfg = Release|x64 - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Release|x64.Build.0 = Release|x64 - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Release|x86.ActiveCfg = Release|Any CPU - {A21A5B56-EB1C-4377-9E76-141FAC055988}.Release|x86.Build.0 = Release|Any CPU {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 diff --git a/HSI_HexagonMI_EF3/HSI.cpp b/HSI_HexagonMI_EF3/HSI.cpp index 59f2864..456bd73 100644 --- a/HSI_HexagonMI_EF3/HSI.cpp +++ b/HSI_HexagonMI_EF3/HSI.cpp @@ -21,12 +21,15 @@ static bool g_bOfflineOnly = false; //1 Metus躯14Ƿؼң˶ʼ汾JOG˶˶ָλõȣdll // // +// V0.1.10 2024/02/26 +//--------------------------------------- +//1ʵƽ̨ ᶨ壬޸Ĵ // // -// -// -// -// +// Ҽ +//X 1 - 30 730 +//Y 0 - 10 1000 +//Z 8 - 280 5 // // // diff --git a/HSI_HexagonMI_EF3/HSI.h b/HSI_HexagonMI_EF3/HSI.h index c824e56..95c2440 100644 --- a/HSI_HexagonMI_EF3/HSI.h +++ b/HSI_HexagonMI_EF3/HSI.h @@ -21,7 +21,7 @@ #endif const int HSI_APIVersionMajor = 1; -const int HSI_APIVersionMinor = 9; +const int HSI_APIVersionMinor = 10; const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1) /////////////////////////////////////////////////////////////////////////////// // Interface API @@ -375,7 +375,7 @@ enum HSI_MOTION_IO_TYPE }; //const UINT HSI_MOTION_AXIS_ALL = HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_Y | HSI_MOTION_AXIS_Z; -const UINT HSI_MOTION_AXIS_ALL = ACSC_AXIS_0 | ACSC_AXIS_1 | ACSC_AXIS_4; +const UINT HSI_MOTION_AXIS_ALL = ACSC_AXIS_1 | ACSC_AXIS_0 | ACSC_AXIS_8; enum HSI_MOTION_MOVE_TYPE { diff --git a/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj b/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj index ad3dc76..b7ec8ed 100644 --- a/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj +++ b/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj @@ -1,18 +1,10 @@  - - Debug - Win32 - Debug x64 - - Release - Win32 - Release x64 @@ -22,36 +14,21 @@ {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B} Win32Proj HSI_Sevenocean_EF3 - 10.0.19041.0 + 10.0.17763.0 HSI_HexagonMI_EF3 DynamicLibrary true - v141 - Unicode - Dynamic - - - DynamicLibrary - true - v141 + v143 Unicode Dynamic DynamicLibrary false - v141 - true - Unicode - Dynamic - - - DynamicLibrary - false - v141 + v143 true Unicode Dynamic @@ -62,35 +39,22 @@ - - - - - - true - \DirectXLib\Include;$(IncludePath) + C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;\DirectXLib\Include;$(IncludePath) $(MSBuildProjectDirectory)\$(Platform)\$(Configuration)\ $(MSBuildProjectDirectory)\obj - - true - false \DirectXLib\Include;$(IncludePath) - - false - - NotUsing Level3 Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;HSI_EXPORTS;%(PreprocessorDefinitions) @@ -103,36 +67,10 @@ hid.lib;setupapi.lib;DirectXLib\lib\x64\d2d1.lib;DirectXLib\lib\x64\d3d9.lib;DirectXLib\lib\x64\d3d10.lib;DirectXLib\lib\x64\d3d10_1.lib;DirectXLib\lib\x64\d3d11.lib;DirectXLib\lib\x64\d3dcompiler.lib;DirectXLib\lib\x64\D3DCSX.lib;DirectXLib\lib\x64\d3dx9.lib;DirectXLib\lib\x64\d3dx10.lib;DirectXLib\lib\x64\d3dx11.lib;DirectXLib\lib\x64\d3dxof.lib;DirectXLib\lib\x64\dinput8.lib;DirectXLib\lib\x64\dsound.lib;DirectXLib\lib\x64\dwrite.lib;DirectXLib\lib\x64\DxErr.lib;DirectXLib\lib\x64\dxgi.lib;DirectXLib\lib\x64\dxguid.lib;DirectXLib\lib\x64\X3DAudio.lib;DirectXLib\lib\x64\xapobase.lib;DirectXLib\lib\x64\XAPOFX.lib;DirectXLib\lib\x64\XInput.lib;ACSCL_x64.LIB;%(AdditionalDependencies) - $(LocalDebuggerWorkingDirectory)\ACS;%(AdditionalLibraryDirectories) + C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64;$(LocalDebuggerWorkingDirectory)\ACS;%(AdditionalLibraryDirectories) - copy "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)HSI_SEVENOCEAN_EF1_CsTest\bin\Debug\HSI.dll" -copy "$(TargetDir)$(ProjectName).dll" "C:\Hexagon\Metus2020R1\HSI_Sevenocean_EF3.dll" -copy "$(TargetDir)$(ProjectName).dll" "C:\Hexagon\Metus-7.10.1 967\HSI_Sevenocean_EF3.dll" -copy "$(TargetDir)$(ProjectName).dll" "E:\HexagonProjects\2022-05-直线电机平台\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_Sevenocean_EF1_WPFTest\bin\x64\Debug\HSI.dll" - - - version.cmd - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;HSI_EXPORTS;%(PreprocessorDefinitions) - true - $ (ProjectDir) - - - Windows - true - ;%(AdditionalDependencies) - .\HSI_Sevenocean_EF3.def - - - xcopy "$(OutDir)\$(ProjectName).dll" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI.dll/D /F /Y -xcopy "$(OutDir)\$(ProjectName).pdb" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI.pdb /D /F /Y + copy "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)HSI_SEVENOCEAN_EF1_CsTest\bin\Debug\HSI.dll" version.cmd @@ -157,24 +95,6 @@ xcopy "$(OutDir)\$(ProjectName).pdb" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI. hid.lib;setupapi.lib;DirectXLib\lib\x64\d2d1.lib;DirectXLib\lib\x64\d3d9.lib;DirectXLib\lib\x64\d3d10.lib;DirectXLib\lib\x64\d3d10_1.lib;DirectXLib\lib\x64\d3d11.lib;DirectXLib\lib\x64\d3dcompiler.lib;DirectXLib\lib\x64\D3DCSX.lib;DirectXLib\lib\x64\d3dx9.lib;DirectXLib\lib\x64\d3dx10.lib;DirectXLib\lib\x64\d3dx11.lib;DirectXLib\lib\x64\d3dxof.lib;DirectXLib\lib\x64\dinput8.lib;DirectXLib\lib\x64\dsound.lib;DirectXLib\lib\x64\dwrite.lib;DirectXLib\lib\x64\DxErr.lib;DirectXLib\lib\x64\dxgi.lib;DirectXLib\lib\x64\dxguid.lib;DirectXLib\lib\x64\X3DAudio.lib;DirectXLib\lib\x64\xapobase.lib;DirectXLib\lib\x64\XAPOFX.lib;DirectXLib\lib\x64\XInput.lib;%(AdditionalDependencies) - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;HSI_SEVENOCEAN_EF3_EXPORTS;HSI_EXPORTS;%(PreprocessorDefinitions) - true - - - Windows - true - true - true - .\HSI_Sevenocean_EF3.def - - @@ -197,9 +117,7 @@ xcopy "$(OutDir)\$(ProjectName).pdb" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI. Create - Create Create - Create diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index eb0f469..64c5fdd 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -479,7 +479,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) } #endif //ʹܵ - int Axes[] = {ACSC_AXIS_0, ACSC_AXIS_1, ACSC_AXIS_4, -1}; + int Axes[] = {ACSC_AXIS_1, ACSC_AXIS_0, ACSC_AXIS_8, -1}; //ݵ涨壬0ӦXᣬ1ӦYᣬ8ӦZ if (!acsc_EnableM(handleACS, Axes, nullptr)) { g_pLogger->SendAndFlushWithTime(L"[ACS Motion] ACS Motors Enable Failed!\n"); @@ -1146,6 +1146,10 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed) m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2); Sleep(5); + //ؼұʾΪ1 + m_Home_Machine_Axis[1] = 1; + m_Home_Machine_Axis[0] = 1; + m_Home_Machine_Axis[8] = 1; g_pLogger->SendAndFlushWithTime(L"[HomeMachine] Go Home success\n"); g_pLogger->SendAndFlushWithTime(L"[HomeMachine] Out\n"); } @@ -1510,10 +1514,10 @@ HSI_STATUS HSI_Motion::IsHomed(bool& bHomed) return HSI_STATUS_NORMAL; } - // жǷҪؼңȡACSؼұ־λжϱϵǷѾع + // жǷҪؼңȡACSؼұ־λжϱϵǷѾع 1Ѿعң0δع if (!acsc_ReadInteger(handleACS, ACSC_NONE, "YAW_HOME_DONE", ACSC_NONE, ACSC_NONE, ACSC_NONE, ACSC_NONE, isHomed, - nullptr)) + nullptr)) { g_pLogger->SendAndFlushWithTime(L"[IsHomed] ACS Read ISHOMED Flag Error\n"); ErrorsHandler(); @@ -1527,7 +1531,7 @@ HSI_STATUS HSI_Motion::IsHomed(bool& bHomed) isHomed[1], isHomed[2]); //־λ Ѿع - if (isHomed[0] == 2 && isHomed[1] == 1 && isHomed[2] == 1 && isHomed[3] == 1) + if (isHomed[0] == 1 && isHomed[1] == 1 && isHomed[2] == 1 && isHomed[3] == 1) { g_pLogger->SendAndFlushWithTime(L"[IsHomed] E_GTS_HOME_FINISHED\n"); CurrentHomeMachineState = E_EF3_HOME_FINISHED; @@ -2506,7 +2510,7 @@ HSI_STATUS HSI_Motion::StopJog() m_WriteByte = Send_Command(0, (const char*)m_SendJogData, m_SendDataLength); }*/ - int Axes[] = {ACSC_AXIS_0, ACSC_AXIS_1, ACSC_AXIS_4, -1}; + int Axes[] = {ACSC_AXIS_1, ACSC_AXIS_0, ACSC_AXIS_8, -1}; if (handleACS != ACSC_INVALID) { if (!acsc_HaltM(handleACS, Axes, nullptr)) //ֹͣJOG˶ @@ -2855,7 +2859,7 @@ HSI_STATUS HSI_Motion::GetPositionXyz(UINT AxisTypes, double& PositionX, double& bGetPosition = false; return HSI_ACS_ERROR; } - if (!acsc_GetFPosition(handleACS, ACSC_AXIS_4, &PositionZ, nullptr)) + if (!acsc_GetFPosition(handleACS, ACSC_AXIS_8, &PositionZ, nullptr)) { g_pLogger->SendAndFlushWithTime(L"[GetPositionEncPrfMulti] get PositionZ failed\n"); ErrorsHandler(); @@ -3593,7 +3597,7 @@ HSI_STATUS HSI_Motion::SetPositionXyz(UINT AxisTypes, double PositionX, double P //ʼ˶ָλã˶ - int Axes[] = {ACSC_AXIS_0, ACSC_AXIS_1,ACSC_AXIS_4, -1}; //Ҫ˶ + int Axes[] = {ACSC_AXIS_1, ACSC_AXIS_0,ACSC_AXIS_8, -1}; //Ҫ˶ double Points[] = {PositionY, PositionX, PositionZ}; //Ŀλõ if (!acsc_ToPointM(handleACS, 0, Axes, Points, nullptr)) //ƶλ { @@ -4394,9 +4398,9 @@ void HSI_Motion::UpdateMotionState() g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Now wait Run End\n"); printf("\nWaiting for motion end\n"); + acsc_WaitMotionEnd(handleACS, ACSC_AXIS_1, INFINITE);//εȴ X,Y,Z˶λ acsc_WaitMotionEnd(handleACS, ACSC_AXIS_0, INFINITE); - acsc_WaitMotionEnd(handleACS, ACSC_AXIS_1, INFINITE); - acsc_WaitMotionEnd(handleACS, ACSC_AXIS_4, INFINITE); + acsc_WaitMotionEnd(handleACS, ACSC_AXIS_8, INFINITE); printf("\nMotion end\n"); @@ -5271,7 +5275,7 @@ HSI_STATUS HSI_Motion::AbortMotion() // g_IsClose = true; g_pLogger->SendAndFlushWithTime(L"[AbortMotion] In\n"); - int Axes[] = {ACSC_AXIS_0, ACSC_AXIS_1, ACSC_AXIS_4, -1}; + int Axes[] = {ACSC_AXIS_1, ACSC_AXIS_0, ACSC_AXIS_8, -1}; if (handleACS != ACSC_INVALID) { if (!acsc_HaltM(handleACS, Axes, nullptr)) //ֹͣJOG˶ @@ -7923,7 +7927,7 @@ short HSI_Motion::AxisConvertIndex(UINT AxisTypes) } case HSI_MOTION_AXIS_Z: { - AxisNumber = 0x04; + AxisNumber = 0x08; break; } case HSI_MOTION_AXIS_R: diff --git a/HSI_HexagonMI_EF3/HSI_Motion.h b/HSI_HexagonMI_EF3/HSI_Motion.h index 63c236e..13b9ff7 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.h +++ b/HSI_HexagonMI_EF3/HSI_Motion.h @@ -432,7 +432,7 @@ public: short m_AxisThread; int m_IsExMotion; //0xyzõģ1ǵõģ2 - int m_Home_Machine_Axis[5]; //ʱҪԭѡ + int m_Home_Machine_Axis[10]; //ʱҪԭѡ int m_Home_Pos_Axis[5]; //סرյԴʱλãжǷҪԭ int m_IsHomeEncPos; //ǷʵλжǷؼңĬ01ã0ر int m_IsHomePrfPos; //Ƿ滮λжǷؼңĬ11ã0ر diff --git a/HSI_HexagonMI_EF3/logger.h b/HSI_HexagonMI_EF3/logger.h index a488c13..555afcd 100644 --- a/HSI_HexagonMI_EF3/logger.h +++ b/HSI_HexagonMI_EF3/logger.h @@ -9,7 +9,9 @@ #include #include #include - +#include "stdafx.h" +#include +#include using namespace std; const long LOGINIT = 0x0001; const long LOGACTIONS = 0x0002; diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index e860527..793f7ff 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 "2022.12.01 / 15:52 " -#define HSI_FILE_CSDESCRIPTION _T("2022.12.01 / 15:52 ") +#define HSI_FILE_DESCRIPTION "2024.02.26 / 16:16 " +#define HSI_FILE_CSDESCRIPTION _T("2024.02.26 / 16:16 ") diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.dll b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.dll index 6845637..24e38d9 100644 Binary files a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.dll and b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.dll differ diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.exp b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.exp index 720c3cc..3c8f306 100644 Binary files a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.exp and b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.exp differ diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.ilk b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.ilk deleted file mode 100644 index b6ad105..0000000 Binary files a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.ilk and /dev/null differ diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.lib b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.lib index 445be17..b88262b 100644 Binary files a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.lib and b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.lib differ diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.pdb b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.pdb index 3125711..7988b88 100644 Binary files a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.pdb and b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.pdb differ diff --git a/HSI_SEVENOCEAN_EF1_CsTest/Program.cs b/HSI_SEVENOCEAN_EF1_CsTest/Program.cs index ead278e..2cf12d7 100644 --- a/HSI_SEVENOCEAN_EF1_CsTest/Program.cs +++ b/HSI_SEVENOCEAN_EF1_CsTest/Program.cs @@ -74,9 +74,9 @@ namespace HSI_SEVENOCEAN_EF1_CsTest #endregion //6 是否回家 - //var bHomed = true; - //rStatus = Motion.IsHomed(ref bHomed); - //Console.WriteLine("Motion.IsHomed:{0}", rStatus); + var bHomed = true; + rStatus = Motion.IsHomed(ref bHomed); + Console.WriteLine("Motion.IsHomed:{0}", rStatus); var bexit = false; var SpeedGear = 0.2; var dPos = new double[3]; diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini index f5263c5..7ccb5bd 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini differ diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Motion.ini b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Motion.ini index 0a3044c..401f37f 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Motion.ini and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Motion.ini differ diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll index 6845637..24e38d9 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll differ diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.exe b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.exe index d378a5a..33233c6 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.exe and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.exe differ diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.pdb b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.pdb index d10b1ce..f31fb13 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.pdb and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI_SEVENOCEAN_EF1_CsTest.pdb differ diff --git a/HexcalMC/MainFrom.Designer.cs b/HexcalMC/MainFrom.Designer.cs index b3939a0..04e03a0 100644 --- a/HexcalMC/MainFrom.Designer.cs +++ b/HexcalMC/MainFrom.Designer.cs @@ -80,7 +80,7 @@ this.tabPage1 = new System.Windows.Forms.TabPage(); this.formsPlot1 = new ScottPlot.FormsPlot(); this.tabPage2 = new System.Windows.Forms.TabPage(); - this.sharpGLViewportControl1 = new HexcalMC.Base.SharpGLViewportControl(); + this.openGLControl1 = new SharpGL.OpenGLControl(); this.elementHost1 = new System.Windows.Forms.Integration.ElementHost(); this.groupBox7 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox(); @@ -146,6 +146,7 @@ this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.tabPage2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.openGLControl1)).BeginInit(); this.groupBox7.SuspendLayout(); this.groupBox1.SuspendLayout(); this.groupBox5.SuspendLayout(); @@ -635,7 +636,7 @@ // // tabPage2 // - this.tabPage2.Controls.Add(this.sharpGLViewportControl1); + this.tabPage2.Controls.Add(this.openGLControl1); this.tabPage2.Controls.Add(this.elementHost1); this.tabPage2.Location = new System.Drawing.Point(4, 22); this.tabPage2.Name = "tabPage2"; @@ -645,12 +646,21 @@ this.tabPage2.Text = "3D绘图"; this.tabPage2.UseVisualStyleBackColor = true; // - // sharpGLViewportControl1 + // openGLControl1 // - this.sharpGLViewportControl1.Location = new System.Drawing.Point(28, 16); - this.sharpGLViewportControl1.Name = "sharpGLViewportControl1"; - this.sharpGLViewportControl1.Size = new System.Drawing.Size(699, 314); - this.sharpGLViewportControl1.TabIndex = 1; + this.openGLControl1.DrawFPS = false; + this.openGLControl1.Location = new System.Drawing.Point(10, 16); + this.openGLControl1.Name = "openGLControl1"; + this.openGLControl1.OpenGLVersion = SharpGL.Version.OpenGLVersion.OpenGL2_1; + this.openGLControl1.RenderContextType = SharpGL.RenderContextType.DIBSection; + this.openGLControl1.RenderTrigger = SharpGL.RenderTrigger.TimerBased; + this.openGLControl1.Size = new System.Drawing.Size(724, 314); + this.openGLControl1.TabIndex = 1; + this.openGLControl1.Visible = false; + this.openGLControl1.OpenGLInitialized += new System.EventHandler(this.openGLControl1_OpenGLInitialized); + this.openGLControl1.OpenGLDraw += new SharpGL.RenderEventHandler(this.openGLControl1_OpenGLDraw); + this.openGLControl1.GDIDraw += new SharpGL.RenderEventHandler(this.openGLControl1_GDIDraw); + this.openGLControl1.Resized += new System.EventHandler(this.openGLControl1_Resized); // // elementHost1 // @@ -1231,6 +1241,7 @@ this.tabControl1.ResumeLayout(false); this.tabPage1.ResumeLayout(false); this.tabPage2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.openGLControl1)).EndInit(); this.groupBox7.ResumeLayout(false); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); @@ -1355,6 +1366,6 @@ private System.Windows.Forms.TabPage tabPage2; private ScottPlot.FormsPlot formsPlot1; private System.Windows.Forms.Integration.ElementHost elementHost1; - private Base.SharpGLViewportControl sharpGLViewportControl1; + private SharpGL.OpenGLControl openGLControl1; } } diff --git a/HexcalMC/MainFrom.cs b/HexcalMC/MainFrom.cs index 419caec..95b3b11 100644 --- a/HexcalMC/MainFrom.cs +++ b/HexcalMC/MainFrom.cs @@ -1,46 +1,76 @@ using System; using System.Collections.Generic; using System.IO; -using System.Text; using System.Windows.Forms; using ACS.SPiiPlusNET; using HexcalMC.Base; using HexcalMC.Form; using HexcalMC.Hexcal; using HexcalMC.Properties; +using SharpGL; using Telerik.WinControls.UI; namespace HexcalMC { + //定一个 回家状态枚举,包括 从未回家,正在回家,已经回家 + public enum HomeStates + { + None, //默认状态 + NotHome, + Homing, + Homed + } + + //定义 运动状态枚举,包括 正在运动,运动到位,Jog运动 + public enum MotionStates + { + None, //默认状态 + Moving, + InPos, + Jogging + } + public partial class MainFrom : RadRibbonForm { + private List _pointCloud = new List(); //运动中点集合 + + + public MainFrom() { InitializeComponent(); - var sharpGlViewportControl = new SharpGLViewportControl - { - Dock = DockStyle.Fill - }; + #region 3D相关绘制,暂时取消 - var tabPage = new TabPage("3D 窗口"); - tabPage.Controls.Add(sharpGlViewportControl); - tabControl1.TabPages.Add(tabPage); + //var sharpGlViewportControl = new SharpGLViewportControl + //{ + // Dock = DockStyle.Fill + //}; + + //var tabPage = new TabPage("3D 窗口"); + //tabPage.Controls.Add(sharpGlViewportControl); + //tabControl1.TabPages.Add(tabPage); + + //// 设置容器控件的 DoubleBuffered 属性为 true + //DoubleBuffered = true; + //// 创建一个包含点云数据的列表 + //var points = new List + //{ + // new Point3D(0, 0, 0), + // new Point3D(1, 1, 1), + // new Point3D(-1, -1, -1) + // // 可以添加更多的点云数据 + //}; + + //// 将点云数据传递给 SharpGLViewportControl + //sharpGlViewportControl.SetPointCloud(points); + + tabControl1.TabPages.RemoveAt(1); + + #endregion - // 设置容器控件的 DoubleBuffered 属性为 true - DoubleBuffered = true; - // 创建一个包含点云数据的列表 - var points = new List - { - new Point3D(0, 0, 0), - new Point3D(1, 1, 1), - new Point3D(-1, -1, -1) - // 可以添加更多的点云数据 - }; - // 将点云数据传递给 SharpGLViewportControl - sharpGlViewportControl.SetPointCloud(points); } private void MainFrom_Load(object sender, EventArgs e) @@ -52,22 +82,19 @@ namespace HexcalMC //加载配置文件 LoadConfig(); - double[] dataX = { 1, 2, 3, 4, 5 }; - double[] dataY = { 1, 4, 9, 16, 25 }; - formsPlot1.Plot.AddScatter(dataX, dataY); - formsPlot1.Refresh(); //启动界面刷新 timer_RefreshUI.Start(); - - // } private void MainFrom_Shown(object sender, EventArgs e) //窗体显示准备好接受用户输入时发生 { //启动服务端,用于接收hexcal传来的指令 StartServer(); + + + //Plot3D(); } private void MainFrom_FormClosed(object sender, FormClosedEventArgs e) @@ -95,24 +122,58 @@ namespace HexcalMC Errors.StatusWrite.Close(); } - //定一个 回家状态枚举,包括 从未回家,正在回家,已经回家 - private enum HomeStates + private void LoadConfig() //加载配置文件 { - None, //默认状态 - NotHome, - Homing, - Homed + //判断配置文件是否存在 + if (!File.Exists(StrConfigFile)) + { + MessageBox.Show("配置文件不存在,请检查配置文件", "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + //正限位 + X_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "X_MAXSTROKESW"); + Y_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Y_MAXSTROKESW"); + Z_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Z_MAXSTROKESW"); + + //负限位 + X_MINSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "X_MINSTROKESW"); + Y_MINSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Y_MINSTROKESW"); + Z_MINSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Z_MINSTROKESW"); } - //定义 运动状态枚举,包括 正在运动,运动到位,Jog运动 - private enum MotionStates + private void Plot2D(List pointCloud) { - None, //默认状态 - Moving, - InPos, - Jogging + // 清空画布 + formsPlot1.Plot.Clear(); + + List dataX = new List(); + List dataY = new List(); + + foreach (Point3D point3D in pointCloud) + { + dataX.Add(point3D.X); + dataY.Add(point3D.Y); + } + + formsPlot1.Plot.AddScatter(dataX.ToArray(), dataY.ToArray()); + formsPlot1.Refresh(); } + private void Plot3D() //绘制3D图 + { + List points = new List(); + + // 假设已经有了一些点的数据,将其添加到 List 对象中 + points.Add(new Point3D(1, 2, 3)); + points.Add(new Point3D(4, 5, 6)); + + LoadPoints(points); + } + + + + #region 运动平台变量区 private Api _acs; @@ -139,15 +200,16 @@ namespace HexcalMC private Label[] _mLblRightLimit; //右限位 private HomeStates _homeStates; //回家状态 - private MotionStates _motionStates; //运动状态 - private readonly int _motion_timeout = 5000; //定义运动超时时间 + private MotionStates _currentMotionState; //当前运动状态 + private readonly int _motionTimeout = 5000; //定义运动超时时间 + public static Axis[] USE_AXIS = { Axis.ACSC_AXIS_0, Axis.ACSC_AXIS_1, Axis.ACSC_AXIS_4, Axis.ACSC_NONE }; //定义启用的轴,后面运动时会使用 //定义 XYZ三个轴的左右行程范围 - public string strConfigFile = Application.StartupPath + "\\File\\config.ini"; + public string StrConfigFile = Application.StartupPath + "\\File\\config.ini"; public static double X_MAXSTROKESW = 100.0; //正限位 public static double Y_MAXSTROKESW = 50.0; public static double Z_MAXSTROKESW = 10.0; @@ -156,7 +218,6 @@ namespace HexcalMC public static double Y_MINSTROKESW = -50.0; public static double Z_MINSTROKESW = -10.0; - #endregion #region hexcal变量区 @@ -230,6 +291,53 @@ namespace HexcalMC } } + public static string ConstructString(string variableName, double[] values) + { + string result = variableName + " "; + for (int i = 0; i < values.Length; i++) + { + result += values[i].ToString("F6"); + if (i < values.Length - 1) + { + result += ", "; + } + } + + return result; + } + + public static string ConstructPosString(Point3D point) + { + double[] values = { point.X, point.Y, point.Z, 0.0, 0.0, 0.0, 0.0 }; + return ConstructString("POS", values); + } + + public static Point3D ParsePoint3DFromCommand(string input) + { + string[] parts = input.Split(' ')[1].Split(','); + if (parts.Length >= 3) + { + double x = double.Parse(parts[0]); + double y = double.Parse(parts[1]); + double z = double.Parse(parts[2]); + return new Point3D(x, y, z); + } + + throw new ArgumentException("输入字符串格式不正确。"); + } + + private void CheckPlatformStatus() + { + if (_currentMotionState == MotionStates.None || _currentMotionState == MotionStates.InPos) //默认或到位 + { + SendMsgToHexcal("READY"); + } + else + { + SendMsgToHexcal("BUSY"); + } + } + private void ParseHexcalMsg(string msg) //编写一个Hexcal协议解析函数 { DebugDfn.AddLogText("正在解析" + msg); @@ -240,16 +348,17 @@ namespace HexcalMC if (msg.Contains("\x02") || msg.Contains("\u0002")) { - // 发送 "READY" 字符串作为响应 - byte[] response = Encoding.ASCII.GetBytes("READY"); - SendMsgToHexcal("READY"); + CheckPlatformStatus(); } else if (msg.Contains("\x03") || msg.Contains("\u0003")) { - // 发送 "READY" 字符串作为响应 - byte[] response = Encoding.ASCII.GetBytes("READY"); - SendMsgToHexcal("READY"); + CheckPlatformStatus(); } + else if (msg.Contains("^B")) //查询状态, READY或BUSY + { + CheckPlatformStatus(); + } + else if (msg.Contains("CMMTYP")) //测量机类型 { SendMsgToHexcal("CMMTYP MA 19617, FDC V15.00, 6 6 2 , 0"); @@ -258,17 +367,22 @@ namespace HexcalMC { SendMsgToHexcal("00-000-000-00000 FDC V51.04.0000 DATE: 12/21/22 TIME: 12:50:55"); } - else if (msg.Contains("^B")) //查询状态, READY或BUSY - { - SendMsgToHexcal("READY"); - } + else if (msg.Contains("SHOW MAXSTROKESW")) //最大行程,根据实际情况填写 { - SendMsgToHexcal("MAXSTROKESW 233.200000,346.500000,15.100000,0.000000,0.000000,0.000000,0.000000"); + //SendMsgToHexcal("MAXSTROKESW 233.200000,346.500000,15.100000,0.000000,0.000000,0.000000,0.000000"); + + double[] values = { X_MAXSTROKESW, Y_MAXSTROKESW, Z_MAXSTROKESW, 0.0, 0.0, 0.0, 0.0 }; + string resultString = ConstructString("MAXSTROKESW", values); + SendMsgToHexcal(resultString); } else if (msg.Contains("SHOW MINSTROKESW")) //最小行程,根据实际情况填写 { - SendMsgToHexcal("MINSTROKESW -68.800000,-55.500000,-286.900000,0.000000,0.000000,0.000000,0.000000"); + //SendMsgToHexcal("MINSTROKESW -68.800000,-55.500000,-286.900000,0.000000,0.000000,0.000000,0.000000"); + + double[] values = { X_MINSTROKESW, Y_MINSTROKESW, Z_MINSTROKESW, 0.0, 0.0, 0.0, 0.0 }; + string resultString = ConstructString("MINSTROKESW", values); + SendMsgToHexcal(resultString); } else if (msg.Contains("SHOW MAXVEL")) //最大速度 { @@ -287,11 +401,11 @@ namespace HexcalMC { SendMsgToHexcal("X_SENSAXIS 6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"); } - else if (msg.Contains("SHOW Y_SENSAXIS")) //查询Y轴行程 + else if (msg.Contains("SHOW Y_SENSAXIS")) //查询Y轴 { SendMsgToHexcal("Y_SENSAXIS 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"); } - else if (msg.Contains("SHOW Z_SENSAXIS")) //查询Z轴行程 + else if (msg.Contains("SHOW Z_SENSAXIS")) //查询Z轴 { SendMsgToHexcal("Z_SENSAXIS 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"); } @@ -352,17 +466,26 @@ namespace HexcalMC else if (msg.Contains("AUTZER")) //回家指令 { SendMsgToHexcal("%"); //收到并执行,同时状态改为忙碌 + + //执行回家 + Ishome(); } else if (msg.Contains("MOVABS")) //移动指令,解析移动位置 { - //MOVABS 0.015000,127.172997,-114.897003,0.000000\r\n - - + //收到指令 ,形如 MOVABS 0.015000,127.172997,-114.897003,0.000000\r\n SendMsgToHexcal("%"); + + Point3D point = ParsePoint3DFromCommand(msg); + SetPositionXyz(point); //开始移动 + + _pointCloud.Add(point); //添加到点集合 } else if (msg.Contains("GETPOS")) //获取位置 { - SendMsgToHexcal("POS 167.553898,-55.400421,-208.548678,0.000000,0.000000,0.000000,0.000000"); + //SendMsgToHexcal("POS 167.553898,-55.400421,-208.548678,0.000000,0.000000,0.000000,0.000000"); + Point3D point3D = GetPositionXyz(); //获取当前位置 + string resultString = ConstructPosString(point3D); + SendMsgToHexcal(resultString); } else { @@ -605,9 +728,9 @@ namespace HexcalMC if (_acs != null && _mBConnected) { - var yaw_home = _acs.ReadVariable("YAW_HOME_DONE"); + var yawHome = _acs.ReadVariable("YAW_HOME_DONE"); - if (yaw_home != null && (bool)yaw_home) + if (yawHome != null && (bool)yawHome) { //弹窗提示 MessageBox.Show("轴已经回家", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); @@ -625,16 +748,18 @@ namespace HexcalMC _acs.RunBuffer(ProgramBuffer.ACSC_BUFFER_6, null); //执行回家指令,这里的buffer6是回家指令的buffer _homeStates = HomeStates.Homing; - _motionStates = MotionStates.Moving; + _currentMotionState = MotionStates.Moving; + DebugDfn.AddLogText("回家运动中"); //等待回家完成 for (int i = 0; i < USE_AXIS.Length; i++) { - _acs.WaitMotionEnd(USE_AXIS[i], _motion_timeout); //等待回家完成 + _acs.WaitMotionEnd(USE_AXIS[i], _motionTimeout); //等待回家完成 } _homeStates = HomeStates.Homed; - _motionStates = MotionStates.InPos; + _currentMotionState = MotionStates.InPos; + DebugDfn.AddLogText("回家完成"); } else { @@ -649,28 +774,181 @@ namespace HexcalMC { //运动相关变量初始化 _homeStates = HomeStates.None; - _motionStates = MotionStates.None; + _currentMotionState = MotionStates.None; + _currentMotionState = MotionStates.None; //轴启用,加电 _acs.EnableM(USE_AXIS); + for (int i = 0; i < USE_AXIS.Length; i++) + { + _acs.WaitMotorEnabled(USE_AXIS[i], 1, _motionTimeout); //等待电机使能 + } + + DebugDfn.AddLogText("电机已启用"); //回家 Ishome(); } + private bool IsWithinStrokes(Point3D point) //判断点是否在行程范围内 + { + if (point.X >= X_MINSTROKESW && point.X <= X_MAXSTROKESW && + point.Y >= Y_MINSTROKESW && point.Y <= Y_MAXSTROKESW && + point.Z >= Z_MINSTROKESW && point.Z <= Z_MAXSTROKESW) + { + return true; + } + + return false; + } private void SetPositionXyz(Point3D point3D) //运动到指定位置 { - //判断 point3D是否合法 - if(point3D) + if (!_mBConnected) + { + DebugDfn.AddLogText("ACS平台未连接,请先点击连接"); + MessageBox.Show("ACS平台未连接,请先点击连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + if (_currentMotionState != MotionStates.Moving) + { + _currentMotionState = MotionStates.Moving; //设置当前运动状态 + //判断 point3D是否合法 + if (point3D != null) + { + if (IsWithinStrokes(point3D)) //判断点是否在行程范围内 + { + double[] pointsArray = + { + point3D.Y, + point3D.X, + point3D.Z + }; + + //执行运动指令 + _acs.ToPointM(MotionFlags.ACSC_NONE, USE_AXIS, pointsArray); //多轴运动到指定位置 + + //等待运动完成 + for (int i = 0; i < USE_AXIS.Length; i++) + { + _acs.WaitMotionEnd(USE_AXIS[i], _motionTimeout); //等待回家完成 + } + + _currentMotionState = MotionStates.InPos; + DebugDfn.AddLogText("运动到位"); + } + else + { + DebugDfn.AddLogText("目标位置超出行程范围,请重新设置"); + MessageBox.Show("目标位置超出行程范围,请重新设置", "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + else + { + DebugDfn.AddLogText("目标位置为空,请重新设置"); + MessageBox.Show("目标位置为空,请重新设置", "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } - private void GetPositionXyz() //获取当前位置 + + private Point3D GetPositionXyz(int positionMode = 1) //获取当前位置 { + double xPosition = 0, yPosition = 0, zPosition = 0; + Point3D point3D = new Point3D(xPosition, yPosition, zPosition); + if (!_mBConnected) + { + DebugDfn.AddLogText("ACS平台未连接,请先点击连接"); + MessageBox.Show("ACS平台未连接,请先点击连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return point3D; + } + + //获取当前位置, 两种 GetRPosition,GetFPosition + if (positionMode == 1) + { + //获取反馈位置 Feedback position (Encoder value) ACSPL+ Variable : FPO (real) + xPosition = _acs.GetFPosition(USE_AXIS[0]); + yPosition = _acs.GetFPosition(USE_AXIS[1]); + zPosition = _acs.GetFPosition(USE_AXIS[2]); + DebugDfn.AddLogText("反馈位置: " + xPosition + " " + yPosition + " " + zPosition); + } + else + { + //获取参考位置 ACSPL+ Variable : RPOS (real) + xPosition = _acs.GetRPosition(USE_AXIS[0]); + yPosition = _acs.GetRPosition(USE_AXIS[1]); + zPosition = _acs.GetRPosition(USE_AXIS[2]); + DebugDfn.AddLogText("参考位置: " + xPosition + " " + yPosition + " " + zPosition); + } + + //获取位置误差 + double positionError = (double)_acs.ReadVariable("PE", ProgramBuffer.ACSC_NONE, 0, 2); + DebugDfn.AddLogText("位置误差: " + positionError); + + //构造point3D格式 + point3D = new Point3D(xPosition, yPosition, zPosition); + + return point3D; } private void GetSpeedXyz() //获取运动参数 { + //获取实际速度 + double feedbackVelocity = (double)_acs.ReadVariable("FVEL", ProgramBuffer.ACSC_NONE, 0, 2); + DebugDfn.AddLogText("实际速度: " + feedbackVelocity); + } + + private void openGLControl1_OpenGLDraw(object sender, SharpGL.RenderEventArgs args) + { + OpenGL gl = openGLControl1.OpenGL; + + gl.ClearColor(0, 0, 0, 0); + gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); + + gl.LoadIdentity(); + //gl.Translate(0.0f, 0.0f, -5.0f); // 平移场景 + + } + + private void LoadPoints(List points) + { + OpenGL gl = openGLControl1.OpenGL; + + gl.ClearColor(0, 0, 0, 0); + gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); + + gl.LoadIdentity(); + //gl.Translate(0.0f, 0.0f, -5.0f); // 平移场景 + + gl.Begin(OpenGL.GL_POINTS); + foreach (Point3D point in points) + { + // 设置点的颜色 + gl.Color(1.0f, 0.0f, 0.0f); // 红色 + + // 设置点的大小 + gl.PointSize(5.0f); // 大小为5个单位 + gl.Vertex(point.X, point.Y, point.Z); + } + gl.End(); + + gl.Flush(); + } + + private void openGLControl1_OpenGLInitialized(object sender, EventArgs e) + { + + } + + private void openGLControl1_Resized(object sender, EventArgs e) + { + + } + + private void openGLControl1_GDIDraw(object sender, SharpGL.RenderEventArgs args) + { + } private void SetSpeedXyz() //设置运动参数 @@ -680,25 +958,6 @@ namespace HexcalMC #endregion ACS平台相关 - private void LoadConfig() //加载配置文件 - { - //判断配置文件是否存在 - if (!File.Exists(strConfigFile)) - { - MessageBox.Show("配置文件不存在,请检查配置文件", "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - //正限位 - X_MAXSTROKESW = FileIni.ReadDouble(strConfigFile, "MOTOR", "X_MAXSTROKESW", 0); - Y_MAXSTROKESW = FileIni.ReadDouble(strConfigFile, "MOTOR", "Y_MAXSTROKESW", 0); - Z_MAXSTROKESW = FileIni.ReadDouble(strConfigFile, "MOTOR", "Z_MAXSTROKESW", 0); - - //负限位 - X_MINSTROKESW = FileIni.ReadDouble(strConfigFile, "MOTOR", "X_MINSTROKESW", 0); - Y_MINSTROKESW = FileIni.ReadDouble(strConfigFile, "MOTOR", "Y_MINSTROKESW", 0); - Z_MINSTROKESW = FileIni.ReadDouble(strConfigFile, "MOTOR", "Z_MINSTROKESW", 0); - } - #region 菜单栏 private void Rtb_motion_Click(object sender, EventArgs e) //ACS调试页面 @@ -723,6 +982,8 @@ namespace HexcalMC //时间栏 //获取当前时间,构造形如 精确到秒,例如 2023-10-08 16:01:23 rle_timer.Text = "当前时间: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + + Plot2D(_pointCloud);//绘图 } #endregion 菜单栏 diff --git a/HexcalMC/Program.cs b/HexcalMC/Program.cs index 2ed4016..63bfdb3 100644 --- a/HexcalMC/Program.cs +++ b/HexcalMC/Program.cs @@ -46,6 +46,7 @@ namespace HexcalMC MyBase.TraceWriteLine("--软件Main函数开始"); Application.Run(new MainFrom()); + } } } \ No newline at end of file diff --git a/HexcalMC/app.config b/HexcalMC/app.config index 725d418..8b88e42 100644 --- a/HexcalMC/app.config +++ b/HexcalMC/app.config @@ -1,11 +1,11 @@ - + - + - - + +