diff --git a/Cs_HMI/AGVCSharp.sln b/Cs_HMI/AGVCSharp.sln
index 758792a..60edcdc 100644
--- a/Cs_HMI/AGVCSharp.sln
+++ b/Cs_HMI/AGVCSharp.sln
@@ -3,7 +3,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34714.143
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGV4", "Project\AGV4.csproj", "{65F3E762-800C-499E-862F-A535642EC59F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AGV4", "Project\AGV4.csproj", "{65F3E762-800C-499E-862F-A535642EC59F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {16BD025D-CB0F-4A4B-A452-8FE629F02F0C} = {16BD025D-CB0F-4A4B-A452-8FE629F02F0C}
+ EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arControl", "SubProject\arCtl\arControl.csproj", "{F31C242C-1B15-4518-9733-48558499FE4B}"
EndProject
@@ -27,10 +30,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BMS", "SubProject\BMS\BMS.c
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SWPatch", "SubProject\Patch\SWPatch.csproj", "{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emulator", "Emulator\Emulator.csproj", "{00BBEF50-3899-4BF1-82E0-DF065CB2A88C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PLC.Net45", "SubProject\ProPLC\PLC.Net45.csproj", "{476C8E64-7B6B-4554-ACA2-04302715750F}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NARUMI", "SubProject\AGV\NARUMI.csproj", "{8BAE0EAC-3D25-402F-9A65-2BA1ECFE28B7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommData", "SubProject\CommData\CommData.csproj", "{14E8C9A5-013E-49BA-B435-EFEFC77DD623}"
@@ -107,7 +106,6 @@ Global
{8CB883C0-99C3-4DD4-B017-F9B92010A806}.Release|x86.ActiveCfg = Release|Any CPU
{8CB883C0-99C3-4DD4-B017-F9B92010A806}.Release|x86.Build.0 = Release|Any CPU
{2CDAD6D3-2D25-4604-A46C-EDEC0EB308D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2CDAD6D3-2D25-4604-A46C-EDEC0EB308D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2CDAD6D3-2D25-4604-A46C-EDEC0EB308D8}.Debug|x64.ActiveCfg = Debug|Any CPU
{2CDAD6D3-2D25-4604-A46C-EDEC0EB308D8}.Debug|x64.Build.0 = Debug|Any CPU
{2CDAD6D3-2D25-4604-A46C-EDEC0EB308D8}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -119,7 +117,6 @@ Global
{2CDAD6D3-2D25-4604-A46C-EDEC0EB308D8}.Release|x86.ActiveCfg = Release|Any CPU
{2CDAD6D3-2D25-4604-A46C-EDEC0EB308D8}.Release|x86.Build.0 = Release|Any CPU
{9C027BF1-289F-4CC8-83F0-CB2B975C39C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9C027BF1-289F-4CC8-83F0-CB2B975C39C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C027BF1-289F-4CC8-83F0-CB2B975C39C2}.Debug|x64.ActiveCfg = Debug|Any CPU
{9C027BF1-289F-4CC8-83F0-CB2B975C39C2}.Debug|x64.Build.0 = Debug|Any CPU
{9C027BF1-289F-4CC8-83F0-CB2B975C39C2}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -131,7 +128,6 @@ Global
{9C027BF1-289F-4CC8-83F0-CB2B975C39C2}.Release|x86.ActiveCfg = Release|Any CPU
{9C027BF1-289F-4CC8-83F0-CB2B975C39C2}.Release|x86.Build.0 = Release|Any CPU
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Debug|x64.ActiveCfg = Debug|Any CPU
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Debug|x64.Build.0 = Debug|Any CPU
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -155,7 +151,6 @@ Global
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70}.Release|x86.ActiveCfg = Release|Any CPU
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70}.Release|x86.Build.0 = Release|Any CPU
{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Debug|x64.ActiveCfg = Debug|Any CPU
{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Debug|x64.Build.0 = Debug|Any CPU
{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -166,30 +161,6 @@ Global
{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Release|x64.Build.0 = Release|Any CPU
{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Release|x86.ActiveCfg = Release|Any CPU
{37DC0BAE-50BF-41E4-BAAB-B0E211467AD1}.Release|x86.Build.0 = Release|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Debug|x64.Build.0 = Debug|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Debug|x86.Build.0 = Debug|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Release|Any CPU.Build.0 = Release|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Release|x64.ActiveCfg = Release|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Release|x64.Build.0 = Release|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Release|x86.ActiveCfg = Release|Any CPU
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C}.Release|x86.Build.0 = Release|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Debug|x64.Build.0 = Debug|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Debug|x86.Build.0 = Debug|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Release|Any CPU.Build.0 = Release|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Release|x64.ActiveCfg = Release|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Release|x64.Build.0 = Release|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Release|x86.ActiveCfg = Release|Any CPU
- {476C8E64-7B6B-4554-ACA2-04302715750F}.Release|x86.Build.0 = Release|Any CPU
{8BAE0EAC-3D25-402F-9A65-2BA1ECFE28B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BAE0EAC-3D25-402F-9A65-2BA1ECFE28B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BAE0EAC-3D25-402F-9A65-2BA1ECFE28B7}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -215,7 +186,6 @@ Global
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.ActiveCfg = Release|Any CPU
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.Build.0 = Release|Any CPU
{EB77976F-4DE4-46A5-8B25-D07226204C32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EB77976F-4DE4-46A5-8B25-D07226204C32}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB77976F-4DE4-46A5-8B25-D07226204C32}.Debug|x64.ActiveCfg = Debug|Any CPU
{EB77976F-4DE4-46A5-8B25-D07226204C32}.Debug|x64.Build.0 = Debug|Any CPU
{EB77976F-4DE4-46A5-8B25-D07226204C32}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -227,7 +197,6 @@ Global
{EB77976F-4DE4-46A5-8B25-D07226204C32}.Release|x86.ActiveCfg = Release|Any CPU
{EB77976F-4DE4-46A5-8B25-D07226204C32}.Release|x86.Build.0 = Release|Any CPU
{AAF68D20-4590-4AB0-BB91-E0DD04C91DEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AAF68D20-4590-4AB0-BB91-E0DD04C91DEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AAF68D20-4590-4AB0-BB91-E0DD04C91DEC}.Debug|x64.ActiveCfg = Debug|Any CPU
{AAF68D20-4590-4AB0-BB91-E0DD04C91DEC}.Debug|x64.Build.0 = Debug|Any CPU
{AAF68D20-4590-4AB0-BB91-E0DD04C91DEC}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -274,8 +243,6 @@ Global
{9C027BF1-289F-4CC8-83F0-CB2B975C39C2} = {7AF32085-E7A6-4D06-BA6E-C6B1EBAEA99A}
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E} = {7AF32085-E7A6-4D06-BA6E-C6B1EBAEA99A}
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70} = {C423C39A-44E7-4F09-B2F7-7943975FF948}
- {00BBEF50-3899-4BF1-82E0-DF065CB2A88C} = {7AF32085-E7A6-4D06-BA6E-C6B1EBAEA99A}
- {476C8E64-7B6B-4554-ACA2-04302715750F} = {C423C39A-44E7-4F09-B2F7-7943975FF948}
{8BAE0EAC-3D25-402F-9A65-2BA1ECFE28B7} = {C423C39A-44E7-4F09-B2F7-7943975FF948}
{14E8C9A5-013E-49BA-B435-EFEFC77DD623} = {C423C39A-44E7-4F09-B2F7-7943975FF948}
{EB77976F-4DE4-46A5-8B25-D07226204C32} = {7AF32085-E7A6-4D06-BA6E-C6B1EBAEA99A}
diff --git a/Cs_HMI/Project/AGV4 - Backup.csproj b/Cs_HMI/Project/AGV4 - Backup.csproj
new file mode 100644
index 0000000..0f2b449
--- /dev/null
+++ b/Cs_HMI/Project/AGV4 - Backup.csproj
@@ -0,0 +1,63 @@
+
+
+
+ WinExe
+ net8.0-windows
+ enable
+ true
+ enable
+ x64
+ D:\Amkor\AGV4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ Settings.settings
+
+
+
+
+
+ PreserveNewest
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+ lib\Winsock_Orcas.dll
+
+
+ lib\EEProtocol.dll
+
+
+ lib\arUtil.dll
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Cs_HMI/Project/AGV4.csproj b/Cs_HMI/Project/AGV4.csproj
index 34cda61..88024fb 100644
--- a/Cs_HMI/Project/AGV4.csproj
+++ b/Cs_HMI/Project/AGV4.csproj
@@ -1,545 +1,70 @@
-
-
+
- Debug
- AnyCPU
- {65F3E762-800C-499E-862F-A535642EC59F}
WinExe
- Project
- Amkor
- v4.8
- 512
- 게시\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- false
- true
- False
- False
- False
- OnBuildSuccess
- False
- False
- False
- obj\$(Configuration)\
-
-
-
- x86
- true
- Full
- False
- ..\..\..\..\..\Amkor\AGV4\
- DEBUG;TRACE
- prompt
- 4
- false
- IDE1006
-
-
- AnyCPU
- pdbonly
- true
- ..\..\..\ManualMapEditor\
- TRACE
- prompt
- 4
- false
-
-
- icons8-split-64.ico
-
-
- LocalIntranet
-
-
- false
-
-
-
- true
- ..\..\..\..\Amkor\OTP2DReading\
- DEBUG;TRACE
- full
+ net8.0-windows
+ enable
+ true
+ enable
x64
- prompt
- MinimumRecommendedRules.ruleset
- false
+ D:\Amkor\AGV4
+ Amkor
+ AGV4
+ Amkor AGV4
+ 25.04.24.1500
+ 25.04.24.1500
-
- bin\
- TRACE
- true
- pdbonly
- x86
- prompt
- MinimumRecommendedRules.ruleset
- false
+
+ 1701;1702;8622
-
- Project
- False
- obj\
-
-
- 4194304
- False
- Auto
+
+ 1701;1702;8622
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ Settings.settings
+
+
+
+
+
+ PreserveNewest
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
-
- False
- ..\DLL\ArLog.Net4.dll
-
-
- False
- ..\DLL\ArSetting.Net4.dll
-
-
- ..\packages\Ionic.Zip.1.9.1.8\lib\Ionic.Zip.dll
-
-
- False
- C:\Program Files (x86)\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
..\DLL\Winsock Orcas.dll
+
-
-
-
- Component
-
-
- CtlAuto.cs
-
-
- Component
-
-
- CtlPos.cs
-
-
-
-
-
- DataSet1.xsd
-
-
- True
- True
- DataSet1.xsd
-
-
-
-
- Component
-
-
-
- Form
-
-
- fCounter.cs
-
-
- Form
-
-
- fUpdateForm.cs
-
-
- Form
-
-
- fLog.cs
-
-
- Form
-
-
- fJobSelect.cs
-
-
- Form
-
-
- fSystem.cs
-
-
- Form
-
-
- Form
-
-
- fVolume.cs
-
-
- Form
-
-
- fMessageWindow.cs
-
-
- Form
-
-
- fTouchKey.cs
-
-
- Form
-
-
- fTouchKeyFull.cs
-
-
- Form
-
-
- fTouchNumDot.cs
-
-
- Form
-
-
- fPassword.cs
-
-
- Form
-
-
- fErrorException.cs
-
-
- Form
-
-
- fMain.cs
-
-
-
-
-
-
-
-
-
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
- Form
-
-
-
-
- Form
-
-
- fBms.cs
-
-
- Form
-
-
- fAuto.cs
-
-
- Form
-
-
- fAgv.cs
-
-
- Form
-
-
- fFlag.cs
-
-
- Form
-
-
- fIO.cs
-
-
- Form
-
-
- fSetup.cs
-
-
- Form
-
-
- fManual.cs
-
-
- fCounter.cs
-
-
- fUpdateForm.cs
-
-
- fLog.cs
-
-
- fJobSelect.cs
-
-
- fSystem.cs
-
-
- fVolume.cs
-
-
- fMessageWindow.cs
-
-
- fTouchKey.cs
-
-
- fTouchKeyFull.cs
-
-
- fTouchNumDot.cs
-
-
- fPassword.cs
-
-
- fErrorException.cs
-
-
- fMain.cs
- Designer
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
- True
-
-
- fBms.cs
-
-
- fAuto.cs
-
-
- fAgv.cs
-
-
- fFlag.cs
-
-
- fIO.cs
-
-
- fSetup.cs
-
-
- fManual.cs
-
-
-
- DataSet1.xsd
-
-
- Designer
- MSDataSetGenerator
- DataSet1.Designer.cs
-
-
- DataSet1.xsd
- Designer
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
- True
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
- Microsoft .NET Framework 4%28x86 및 x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
- False
- Windows Installer 4.5
- true
-
-
-
-
- {16bd025d-cb0f-4a4b-a452-8fe629f02f0c}
- ENIGProtocol
-
-
- {8cb883c0-99c3-4dd4-b017-f9b92010a806}
- agvControl
-
-
- {8bae0eac-3d25-402f-9a65-2ba1ecfe28b7}
- NARUMI
-
-
- {7a94c30c-6772-4f71-bf9c-0df071a1bc70}
- BMS
-
-
- {bbc9bccf-6262-4355-9cc2-37ff678ac499}
- StateMachine
-
-
- {f31c242c-1b15-4518-9733-48558499fe4b}
- arControl
-
-
- {a16c9667-5241-4313-888e-548375f85d29}
- arFrameControl
-
-
- {14e8c9a5-013e-49ba-b435-efefc77dd623}
- CommData
-
-
- {14e8c9a5-013e-49ba-b435-ffffff7dd623}
- arCommUtil
-
-
- {476c8e64-7b6b-4554-aca2-04302715750f}
- PLC.Net45
-
-
-
-
-
- rem xcopy "$(TargetDir)*.exe" "\\192.168.1.80\Amkor\AGV2" /Y
-rem xcopy "$(TargetDir)*.dll" "\\192.168.1.80\Amkor\AGV2" /Y
-
\ No newline at end of file
diff --git a/Cs_HMI/Project/AGV4.csproj.bak b/Cs_HMI/Project/AGV4.csproj.bak
new file mode 100644
index 0000000..083f694
--- /dev/null
+++ b/Cs_HMI/Project/AGV4.csproj.bak
@@ -0,0 +1,67 @@
+
+
+
+ WinExe
+ net8.0-windows
+ Project
+ Amkor
+ true
+ enable
+ enable
+ icons8-split-64.ico
+ x64
+ False
+ False
+ False
+ IDE1006
+
+
+
+ ..\..\..\..\..\Amkor\AGV4\
+ DEBUG;TRACE
+ x64
+
+
+
+ ..\..\..\ManualMapEditor\
+ TRACE
+ x64
+
+
+
+ ..\..\..\..\Amkor\OTP2DReading\
+ DEBUG;TRACE
+
+
+
+ bin\
+ TRACE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+
\ No newline at end of file
diff --git a/Cs_HMI/Project/CSetting.cs b/Cs_HMI/Project/CSetting.cs
index d0e4f0d..764ca34 100644
--- a/Cs_HMI/Project/CSetting.cs
+++ b/Cs_HMI/Project/CSetting.cs
@@ -4,9 +4,9 @@ using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Drawing.Design;
-using System.Management;
using System.Runtime.CompilerServices;
-using System.Security.RightsManagement;
+using System.Management;
+using System.IO.Ports;
namespace Project
{
@@ -65,7 +65,7 @@ namespace Project
}
}
- public class CSetting : arUtil.Setting
+ public class CSetting : AR.Setting
{
#region "log"
@@ -454,7 +454,7 @@ namespace Project
}
- public class CounterSetting : arUtil.Setting, INotifyPropertyChanged
+ public class CounterSetting : AR.Setting, INotifyPropertyChanged
{
public DateTime CountReset { get; set; }
diff --git a/Cs_HMI/Project/Class/CResult.cs b/Cs_HMI/Project/Class/CResult.cs
index 76da243..abe0b06 100644
--- a/Cs_HMI/Project/Class/CResult.cs
+++ b/Cs_HMI/Project/Class/CResult.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
namespace Project
{
diff --git a/Cs_HMI/Project/Class/EEMStatus.cs b/Cs_HMI/Project/Class/EEMStatus.cs
index edc1653..7d14c78 100644
--- a/Cs_HMI/Project/Class/EEMStatus.cs
+++ b/Cs_HMI/Project/Class/EEMStatus.cs
@@ -1,5 +1,6 @@
using Project;
using Project.Device;
+using Project.StateMachine;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -8,7 +9,6 @@ using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
-using static Project.StateMachine;
///
/// ============================================================================
diff --git a/Cs_HMI/Project/Device/Xbee.cs b/Cs_HMI/Project/Device/Xbee.cs
index 4369354..ea0f38d 100644
--- a/Cs_HMI/Project/Device/Xbee.cs
+++ b/Cs_HMI/Project/Device/Xbee.cs
@@ -5,15 +5,15 @@ using System.Text;
using System.ComponentModel;
using System.Threading;
using COMM;
-using System.Runtime.Remoting.Messaging;
using ENIG;
using System.Security.Cryptography;
using AR;
-using System.Web.Compilation;
+using System.IO.Ports;
+using System.Security.Cryptography.X509Certificates;
namespace Project.Device
{
- public class Xbee : System.IO.Ports.SerialPort
+ public class Xbee : SerialPort
{
public string buffer = string.Empty;
public System.Text.StringBuilder newbuffer = new StringBuilder();
@@ -35,6 +35,181 @@ namespace Project.Device
proto.OnMessage -= Proto_OnMessage;
}
+
+ ///
+ /// 지그비장치에 데이터를 전송합니다
+ ///
+ ///
+ ///
+ public bool Send(byte[] data)
+ {
+ try
+ {
+ this.Write(data, 0, data.Length);
+ return true;
+ }
+ catch (Exception ex)
+ {
+ errorMessage = ex.Message;
+ return false;
+ }
+ }
+
+ public new bool Open()
+ {
+ try
+ {
+ this.Open();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ errorMessage = ex.Message;
+ PUB.logxbee.AddE(errorMessage);
+ return false;
+ }
+ }
+
+ private void Proto_OnDataReceived(object sender, EEProtocol.DataEventArgs e)
+ {
+ var hexstrRaw = e.ReceivedPacket.RawData.HexString();
+ var hexstr = e.ReceivedPacket.Data.HexString();
+ var cmd = e.ReceivedPacket.Command.ToString("X2");
+ var id = e.ReceivedPacket.ID.ToString("X2");
+ PUB.logxbee.Add("RX", $"{hexstrRaw}\nID:{id},CMD:{cmd},DATA:{hexstr}");
+
+ //TODO : 기능 처리필요 (XBee 메세지 데이터처리)
+ //PUB.CheckManualChargeMode() : 수동충전확인
+ //VAR.BOOL[eVarBool.FLAG_AUTORUN] : 자동실행
+ //PUB.Speak("현재 위치는 QA 입니다.") : 음성출력
+
+ //ACS 수신 데이터 처리(타 장비는 확인하지 않는다)
+ if (e.ReceivedPacket.ID == 0)
+ {
+ var data = e.ReceivedPacket.Data;
+ switch (e.ReceivedPacket.Command)
+ {
+ case 1: //Request PATH
+ var pathID = data[0];
+ var pathPage = data[1];
+
+ //TODO : 요청받은 맵 데이터를 전송해야한다
+
+
+ break;
+ case 100: //move to tag
+ var TargetTag = System.Text.Encoding.Default.GetString(data, 0, 6);
+
+ //1.현재위치에서 경로계산 하여 경로저장
+ //2.현재위치를 모를경우 이전 이동 기록을 통해 위치를 추정한다
+ //3.대상태그에 맞는 전/후진 방향을 결정하여 이동을 수행한다
+
+ break;
+ case 101: //stop
+ PUB.AGV.AGVMoveStop("xbee");
+ break;
+ case 102: //Error Reset
+ PUB.AGV.AGVErrorReset();
+ break;
+ case 103: //charing command (0:off, 1:on)
+ var CharingCmd = data[0];
+
+ //0.자동모드가 아니라면 실행하지 않는다
+ //1.충전프로세스를 시작한다
+ //2.1분간 충전진행 신호가 없다면 반대편으로 1TAG이동하여 다시 시도한다
+ //3.3회 시도 실패시 오류 데이터를 HOST에 전송한다
+
+ break;
+ case 104: //Manual Move (Direction, speed, runtime)
+ var Direction = data[0]; //0=back, 1=forward, 2=left, 3=right
+ var Speed = data[1]; //0=slow, 1=normal, 2=fast
+ var Runtime = data[2]; // running seconds
+
+ arDev.Narumi.ManulOpt opt = arDev.Narumi.ManulOpt.BS;
+ arDev.Narumi.Speed spd = arDev.Narumi.Speed.Low;
+ if (Speed == 1) spd = arDev.Narumi.Speed.Mid;
+ else if (Speed == 2) spd = arDev.Narumi.Speed.High;
+
+ //0.자동모드가 아니라면 실행하지 않는다
+ //1.입력된 파라미터로 AGV를 이동한다
+ if (Direction == 0) opt = arDev.Narumi.ManulOpt.BS;
+ else if (Direction == 1) opt = arDev.Narumi.ManulOpt.FS;
+ else if (Direction == 2) opt = arDev.Narumi.ManulOpt.LT;
+ else if (Direction == 3) opt = arDev.Narumi.ManulOpt.RT;
+
+ PUB.AGV.AGVMoveManual(opt, spd, arDev.Narumi.Sensor.PBSOn);
+ break;
+ case 105: //Set MarkStop
+ var MarkStop = data[0]; //0=off, 1=on
+
+ //마크센서에서 멈추게 한다
+ PUB.AGV.AGVMoveStop("Xbee", arDev.Narumi.eStopOpt.MarkStop);
+ break;
+ case 106: //Lift Control
+ var LiftCommand = data[0]; //0=stop, 1=up, 2=down
+ arDev.Narumi.LiftCommand LCmd = arDev.Narumi.LiftCommand.STP;
+ if (LiftCommand == 1) LCmd = arDev.Narumi.LiftCommand.UP;
+ else if (LiftCommand == 2) LCmd = arDev.Narumi.LiftCommand.DN;
+
+ //리프트제어
+ PUB.AGV.LiftControl(LCmd);
+ break;
+
+ case 107: //clear path
+ //TODO: 현재 설정된 경로삭제기능 필요
+ break;
+ case 108: //send path
+ //TODO : 경로정보를 수신받고 페이지가 1을 초과하면 나머지 페이지정보도 요청할 수 있어야 한다
+ break;
+
+
+ }
+ }
+
+
+ }
+ private void Proto_OnMessage(object sender, EEProtocol.MessageEventArgs e)
+ {
+ if (e.IsError) PUB.log.AddE(e.Message);
+ else PUB.log.Add(e.Message);
+ }
+
+
+ private void Xbee_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
+ {
+ var dev = sender as System.IO.Ports.SerialPort;
+ var buffer = new byte[dev.BytesToRead];
+ dev.Read(buffer, 0, buffer.Length);
+ proto.ProcessReceivedData(buffer);
+ }
+ ///
+ /// 이동완료 신호 전송
+ ///
+ /// 목적지태그값
+ public void SendMoveComplete(string tag)
+ {
+ var id = PUB.setting.XBE_ID;
+ byte cmd = 2;
+ var data = System.Text.Encoding.Default.GetBytes(tag);
+ var packet = proto.CreatePacket(id, cmd, data);
+ Send(packet);
+ }
+
+ ///
+ /// 신규 RFID태그값이 읽혔다면 이명령을 통해서 전송한다
+ ///
+ public void SendRFIDTag(string tag)
+ {
+ var id = PUB.setting.XBE_ID;
+ byte cmd = 3;
+ var data = System.Text.Encoding.Default.GetBytes(tag);
+ var packet = proto.CreatePacket(id, cmd, data);
+ Send(packet);
+ }
+
+
+
+
///
/// AGV상태를 Xbee 로 전송한다
///
@@ -82,23 +257,23 @@ namespace Project.Device
data[4] = (byte)((VAR.BOOL[eVarBool.FLAG_CHARGEONA] || VAR.BOOL[eVarBool.FLAG_CHARGEONM]) ? 1 : 0);
// CartSt
- if(PUB.AGV.signal.cart_detect1 && PUB.AGV.signal.cart_detect2)
+ if (PUB.AGV.signal.cart_detect1 && PUB.AGV.signal.cart_detect2)
data[5] = 1; // 센서두개가 모두 감지되는 경우
- else if(PUB.AGV.signal.cart_detect1==false && PUB.AGV.signal.cart_detect2==false)
+ else if (PUB.AGV.signal.cart_detect1 == false && PUB.AGV.signal.cart_detect2 == false)
data[5] = 0; // 센서두개가 모두 감지되지 않는 경우
else
data[5] = 2; // 센서하나만 감지되는 경우
// LiftSt
- if(PUB.AGV.signal.lift_up)
+ if (PUB.AGV.signal.lift_up)
data[6] = 1; // 위로 올라가는 경우
- else if(PUB.AGV.signal.lift_down)
+ else if (PUB.AGV.signal.lift_down)
data[6] = 0; // 아래로 내려가는 경우
else
data[6] = 2; // unknown (기본값)
// LastTag
- string lastTag = PUB.AGV.data.TagNo.ToString("000000") ?? "000000";
+ string lastTag = PUB.AGV.data.TagNo.ToString("000000") ?? "000000";
byte[] tagBytes = Encoding.ASCII.GetBytes(lastTag.PadRight(6, '0'));
Array.Copy(tagBytes, 0, data, 7, 6);
@@ -114,65 +289,6 @@ namespace Project.Device
}
}
- ///
- /// 지그비장치에 데이터를 전송합니다
- ///
- ///
- ///
- public bool Send(byte[] data)
- {
- try
- {
- this.Write(data, 0, data.Length);
- return true;
- }catch (Exception ex)
- {
- errorMessage = ex.Message;
- return false;
- }
- }
-
- public new bool Open()
- {
- try{
- this.Open();
- return true;
- }catch (Exception ex)
- {
- errorMessage = ex.Message;
- PUB.logxbee.AddE(errorMessage);
- return false;
- }
- }
-
- private void Proto_OnDataReceived(object sender, EEProtocol.DataEventArgs e)
- {
- var hexstrRaw = e.ReceivedPacket.RawData.HexString();
- var hexstr = e.ReceivedPacket.Data.HexString();
- var cmd = e.ReceivedPacket.Command.ToString("X2");
- var id = e.ReceivedPacket.ID.ToString("X2");
- PUB.logxbee.Add("RX", $"{hexstrRaw}\nID:{id},CMD:{cmd},DATA:{hexstr}");
-
- //TODO : 기능 처리필요 (XBee 메세지 데이터처리)
- //PUB.CheckManualChargeMode() : 수동충전확인
- //VAR.BOOL[eVarBool.FLAG_AUTORUN] : 자동실행
- //PUB.Speak("현재 위치는 QA 입니다.") : 음성출력
-
- }
- private void Proto_OnMessage(object sender, EEProtocol.MessageEventArgs e)
- {
- if (e.IsError) PUB.log.AddE(e.Message);
- else PUB.log.Add(e.Message);
- }
-
-
- private void Xbee_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
- {
- var dev = sender as System.IO.Ports.SerialPort;
- var buffer = new byte[dev.BytesToRead];
- dev.Read(buffer, 0, buffer.Length);
- proto.ProcessReceivedData(buffer);
- }
}
}
diff --git a/Cs_HMI/Project/Dialog/fSystem.cs b/Cs_HMI/Project/Dialog/fSystem.cs
index df01d81..83347d3 100644
--- a/Cs_HMI/Project/Dialog/fSystem.cs
+++ b/Cs_HMI/Project/Dialog/fSystem.cs
@@ -7,6 +7,8 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using System.IO;
+using System.IO.Compression;
namespace Project.Dialog
{
@@ -123,15 +125,20 @@ namespace Project.Dialog
Util.MsgE("실행파일 amkor.exe 가 없습니다.");
return;
}
- var zipfile = new Ionic.Zip.ZipFile();
- zipfile.AddFile(file_exe,"/");
+ var zipfile = new ZipArchive(new MemoryStream(), ZipArchiveMode.Create);
+ zipfile.CreateEntryFromFile(file_exe, "amkor.exe");
foreach (var filedll in files_dll)
- zipfile.AddFile(filedll.FullName,"/");
+ zipfile.CreateEntryFromFile(filedll.FullName, filedll.Name);
var veri = Application.ProductVersion.Split('.');
var newfilename = "Patch_AGV_" + veri[0] + veri[1]+ veri[2] + "_" +
veri[3] + ".zip";
- zipfile.Save(newfilename);
+ var entry = zipfile.CreateEntry(newfilename);
+ using (var entryStream = entry.Open())
+ using (var fileStream = new FileStream(newfilename, FileMode.Open))
+ {
+ fileStream.CopyTo(entryStream);
+ }
Util.MsgI("다음 패치 파일이 생성됨\n" + newfilename);
}
diff --git a/Cs_HMI/Project/Dialog/fUpdateForm.cs b/Cs_HMI/Project/Dialog/fUpdateForm.cs
index 7cec84d..d3f3d3e 100644
--- a/Cs_HMI/Project/Dialog/fUpdateForm.cs
+++ b/Cs_HMI/Project/Dialog/fUpdateForm.cs
@@ -7,6 +7,8 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using System.IO;
+using System.IO.Compression;
namespace Project.Dialog
{
@@ -211,10 +213,7 @@ namespace Project.Dialog
}
//해당폴더에 압축을 해제해준다.
- var f = new Ionic.Zip.ZipFile(file);
- f.ExtractProgress += F_ExtractProgress;
- f.ExtractAll(dir_path.FullName);
- f.ExtractProgress -= F_ExtractProgress;
+ ZipFile.ExtractToDirectory(file, dir_path.FullName);
//패치정보파일 추가
var infofile = System.IO.Path.Combine(dir_path.FullName, "version.txt");
@@ -231,19 +230,10 @@ namespace Project.Dialog
}
- private void F_ExtractProgress(object sender, Ionic.Zip.ExtractProgressEventArgs e)
+ private void F_ExtractProgress(object sender, EventArgs e)
{
- if(e.TotalBytesToTransfer < 1)
- {
- lb3.ProgressValue = 0;
- }
- else
- {
- var perc = (e.BytesTransferred / e.TotalBytesToTransfer) * 100.0;
- this.lb3.ProgressValue = (float)perc;
- }
-
-
+ // System.IO.Compression은 진행률 이벤트를 제공하지 않으므로
+ // 필요한 경우 별도의 진행률 계산 로직을 구현해야 합니다.
}
private void btNo_Click(object sender, EventArgs e)
diff --git a/Cs_HMI/Project/Dialog/fVolume.cs b/Cs_HMI/Project/Dialog/fVolume.cs
index 397cbb0..b295573 100644
--- a/Cs_HMI/Project/Dialog/fVolume.cs
+++ b/Cs_HMI/Project/Dialog/fVolume.cs
@@ -94,14 +94,18 @@ namespace Project.Dialog
private void button5_Click(object sender, EventArgs e)
{
- PUB.mplayer.Volume += 0.1;
- PUB.setting.musicvol = (int)(PUB.mplayer.Volume * 100);
+ var newvol = PUB.setting.musicvol + 10;
+ if (newvol > 100) newvol = 100;
+ if (newvol < 0) newvol = 0;
+ PUB.SetVolume(newvol);
}
private void button4_Click(object sender, EventArgs e)
{
- PUB.mplayer.Volume -= 0.1;
- PUB.setting.musicvol = (int)(PUB.mplayer.Volume * 100);
+ var newvol = PUB.setting.musicvol - 10;
+ if (newvol > 100) newvol = 100;
+ if (newvol < 0) newvol = 0;
+ PUB.SetVolume(newvol);
}
private void button7_Click(object sender, EventArgs e)
@@ -118,7 +122,7 @@ namespace Project.Dialog
{
var s = "고수석님, 그 에러는 못고쳐요. 포기 하면 편해요";
var s1 = $"현재시간은 {DateTime.Now.Hour}시 입니다";
- PUB.Speak( this.textBox1.Text);
+ PUB.Speak(this.textBox1.Text);
}
}
}
diff --git a/Cs_HMI/Project/Manager/DataBaseManager.cs b/Cs_HMI/Project/Manager/DataBaseManager.cs
index c1753a3..adc17de 100644
--- a/Cs_HMI/Project/Manager/DataBaseManager.cs
+++ b/Cs_HMI/Project/Manager/DataBaseManager.cs
@@ -83,7 +83,7 @@ namespace Project.Manager
void MakeFile(string filename)
{
//파일이없다면 헤더를 만들어준다.
- arUtil.XMLHelper xml = new arUtil.XMLHelper(filename);
+ AR.XMLHelper xml = new AR.XMLHelper(filename);
xml.CreateFile();
}
@@ -142,7 +142,7 @@ namespace Project.Manager
try
{
//general info
- var xml = new arUtil.XMLHelper(fi.FullName);
+ var xml = new AR.XMLHelper(fi.FullName);
foreach(System.Data.DataColumn dc in this.dt.Columns)
{
if (dc.ColumnName.ToLower() == "idx") continue;
@@ -194,7 +194,7 @@ namespace Project.Manager
{
var newdr = retval.NewResultDataRow();
newdr.info_filename = file.FullName;
- arUtil.XMLHelper xml = new arUtil.XMLHelper(file.FullName);
+ var xml = new AR.XMLHelper(file.FullName);
foreach (System.Data.DataColumn col in retval.Columns)
{
if (col.ColumnName.ToLower() == "idx") continue;
@@ -235,7 +235,7 @@ namespace Project.Manager
var filese = System.IO.Directory.GetFiles( path , strip + ".xml");
if(filese .Length == 1)
{
- var xml = new arUtil.XMLHelper(filese[0]);
+ var xml = new AR.XMLHelper(filese[0]);
var upload = xml.get_Data("info", "upload");
if (upload == "O") return eStripSearchResult.OK;
}
diff --git a/Cs_HMI/Project/PUB.cs b/Cs_HMI/Project/PUB.cs
index aa87b4b..fdc44fa 100644
--- a/Cs_HMI/Project/PUB.cs
+++ b/Cs_HMI/Project/PUB.cs
@@ -1,18 +1,19 @@
-using Microsoft.Speech.Synthesis;
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Media;
-using COMM;
-using System.Threading.Tasks;
+using COMM;
using System.Net.NetworkInformation;
using System.Net;
using System.Management;
-using System.Data.SqlClient;
using System.Data;
using AR;
+using System.Security.Policy;
+using Project.StateMachine;
+using System.Data.SqlClient;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Speech.Synthesis;
+using System.Media;
+using System.Runtime.InteropServices;
namespace Project
{
@@ -61,8 +62,18 @@ namespace Project
public static Device.Socket sock_debug;
private static SpeechSynthesizer voice;
- public static MediaPlayer mplayer;
+ public static SoundPlayer mplayer;
+ [DllImport("winmm.dll")]
+ private static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
+
+ public static void SetVolume(int volume)
+ {
+ // volume은 0~100 사이의 값
+ uint vol = (uint)((volume / 100.0) * 0xFFFF);
+ waveOutSetVolume(IntPtr.Zero, vol);
+ setting.musicvol = volume;
+ }
public static bool CheckPassword()
{
@@ -76,7 +87,11 @@ namespace Project
public static void Speak(string m, Boolean force = false, bool addlog = true)
{
- if (force == false && PUB.setting.Enable_Speak == false) return;
+ if (force == false && PUB.setting.Enable_Speak == false)
+ {
+ Console.WriteLine("speech disabled");
+ return;
+ }
if (force)
voice.SpeakAsyncCancelAll();
if (voice.State == SynthesizerState.Ready)
@@ -123,7 +138,7 @@ namespace Project
///
/// 시스템로그
///
- public static arUtil.Log log, logagv, logplc, logbms, logxbee;
+ public static AR.Log log, logagv, logplc, logbms, logxbee;
public static Boolean bPlayMusic = false;
@@ -139,7 +154,7 @@ namespace Project
///
/// 상태머신
///
- public static StateMachine sm; //상태머신분리 190529
+ public static StateMachine.StateMachine sm; //상태머신분리 190529
public static System.IO.DirectoryInfo path;
@@ -155,11 +170,11 @@ namespace Project
counter.Load();
//log
- log = new arUtil.Log();
- logagv = new arUtil.Log();
- logplc = new arUtil.Log();
- logbms = new arUtil.Log();
- logxbee = new arUtil.Log();
+ log = new AR.Log();
+ logagv = new AR.Log();
+ logplc = new AR.Log();
+ logbms = new AR.Log();
+ logxbee = new AR.Log();
logagv.FileNameFormat = "{yyyyMMdd}_agv";
logplc.FileNameFormat = "{yyyyMMdd}_plc";
@@ -178,22 +193,46 @@ namespace Project
Result = new CResult();
//state machine
- sm = new StateMachine();
+ sm = new StateMachine.StateMachine();
path = new System.IO.DirectoryInfo(Util.CurrentPath);
- mplayer = new MediaPlayer
- {
- Volume = PUB.setting.musicvol / 100.0
- };
+ mplayer = new SoundPlayer();
if (PUB.setting.musicfile.isEmpty() == false)
if (System.IO.File.Exists(PUB.setting.musicfile))
- PUB.mplayer.Open(new Uri(PUB.setting.musicfile));
+ {
+ PUB.mplayer.SoundLocation = PUB.setting.musicfile;
+ SetVolume(PUB.setting.musicvol);
+ }
voice = new SpeechSynthesizer();
- voice.SelectVoice("Microsoft Server Speech Text to Speech Voice (ko-KR, Heami)");
+ try
+ {
+ // 한국어 음성을 찾아서 설정
+ var koreanVoice = voice.GetInstalledVoices()
+ .Where(v => v.VoiceInfo.Culture.Name.StartsWith("ko"))
+ .FirstOrDefault();
+
+ if (koreanVoice != null)
+ {
+ voice.SelectVoice(koreanVoice.VoiceInfo.Name);
+ }
+ else
+ {
+ // 한국어 음성이 없으면 기본 음성 사용
+ var defaultVoice = voice.GetInstalledVoices().FirstOrDefault();
+ if (defaultVoice != null)
+ {
+ voice.SelectVoice(defaultVoice.VoiceInfo.Name);
+ }
+ }
+ }
+ catch
+ {
+ // 음성 설정 실패 시 기본값 사용
+ }
voice.SetOutputToDefaultAudioDevice();
var file_version = System.IO.Path.Combine(Util.CurrentPath, "version.txt");
@@ -362,13 +401,9 @@ namespace Project
}
}
- if (ip == "" || mac == "")
- {
- return;
- }
+ if (ip == "" || mac == "") return;
-
- SqlConnection conn = new SqlConnection("Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!");
+ var conn = new SqlConnection(AGV4.Properties.Settings.Default.CS);// "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!");
conn.Open();
string ProcName = "AddPrgmUser3";
SqlCommand cmd = new SqlCommand(ProcName, conn)
diff --git a/Cs_HMI/Project/Program.cs b/Cs_HMI/Project/Program.cs
index 4258887..b11ea9b 100644
--- a/Cs_HMI/Project/Program.cs
+++ b/Cs_HMI/Project/Program.cs
@@ -18,18 +18,13 @@ namespace Project
static void Main()
{
//중복실행방지
- var guidAttr = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), true);
- if (guidAttr != null)
+ string mutexName = "AGV4_Application_Mutex";
+ Mutex mtx = new Mutex(true, mutexName);
+ var success = mtx.WaitOne(new TimeSpan(0, 0, 1));
+ if (success == false)
{
- var guida = (GuidAttribute)guidAttr[0];
- var guidstr = guida.Value;
- Mutex mtx = new Mutex(true, guidstr);
- var success = mtx.WaitOne(new TimeSpan(0, 0, 1));
- if (success == false)
- {
- MessageBox.Show("중복실행 불가\n\n프로그램이 실행 중 입니다");
- return;
- }
+ MessageBox.Show("Duplicate execution not allowed\n\nProgram is already running");
+ return;
}
Application.EnableVisualStyles();
diff --git a/Cs_HMI/Project/Properties/AssemblyInfo.cs b/Cs_HMI/Project/Properties/AssemblyInfo.cs
deleted file mode 100644
index a085014..0000000
--- a/Cs_HMI/Project/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
-// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
-// 이러한 특성 값을 변경하세요.
-[assembly: AssemblyTitle("(OTP) 2D Reading System")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Amkor K4")]
-[assembly: AssemblyProduct("(OTP) 2D Reading System")]
-[assembly: AssemblyCopyright("Copyright ©Amkor-EET 2020")]
-[assembly: AssemblyTrademark("EET")]
-[assembly: AssemblyCulture("")]
-
-// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
-// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
-// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
-[assembly: ComVisible(false)]
-
-// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
-[assembly: Guid("65f3e762-800c-772e-862f-b444642ec59f")]
-
-// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
-//
-// 주 버전
-// 부 버전
-// 빌드 번호
-// 수정 버전
-//
-// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
-// 지정되도록 할 수 있습니다.
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("24.12.06.1300")]
-[assembly: AssemblyFileVersion("24.12.06.1300")]
diff --git a/Cs_HMI/Project/Properties/Settings.Designer.cs b/Cs_HMI/Project/Properties/Settings.Designer.cs
index b54975d..883cf55 100644
--- a/Cs_HMI/Project/Properties/Settings.Designer.cs
+++ b/Cs_HMI/Project/Properties/Settings.Designer.cs
@@ -8,11 +8,11 @@
//
//------------------------------------------------------------------------------
-namespace Project.Properties {
+namespace AGV4.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -34,5 +34,17 @@ namespace Project.Properties {
this["css"] = value;
}
}
+
+ [global::System.Configuration.ApplicationScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
+ [global::System.Configuration.DefaultSettingValueAttribute("Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Inf" +
+ "o=True;User ID=eeadm;Password=uJnU8a8q&DJ+ug-D;Encrypt=False;TrustServerCertific" +
+ "ate=True")]
+ public string CS {
+ get {
+ return ((string)(this["CS"]));
+ }
+ }
}
}
diff --git a/Cs_HMI/Project/Properties/Settings.settings b/Cs_HMI/Project/Properties/Settings.settings
index f8293bd..9fb9111 100644
--- a/Cs_HMI/Project/Properties/Settings.settings
+++ b/Cs_HMI/Project/Properties/Settings.settings
@@ -1,5 +1,5 @@
-
+
@@ -7,5 +7,13 @@
asdfasdfasdf
asdf
+
+ <?xml version="1.0" encoding="utf-16"?>
+<SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <ConnectionString>Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Info=True;User ID=eeadm;Password=uJnU8a8q&DJ+ug-D;Encrypt=False;TrustServerCertificate=True</ConnectionString>
+ <ProviderName>System.Data.SqlClient</ProviderName>
+</SerializableConnectionString>
+ Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Info=True;User ID=eeadm;Password=uJnU8a8q&DJ+ug-D;Encrypt=False;TrustServerCertificate=True
+
\ No newline at end of file
diff --git a/Cs_HMI/Project/Properties/launchSettings.json b/Cs_HMI/Project/Properties/launchSettings.json
new file mode 100644
index 0000000..c54641c
--- /dev/null
+++ b/Cs_HMI/Project/Properties/launchSettings.json
@@ -0,0 +1,8 @@
+{
+ "profiles": {
+ "AGV4": {
+ "commandName": "Project",
+ "workingDirectory": "D:\\Amkor\\AGV4"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN.cs
index 3450670..6cc7a15 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_CHGOFF.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_CHGOFF.cs
index e9634ae..06b5484 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_CHGOFF.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_CHGOFF.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGE.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGE.cs
index d6d8ac2..0d21c1a 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGE.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGE.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGECHECK.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGECHECK.cs
index 88b5f4f..874e223 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGECHECK.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOCHARGECHECK.cs
@@ -3,9 +3,9 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
using COMM;
using AR;
+using Project.StateMachine;
namespace Project
{
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GODOWN.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GODOWN.cs
index 01c33a4..4b8e529 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GODOWN.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GODOWN.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOHOME.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOHOME.cs
index 82c8f3d..56506b5 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOHOME.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOHOME.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOUP.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOUP.cs
index cfc98c4..ca0d7c6 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOUP.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_GOUP.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_INIT.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_INIT.cs
index ac69c2d..a42b505 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_INIT.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_INIT.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using System.Windows.Media;
namespace Project
{
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_READY.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_READY.cs
index 7971b78..53a46af 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_READY.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_READY.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using AR;
using COMM;
-using static Project.StateMachine;
+using Project.StateMachine;
namespace Project
{
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_RESET.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_RESET.cs
index c1ef85a..3250203 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_RESET.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_RESET.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_SYNC.cs b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_SYNC.cs
index fa61a2f..5d083a1 100644
--- a/Cs_HMI/Project/StateMachine/Step/_SM_RUN_SYNC.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_SM_RUN_SYNC.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using System.Diagnostics;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/Step/_STEP_CLOSE.cs b/Cs_HMI/Project/StateMachine/Step/_STEP_CLOSE.cs
index 2ab5eca..32ac26b 100644
--- a/Cs_HMI/Project/StateMachine/Step/_STEP_CLOSE.cs
+++ b/Cs_HMI/Project/StateMachine/Step/_STEP_CLOSE.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
-using static Project.StateMachine;
+using Project.StateMachine;
namespace Project
{
diff --git a/Cs_HMI/Project/StateMachine/_AGV.cs b/Cs_HMI/Project/StateMachine/_AGV.cs
index 09ad6c7..6c69379 100644
--- a/Cs_HMI/Project/StateMachine/_AGV.cs
+++ b/Cs_HMI/Project/StateMachine/_AGV.cs
@@ -5,7 +5,7 @@ using System.Drawing;
using System.Linq;
using System.Text;
using arCtl;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
namespace Project
diff --git a/Cs_HMI/Project/StateMachine/_AGV.resx b/Cs_HMI/Project/StateMachine/_AGV.resx
new file mode 100644
index 0000000..29dcb1b
--- /dev/null
+++ b/Cs_HMI/Project/StateMachine/_AGV.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Cs_HMI/Project/StateMachine/_BMS.cs b/Cs_HMI/Project/StateMachine/_BMS.cs
index 5f548e1..1b4ccea 100644
--- a/Cs_HMI/Project/StateMachine/_BMS.cs
+++ b/Cs_HMI/Project/StateMachine/_BMS.cs
@@ -5,7 +5,7 @@ using System.Drawing;
using System.Linq;
using System.Text;
using arCtl;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
diff --git a/Cs_HMI/Project/StateMachine/_DIO.cs b/Cs_HMI/Project/StateMachine/_DIO.cs
index d279038..0861c49 100644
--- a/Cs_HMI/Project/StateMachine/_DIO.cs
+++ b/Cs_HMI/Project/StateMachine/_DIO.cs
@@ -12,185 +12,184 @@ namespace Project
public partial class fMain
{
- private void PLC_DioChanged(object sender, arDev.FakePLC.IOValueEventArgs e)
- {
- if (e.Direction == arDev.Arduino.IODirection.Input)
- {
- var diName = (arDev.FakePLC.DIName)e.ArrIDX;
- Console.WriteLine(string.Format("[DI:{1}]{0}=>{2}", diName, e.ArrIDX, e.NewValue));
+ //private void PLC_DioChanged(object sender, arDev.FakePLC.IOValueEventArgs e)
+ //{
+ // if (e.Direction == arDev.Arduino.IODirection.Input)
+ // {
+ // var diName = (arDev.FakePLC.DIName)e.ArrIDX;
+ // Console.WriteLine(string.Format("[DI:{1}]{0}=>{2}", diName, e.ArrIDX, e.NewValue));
- if (diName == arDev.FakePLC.DIName.PINI_BTN_1) //reset
- {
- if (e.NewValue == true)
- {
- PUB.log.Add($"버튼({diName}) 눌림(AGV_RESET)");
- PUB.AGV.AGVErrorReset();
+ // if (diName == arDev.FakePLC.DIName.PINI_BTN_1) //reset
+ // {
+ // if (e.NewValue == true)
+ // {
+ // PUB.log.Add($"버튼({diName}) 눌림(AGV_RESET)");
+ // PUB.AGV.AGVErrorReset();
- //241203
- if(PUB.AGV.system1.agv_run || PUB.AGV.system1.agv_run_manual)
- {
- PUB.AGV.AGVMoveStop("button1");
- }
- //PUB.XBE.NewMsgEvent('0', '1');
- }
- }
- else if (diName == arDev.FakePLC.DIName.PINI_BTN_2) //auto -> QC //230424
- {
- if (e.NewValue == true)
- {
- PUB.log.Add($"버튼({diName}) 눌림");
- if (VAR.BOOL[eVarBool.FLAG_AUTORUN] == true)
- {
- if (PUB.sm.RunStep == StateMachine.ERunStep.GOUP)
- {
- //zup을 자동으로 해준다
- if (VAR.BOOL[eVarBool.WAIT_COVER_UP])
- {
- PUB.log.Add($"버튼({diName}) 눌림");
- PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
- PUB.Result.NextPos = ePosition.QC;
- }
- else PUB.Speak(Lang.커버업대기상태가아닙니다);
- }
- else if (PUB.sm.RunStep == StateMachine.ERunStep.GODOWN)
- {
- //이미 하차진행중에 누른 경우이다
- PUB.Result.NextPos = ePosition.QC;
- PUB.Result.TargetPos = ePosition.QC;
- }
- else
- {
- PUB.log.Add(Lang.QC이동버튼은상하차에서만사용가능합니다);
- PUB.Speak(Lang.하차상태에서만사용가능합니다);
- }
- }
- else PUB.Speak(Lang.자동운전상태가아닙니다);
+ // //241203
+ // if(PUB.AGV.system1.agv_run || PUB.AGV.system1.agv_run_manual)
+ // {
+ // PUB.AGV.AGVMoveStop("button1");
+ // }
+ // //PUB.XBE.NewMsgEvent('0', '1');
+ // }
+ // }
+ // else if (diName == arDev.FakePLC.DIName.PINI_BTN_2) //auto -> QC //230424
+ // {
+ // if (e.NewValue == true)
+ // {
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // if (VAR.BOOL[eVarBool.FLAG_AUTORUN] == true)
+ // {
+ // if (PUB.sm.RunStep == StateMachine.ERunStep.GOUP)
+ // {
+ // //zup을 자동으로 해준다
+ // if (VAR.BOOL[eVarBool.WAIT_COVER_UP])
+ // {
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
+ // PUB.Result.NextPos = ePosition.QC;
+ // }
+ // else PUB.Speak(Lang.커버업대기상태가아닙니다);
+ // }
+ // else if (PUB.sm.RunStep == StateMachine.ERunStep.GODOWN)
+ // {
+ // //이미 하차진행중에 누른 경우이다
+ // PUB.Result.NextPos = ePosition.QC;
+ // PUB.Result.TargetPos = ePosition.QC;
+ // }
+ // else
+ // {
+ // PUB.log.Add(Lang.QC이동버튼은상하차에서만사용가능합니다);
+ // PUB.Speak(Lang.하차상태에서만사용가능합니다);
+ // }
+ // }
+ // else PUB.Speak(Lang.자동운전상태가아닙니다);
- //if (VAR.BOOL[eVarBool.FLAG_AUTORUN]==false)
- //{
- // PUB.sm.ClearRunStep();
- // PUB.sm.SetNewRunStep(StateMachine.ERunStep.READY);
- // PUB.sm.SetNewStep(StateMachine.eSMStep.RUN);
- // PUB.Speak("자동 상태로 전환 합니다");
- //}
- //else
- //{
- // PUB.Speak("현재 자동 상태 입니다");
- //}
- }
- }
- else if (diName == arDev.FakePLC.DIName.PINI_BTN_3) //z-down -> QA //230424
- {
- if (e.NewValue == true)
- {
- //Z-dn기능으로 업데이트 230119
- PUB.log.Add($"버튼({diName}) 눌림");
- if (VAR.BOOL[eVarBool.FLAG_AUTORUN] == true)
- {
- if (PUB.sm.RunStep == StateMachine.ERunStep.GOUP)
- {
- //zup.을 자동으로 해준다
- if (VAR.BOOL[eVarBool.WAIT_COVER_UP])
- {
- PUB.log.Add($"버튼({diName}) 눌림");
- PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
- PUB.Result.NextPos = ePosition.QA;
- }
- else PUB.Speak(Lang.커버업대기상태가아닙니다);
- }
- else if (PUB.sm.RunStep == StateMachine.ERunStep.GODOWN)
- {
- //이미 하차진행중에 누른 경우이다
- PUB.Result.NextPos = ePosition.QA;
- PUB.Result.TargetPos = ePosition.QA;
- }
- else
- {
- PUB.log.Add($"QA이동 버튼은 상/하차에서만 사용 가능합니다");
- PUB.Speak(Lang.하차상태에서만사용가능합니다);
- }
- }
- else PUB.Speak(Lang.자동운전상태가아닙니다);
+ // //if (VAR.BOOL[eVarBool.FLAG_AUTORUN]==false)
+ // //{
+ // // PUB.sm.ClearRunStep();
+ // // PUB.sm.SetNewRunStep(StateMachine.ERunStep.READY);
+ // // PUB.sm.SetNewStep(StateMachine.eSMStep.RUN);
+ // // PUB.Speak("자동 상태로 전환 합니다");
+ // //}
+ // //else
+ // //{
+ // // PUB.Speak("현재 자동 상태 입니다");
+ // //}
+ // }
+ // }
+ // else if (diName == arDev.FakePLC.DIName.PINI_BTN_3) //z-down -> QA //230424
+ // {
+ // if (e.NewValue == true)
+ // {
+ // //Z-dn기능으로 업데이트 230119
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // if (VAR.BOOL[eVarBool.FLAG_AUTORUN] == true)
+ // {
+ // if (PUB.sm.RunStep == StateMachine.ERunStep.GOUP)
+ // {
+ // //zup.을 자동으로 해준다
+ // if (VAR.BOOL[eVarBool.WAIT_COVER_UP])
+ // {
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
+ // PUB.Result.NextPos = ePosition.QA;
+ // }
+ // else PUB.Speak(Lang.커버업대기상태가아닙니다);
+ // }
+ // else if (PUB.sm.RunStep == StateMachine.ERunStep.GODOWN)
+ // {
+ // //이미 하차진행중에 누른 경우이다
+ // PUB.Result.NextPos = ePosition.QA;
+ // PUB.Result.TargetPos = ePosition.QA;
+ // }
+ // else
+ // {
+ // PUB.log.Add($"QA이동 버튼은 상/하차에서만 사용 가능합니다");
+ // PUB.Speak(Lang.하차상태에서만사용가능합니다);
+ // }
+ // }
+ // else PUB.Speak(Lang.자동운전상태가아닙니다);
- //PUB.PLC.ZMot(FakePLC.ZMotDirection.Down);
- }
- }
- else if (diName == arDev.FakePLC.DIName.PINI_BTN_4) //z-up
- {
- if (e.NewValue == true)
- {
- //Z-up기능으로 업데이트 230119
- PUB.log.Add($"버튼({diName}) 눌림");
- PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
- }
- }
- else if (diName == arDev.FakePLC.DIName.PINI_EMG)
- {
- if (e.NewValue == true)
- {
- PUB.log.Add($"버튼({diName}) 눌림");
- PUB.Speak(Lang.비상정지);
- }
- //else Pub.Speak("비상 정지 해제");
- }
- else if (diName == arDev.FakePLC.DIName.PINI_OVERLOADL)
- {
- if (e.NewValue == true)
- {
- PUB.log.Add($"버튼({diName}) 눌림");
- PUB.Speak(Lang.오버로드감지);
- }
- VAR.BOOL[eVarBool.OVERLOADL] = e.NewValue;
- }
- else if (diName == arDev.FakePLC.DIName.PINI_OVERLOADR)
- {
- if (e.NewValue == true)
- {
- PUB.log.Add($"버튼({diName}) 눌림");
- PUB.Speak(Lang.오버로드감지);
- }
- VAR.BOOL[eVarBool.OVERLOADR] = e.NewValue;
- }
- //else if (diName == FakePLC.DIName.PINI_LIMIT_LU)
- //{
- // PUB.flag.set(EFlag.FLAG_LIMITHIGHL, e.NewValue);
- //}
- //else if (diName == FakePLC.DIName.PINI_LIMIT_RU)
- //{
- // PUB.flag.set(EFlag.FLAG_LIMITHIGHR, e.NewValue);
- //}
- //else if (diName == FakePLC.DIName.PINI_LIMIT_LD)
- //{
- // PUB.flag.set(EFlag.FLAG_LIMITLOWL, e.NewValue);
- //}
- //else if (diName == FakePLC.DIName.PINI_LIMIT_RD)
- //{
- // PUB.flag.set(EFlag.FLAG_LIMITLOWR, e.NewValue);
- //}
- //else
- //{
- // //처리하지 않음
- //}
- //PUB.flag.set(EFlag.FLAG_LIMITHIGH, (PUB.flag.get(EFlag.FLAG_LIMITHIGHL) && PUB.flag.get(EFlag.FLAG_LIMITHIGHR)));
- //PUB.flag.set(EFlag.FLAG_LIMITLOW, (PUB.flag.get(EFlag.FLAG_LIMITLOWL) && PUB.flag.get(EFlag.FLAG_LIMITLOWR)));
- VAR.BOOL[eVarBool.FLAG_LIMITHIGH] = false;// PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_LU) || PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_RU);
- VAR.BOOL[eVarBool.FLAG_LIMITLOW] = false;//PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_LD) || PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_RD);
- VAR.BOOL[eVarBool.OVERLOAD] = (VAR.BOOL[eVarBool.OVERLOADL] || VAR.BOOL[eVarBool.OVERLOADR]);
- }
- else
- {
- //출력포트값 변경
- var doName = (arDev.FakePLC.DOName)e.ArrIDX;
- PUB.logplc.Add($"출력({doName}) {(e.NewValue ? "O" : "X")}");
- }
- }
+ // //PUB.PLC.ZMot(FakePLC.ZMotDirection.Down);
+ // }
+ // }
+ // else if (diName == arDev.FakePLC.DIName.PINI_BTN_4) //z-up
+ // {
+ // if (e.NewValue == true)
+ // {
+ // //Z-up기능으로 업데이트 230119
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
+ // }
+ // }
+ // else if (diName == arDev.FakePLC.DIName.PINI_EMG)
+ // {
+ // if (e.NewValue == true)
+ // {
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // PUB.Speak(Lang.비상정지);
+ // }
+ // //else Pub.Speak("비상 정지 해제");
+ // }
+ // else if (diName == arDev.FakePLC.DIName.PINI_OVERLOADL)
+ // {
+ // if (e.NewValue == true)
+ // {
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // PUB.Speak(Lang.오버로드감지);
+ // }
+ // VAR.BOOL[eVarBool.OVERLOADL] = e.NewValue;
+ // }
+ // else if (diName == arDev.FakePLC.DIName.PINI_OVERLOADR)
+ // {
+ // if (e.NewValue == true)
+ // {
+ // PUB.log.Add($"버튼({diName}) 눌림");
+ // PUB.Speak(Lang.오버로드감지);
+ // }
+ // VAR.BOOL[eVarBool.OVERLOADR] = e.NewValue;
+ // }
+ // //else if (diName == FakePLC.DIName.PINI_LIMIT_LU)
+ // //{
+ // // PUB.flag.set(EFlag.FLAG_LIMITHIGHL, e.NewValue);
+ // //}
+ // //else if (diName == FakePLC.DIName.PINI_LIMIT_RU)
+ // //{
+ // // PUB.flag.set(EFlag.FLAG_LIMITHIGHR, e.NewValue);
+ // //}
+ // //else if (diName == FakePLC.DIName.PINI_LIMIT_LD)
+ // //{
+ // // PUB.flag.set(EFlag.FLAG_LIMITLOWL, e.NewValue);
+ // //}
+ // //else if (diName == FakePLC.DIName.PINI_LIMIT_RD)
+ // //{
+ // // PUB.flag.set(EFlag.FLAG_LIMITLOWR, e.NewValue);
+ // //}
+ // //else
+ // //{
+ // // //처리하지 않음
+ // //}
+ // //PUB.flag.set(EFlag.FLAG_LIMITHIGH, (PUB.flag.get(EFlag.FLAG_LIMITHIGHL) && PUB.flag.get(EFlag.FLAG_LIMITHIGHR)));
+ // //PUB.flag.set(EFlag.FLAG_LIMITLOW, (PUB.flag.get(EFlag.FLAG_LIMITLOWL) && PUB.flag.get(EFlag.FLAG_LIMITLOWR)));
+ // VAR.BOOL[eVarBool.FLAG_LIMITHIGH] = false;// PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_LU) || PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_RU);
+ // VAR.BOOL[eVarBool.FLAG_LIMITLOW] = false;//PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_LD) || PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_RD);
+ // VAR.BOOL[eVarBool.OVERLOAD] = (VAR.BOOL[eVarBool.OVERLOADL] || VAR.BOOL[eVarBool.OVERLOADR]);
+ // }
+ // else
+ // {
+ // //출력포트값 변경
+ // var doName = (arDev.FakePLC.DOName)e.ArrIDX;
+ // PUB.logplc.Add($"출력({doName}) {(e.NewValue ? "O" : "X")}");
+ // }
+ //}
//string oldflagmessage = string.Empty;
- string lastplclogmessage = "";
- DateTime lastplclogtime = DateTime.Now;
- string logmessage = "";
- bool logerror = false;
-
+ // 사용하지 않는 필드들 제거
+ // private string logmessage;
+ // private string lastplclogmessage;
+ // private string logerror;
}
}
diff --git a/Cs_HMI/Project/StateMachine/_Flag.cs b/Cs_HMI/Project/StateMachine/_Flag.cs
index 01acea5..01195b8 100644
--- a/Cs_HMI/Project/StateMachine/_Flag.cs
+++ b/Cs_HMI/Project/StateMachine/_Flag.cs
@@ -98,11 +98,11 @@ namespace Project
}
- void PLC_FlagChanged(object sender, arDev.Arduino.DIO.FlagValueEventArgs e)
- {
- //플래그 상태표시는 메인의 타이머를 이용한다
- // var flag = (arDev.FakePLC.PLCFlag)e.ArrIDX;
- PUB.log.Add($"PLC Flag Changed {e.ArrIDX} : {e.NewValue}");
- }
+ //void PLC_FlagChanged(object sender, arDev.Arduino.DIO.FlagValueEventArgs e)
+ //{
+ // //플래그 상태표시는 메인의 타이머를 이용한다
+ // // var flag = (arDev.FakePLC.PLCFlag)e.ArrIDX;
+ // PUB.log.Add($"PLC Flag Changed {e.ArrIDX} : {e.NewValue}");
+ //}
}
}
diff --git a/Cs_HMI/Project/StateMachine/_Loop.cs b/Cs_HMI/Project/StateMachine/_Loop.cs
index 46835a5..025b0c1 100644
--- a/Cs_HMI/Project/StateMachine/_Loop.cs
+++ b/Cs_HMI/Project/StateMachine/_Loop.cs
@@ -5,7 +5,7 @@ using System.Drawing;
using System.Linq;
using System.Text;
using arCtl;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using System.Windows.Forms;
using Project.ViewForm;
@@ -77,7 +77,7 @@ namespace Project
}
- void sm_Running(object sender, StateMachine.RunningEventArgs e)
+ void sm_Running(object sender, StateMachine.StateMachine.RunningEventArgs e)
{
//창을 닫아야하는 상황에는 처리하지 않는다.
@@ -352,7 +352,7 @@ namespace Project
}
}
- void sm_Message(object sender, StateMachine.StateMachineMessageEventArgs e)
+ void sm_Message(object sender, StateMachine.StateMachine.StateMachineMessageEventArgs e)
{
//상태머신에서 발생한 메세지
if (e.Header != "SM-STEP")
@@ -360,7 +360,7 @@ namespace Project
}
- void sm_StepChanged(object sender, StateMachine.StepChangeEventArgs e)
+ void sm_StepChanged(object sender, StateMachine.StateMachine.StepChangeEventArgs e)
{
//상태머신의 스텝이 변경될때 발생함
//Pub.log.Add(string.Format("SM:Step Changed {0} to {1}",e.Old,e.New));
diff --git a/Cs_HMI/Project/StateMachine/_SPS.cs b/Cs_HMI/Project/StateMachine/_SPS.cs
index 7918f90..ef6bb8a 100644
--- a/Cs_HMI/Project/StateMachine/_SPS.cs
+++ b/Cs_HMI/Project/StateMachine/_SPS.cs
@@ -7,7 +7,7 @@ using System.Text;
using AR;
using arCtl;
using COMM;
-using static Project.StateMachine;
+using Project.StateMachine;
namespace Project
{
diff --git a/Cs_HMI/Project/StateMachine/_TMDisplay.cs b/Cs_HMI/Project/StateMachine/_TMDisplay.cs
index 6b01714..b4d9493 100644
--- a/Cs_HMI/Project/StateMachine/_TMDisplay.cs
+++ b/Cs_HMI/Project/StateMachine/_TMDisplay.cs
@@ -2,7 +2,7 @@
using COMM;
using System;
using System.Drawing;
-using static Project.StateMachine;
+using Project.StateMachine;
namespace Project
{
@@ -421,8 +421,8 @@ namespace Project
///
void Update_Music()
{
-
- if (PUB.mplayer != null && PUB.mplayer.HasAudio && PUB.bPlayMusic)
+ if (PUB.mplayer == null) return;
+ if (PUB.mplayer != null && !string.IsNullOrEmpty(PUB.mplayer.SoundLocation) && PUB.bPlayMusic)
{
if (PUB.AGV.system1.agv_run == false)
{
@@ -434,7 +434,7 @@ namespace Project
}
}
- else if (PUB.setting.Enable_Music && PUB.mplayer != null && PUB.mplayer.HasAudio)
+ else if (PUB.setting.Enable_Music && PUB.mplayer != null && !string.IsNullOrEmpty(PUB.mplayer.SoundLocation))
{
if (PUB.AGV.system1.agv_run == true)
{
diff --git a/Cs_HMI/Project/ViewForm/fAgv.cs b/Cs_HMI/Project/ViewForm/fAgv.cs
index aace338..29645f7 100644
--- a/Cs_HMI/Project/ViewForm/fAgv.cs
+++ b/Cs_HMI/Project/ViewForm/fAgv.cs
@@ -32,7 +32,6 @@ namespace Project.ViewForm
}
- bool tmrun = false;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
diff --git a/Cs_HMI/Project/ViewForm/fAuto.cs b/Cs_HMI/Project/ViewForm/fAuto.cs
index 48dcdca..9e29e0f 100644
--- a/Cs_HMI/Project/ViewForm/fAuto.cs
+++ b/Cs_HMI/Project/ViewForm/fAuto.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
-using static Project.StateMachine;
+using Project.StateMachine;
using COMM;
using AR;
@@ -44,7 +44,7 @@ namespace Project.ViewForm
}
}
- private void Sm_StepChanged(object sender, StepChangeEventArgs e)
+ private void Sm_StepChanged(object sender, StateMachine.StateMachine.StepChangeEventArgs e)
{
if (e.New == eSMStep.INIT || e.New == eSMStep.SYNC)
this.ctlAuto1.Scean = CtlAuto.eScean.Progress;
diff --git a/Cs_HMI/Project/ViewForm/fBms.cs b/Cs_HMI/Project/ViewForm/fBms.cs
index 431c95f..399b280 100644
--- a/Cs_HMI/Project/ViewForm/fBms.cs
+++ b/Cs_HMI/Project/ViewForm/fBms.cs
@@ -60,7 +60,6 @@ namespace Project.ViewForm
}
- bool tmrun = false;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
diff --git a/Cs_HMI/Project/ViewForm/fFlag.cs b/Cs_HMI/Project/ViewForm/fFlag.cs
index 3d8d8b5..6b720ff 100644
--- a/Cs_HMI/Project/ViewForm/fFlag.cs
+++ b/Cs_HMI/Project/ViewForm/fFlag.cs
@@ -88,7 +88,6 @@ namespace Project.ViewForm
}
- bool tmrun = false;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
diff --git a/Cs_HMI/Project/ViewForm/fIO.cs b/Cs_HMI/Project/ViewForm/fIO.cs
index 1d9d5c7..289b3ff 100644
--- a/Cs_HMI/Project/ViewForm/fIO.cs
+++ b/Cs_HMI/Project/ViewForm/fIO.cs
@@ -23,43 +23,33 @@ namespace Project.ViewForm
namearray.Clear();
tagarray.Clear();
- for (byte i = 0; i < 16; i++)
- {
- var flagName = ((arDev.FakePLC.DIName)i).ToString();
- var enumValue = Enum.Parse(typeof(arDev.FakePLC.DIPin), flagName);
- if (flagName == i.ToString()) tagarray.Add(string.Empty);
- else
- {
- //동일한 이름의 pin 번호르 찾아서 할당해준다.
- var eV = (arDev.FakePLC.DIPin)enumValue;
- tagarray.Add(((byte)eV).ToString());
- }
- namearray.Add(flagName.Replace("_", "\n"));
- }
- for (byte i = 0; i < 8; i++)
- {
- var flagName = ((arDev.FakePLC.DOName)i).ToString();
- var enumValue = Enum.Parse(typeof(arDev.FakePLC.DOPin), flagName);
- if (flagName == i.ToString()) tagarray.Add(string.Empty);
- else
- {
- //동일한 이름의 pin 번호르 찾아서 할당해준다.
- var eV = (arDev.FakePLC.DOPin)enumValue;
- tagarray.Add(((byte)eV).ToString());
- }
- namearray.Add(flagName);
- }
-
- ////값설정
- //List fgValueM = new List();
- //List fgValueS = new List();
-
- ////mainplc
//for (byte i = 0; i < 16; i++)
- // fgValueM.Add(PUB.PLC.GetValueI(i));
- //for (byte i = 0; i < 16; i++)
- // fgValueM.Add(PUB.PLC.GetValueO(i));
-
+ //{
+ // var flagName = ((arDev.FakePLC.DIName)i).ToString();
+ // var enumValue = Enum.Parse(typeof(arDev.FakePLC.DIPin), flagName);
+ // if (flagName == i.ToString()) tagarray.Add(string.Empty);
+ // else
+ // {
+ // //동일한 이름의 pin 번호르 찾아서 할당해준다.
+ // var eV = (arDev.FakePLC.DIPin)enumValue;
+ // tagarray.Add(((byte)eV).ToString());
+ // }
+ // namearray.Add(flagName.Replace("_", "\n"));
+ //}
+ //for (byte i = 0; i < 8; i++)
+ //{
+ // var flagName = ((arDev.FakePLC.DOName)i).ToString();
+ // var enumValue = Enum.Parse(typeof(arDev.FakePLC.DOPin), flagName);
+ // if (flagName == i.ToString()) tagarray.Add(string.Empty);
+ // else
+ // {
+ // //동일한 이름의 pin 번호르 찾아서 할당해준다.
+ // var eV = (arDev.FakePLC.DOPin)enumValue;
+ // tagarray.Add(((byte)eV).ToString());
+ // }
+ // namearray.Add(flagName);
+ //}
+
this.FormClosed += FIO_FormClosed;
UpdateControl();
diff --git a/Cs_HMI/Project/app.config b/Cs_HMI/Project/app.config
index 16d62dc..547c6c9 100644
--- a/Cs_HMI/Project/app.config
+++ b/Cs_HMI/Project/app.config
@@ -2,10 +2,22 @@
+
+
+
+
+
+
+ asdfasdfasdf
+asdfasdfasdf
+asdf
+
+
asdfasdfasdf
diff --git a/Cs_HMI/Project/fMain.cs b/Cs_HMI/Project/fMain.cs
index f2882d6..5658023 100644
--- a/Cs_HMI/Project/fMain.cs
+++ b/Cs_HMI/Project/fMain.cs
@@ -7,12 +7,10 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
-using static Project.StateMachine;
-using Microsoft.Speech.Synthesis;
-using Microsoft.Speech;
using COMM;
using System.CodeDom;
using AR;
+using Project.StateMachine;
namespace Project
{
@@ -159,7 +157,7 @@ namespace Project
}
- short[] FlagMapValue;
+ private Dictionary FlagMap = new Dictionary();
private void __Load(object sender, EventArgs e)
{
this.Text = Application.ProductName + " ver " + Application.ProductVersion;
@@ -228,7 +226,7 @@ namespace Project
PUB.sm.SetMsgOptOff(); //모든 메세지출력을 해제한다. (이벤트는 동작함)
PUB.log.Add("State Machine Start");
- PUB.sm = new StateMachine();
+ PUB.sm = new StateMachine.StateMachine();
PUB.sm.StepChanged += sm_StepChanged;
PUB.sm.Message += sm_Message;
PUB.sm.Running += sm_Running;
@@ -690,8 +688,7 @@ namespace Project
using (var f = new fSetup())
if (f.ShowDialog() == DialogResult.OK)
{
- //music volume200522
- PUB.mplayer.Volume = PUB.setting.musicvol / 100.0;
+
//AGV정보 싱크
PUB.sm.ResetRunStepSeq();
@@ -719,7 +716,7 @@ namespace Project
PUB.sm.ClearRunStep();
PUB.sm.SetNewStep(eSMStep.RESET);
PUB.sm.bPause = false;
- if (PUB.mplayer != null && PUB.mplayer.HasAudio)
+ if (PUB.mplayer != null && PUB.mplayer.SoundLocation.isEmpty() == false)
{
PUB.mplayer.Stop();
PUB.bPlayMusic = false;
diff --git a/Cs_HMI/Project/fSetup.cs b/Cs_HMI/Project/fSetup.cs
index f2f5d0b..b89780d 100644
--- a/Cs_HMI/Project/fSetup.cs
+++ b/Cs_HMI/Project/fSetup.cs
@@ -18,7 +18,7 @@ namespace Project
public fSetup()
{
InitializeComponent();
- tmDisplay = new Timer
+ tmDisplay = new System.Windows.Forms.Timer
{
Interval = 200
};
@@ -125,7 +125,7 @@ namespace Project
chkClearPos.Checked = PUB.setting.AutoModeOffAndClearPosition;
//PLC옵션
- nudMusicVol.Value = (int)(PUB.mplayer.Volume * 100.0);
+ nudMusicVol.Value = PUB.setting.musicvol;// (int)(PUB.mplayer.Volume * 100.0);
tbMusic.Text = PUB.setting.musicfile;
this.chkFullScreen.Checked = PUB.setting.FullScreen;
this.chkDetectManualCharge.Checked = PUB.setting.DetectManualCharge;
@@ -332,7 +332,8 @@ namespace Project
PUB.setting.TAGF5B = (int)vcTagF5B.Value;
//PLC옵션
- PUB.setting.musicvol = (int)nudMusicVol.Value;
+ //PUB.setting.musicvol = (int)nudMusicVol.Value;
+ PUB.SetVolume((int)nudMusicVol.Value);
PUB.setting.ChargeSearchTime = (int)vcChargeSearchTime.Value;
PUB.setting.doorSoundTerm = (int)nudDoorSoundTerm.Value;
@@ -527,8 +528,8 @@ namespace Project
}
try
{
- if (PUB.mplayer.HasAudio) PUB.mplayer.Stop();
- PUB.mplayer.Open(new Uri(tbMusic.Text));
+ if (PUB.mplayer.SoundLocation.isEmpty()==false) PUB.mplayer.Stop();
+ PUB.mplayer.SoundLocation = tbMusic.Text;// (new Uri(tbMusic.Text));
PUB.mplayer.Play();
PUB.bPlayMusic = true;
}
diff --git a/Cs_HMI/Project/run.bat b/Cs_HMI/Project/run.bat
new file mode 100644
index 0000000..aba823c
--- /dev/null
+++ b/Cs_HMI/Project/run.bat
@@ -0,0 +1,4 @@
+echo "Building..."
+rem dotnet build
+echo "Running..."
+dotnet run --project .\Project\AGV4.csproj
\ No newline at end of file
diff --git a/Cs_HMI/StateMachine/EnumStruct.cs b/Cs_HMI/StateMachine/EnumStruct.cs
index baedc6f..fad6909 100644
--- a/Cs_HMI/StateMachine/EnumStruct.cs
+++ b/Cs_HMI/StateMachine/EnumStruct.cs
@@ -3,90 +3,90 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-namespace Project
+namespace Project.StateMachine
{
- public partial class StateMachine
+ // public partial class StateMachine
+ //{
+ public enum eGoDir
{
- public enum eGoDir
- {
- Up,
- Down,
- }
- public enum EMsgOpt : byte
- {
- NORMAL,
- STEPCHANGE,
- ERROR,
- }
+ Up,
+ Down,
+ }
+ public enum EMsgOpt : byte
+ {
+ NORMAL,
+ STEPCHANGE,
+ ERROR,
+ }
+ ///
+ /// 000~020 : System Define
+ /// 020~255 : User Define
+ ///
+ public enum eSMStep : byte
+ {
+ NOTSET = 0,
+ INIT,
+ SYNC,
+ IDLE,
+ RUN,
+ FINISH,
+ PAUSE,
+ ERROR,
+ RESET,
+ EMERGENCY,
+ CLEAR,
+ CLOSING,
+ CLOSEWAIT,
+ CLOSED,
+ }
+
+ ///
+ /// RUN중일 때 사용되는 세부 시퀀스
+ ///
+ public enum ERunStep : byte
+ {
+
///
- /// 000~020 : System Define
- /// 020~255 : User Define
+ /// 자동모드 대기상태
///
- public enum eSMStep : byte
- {
- NOTSET = 0,
- INIT,
- SYNC,
- IDLE,
- RUN,
- FINISH,
- PAUSE,
- ERROR,
- RESET,
- EMERGENCY,
- CLEAR,
- CLOSING,
- CLOSEWAIT,
- CLOSED,
- }
-
+ READY = 0,
+
///
- /// RUN중일 때 사용되는 세부 시퀀스
+ /// 홈(QC)로 이동합니다
///
- public enum ERunStep : byte
- {
-
- ///
- /// 자동모드 대기상태
- ///
- READY=0,
+ GOHOME,
- ///
- /// 홈(QC)로 이동합니다
- ///
- GOHOME,
+ ///
+ /// 충전을 해제 함
+ ///
+ CHARGEOFF,
- ///
- /// 충전을 해제 함
- ///
- CHARGEOFF,
-
- ///
- /// 충전이동
- ///
- GOCHARGE,
+ ///
+ /// 충전이동
+ ///
+ GOCHARGE,
- ///
- /// 충전중
- ///
- CHARGECHECK =50,
+ ///
+ /// 충전중
+ ///
+ CHARGECHECK = 50,
- ///
- /// 상차이동
- ///
- GOUP,
+ ///
+ /// 상차이동
+ ///
+ GOUP,
- ///
- /// 하차이동
- ///
- GODOWN,
-
- }
-
+ ///
+ /// 하차이동
+ ///
+ GODOWN,
}
+
+
+
}
diff --git a/Cs_HMI/StateMachine/EventArgs.cs b/Cs_HMI/StateMachine/EventArgs.cs
index b70ea06..ac2850b 100644
--- a/Cs_HMI/StateMachine/EventArgs.cs
+++ b/Cs_HMI/StateMachine/EventArgs.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-namespace Project
+namespace Project.StateMachine
{
public partial class StateMachine
{
diff --git a/Cs_HMI/StateMachine/StateMachine.cs b/Cs_HMI/StateMachine/StateMachine.cs
index 07beaf2..1b1badd 100644
--- a/Cs_HMI/StateMachine/StateMachine.cs
+++ b/Cs_HMI/StateMachine/StateMachine.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-namespace Project
+namespace Project.StateMachine
{
public partial class StateMachine : IDisposable
{
diff --git a/Cs_HMI/StateMachine/StateMachine.csproj b/Cs_HMI/StateMachine/StateMachine.csproj
index 78843e6..15580ba 100644
--- a/Cs_HMI/StateMachine/StateMachine.csproj
+++ b/Cs_HMI/StateMachine/StateMachine.csproj
@@ -7,7 +7,7 @@
{BBC9BCCF-6262-4355-9CC2-37FF678AC499}
Library
Properties
- StateMachine
+ Project.StateMachine
StateMachine
v4.8
512
diff --git a/Cs_HMI/SubProject/AGV/Narumi.cs b/Cs_HMI/SubProject/AGV/Narumi.cs
index 972d7b9..a423305 100644
--- a/Cs_HMI/SubProject/AGV/Narumi.cs
+++ b/Cs_HMI/SubProject/AGV/Narumi.cs
@@ -62,7 +62,6 @@ namespace arDev
Errlog = new Queue();
MinRecvLength = 4;
- VAR.Init(128);
}
diff --git a/Cs_HMI/SubProject/MSSQLCommand/Monitor.cs b/Cs_HMI/SubProject/MSSQLCommand/Monitor.cs
index e224b6c..a912cbc 100644
--- a/Cs_HMI/SubProject/MSSQLCommand/Monitor.cs
+++ b/Cs_HMI/SubProject/MSSQLCommand/Monitor.cs
@@ -12,7 +12,6 @@ namespace MSSQLCommand
///
public string CS { get; private set; }
- private int
public Monitor(string ip, string id, string pass, string db)
{
//ConnectionString = $"Data Source =10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
diff --git a/Cs_HMI/TestProject/Test_ProPLC/Test_PLC.csproj b/Cs_HMI/TestProject/Test_ProPLC/Test_PLC.csproj
index 0763fac..40eb8c5 100644
--- a/Cs_HMI/TestProject/Test_ProPLC/Test_PLC.csproj
+++ b/Cs_HMI/TestProject/Test_ProPLC/Test_PLC.csproj
@@ -95,10 +95,6 @@
{14e8c9a5-013e-49ba-b435-efefc77dd623}
CommData
-
- {476c8e64-7b6b-4554-aca2-04302715750f}
- PLC.Net45
-
\ No newline at end of file
diff --git a/Cs_HMI/run.bat b/Cs_HMI/run.bat
new file mode 100644
index 0000000..f6db54e
--- /dev/null
+++ b/Cs_HMI/run.bat
@@ -0,0 +1,2 @@
+dotnet build
+dotnet run --project .\Project\AGV4.csproj
\ No newline at end of file