..
This commit is contained in:
3
Cs_HMI/.vscode/settings.json
vendored
3
Cs_HMI/.vscode/settings.json
vendored
@@ -1,3 +1,4 @@
|
||||
{
|
||||
"dotnet.preferCSharpExtension": true
|
||||
"dotnet.preferCSharpExtension": true,
|
||||
"dotnet.defaultSolution": "AGVCSharp.sln"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.14.36310.24
|
||||
# Visual Studio Express 15 for Windows Desktop
|
||||
VisualStudioVersion = 15.0.36324.19
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sub", "Sub", "{C423C39A-44E7-4F09-B2F7-7943975FF948}"
|
||||
EndProject
|
||||
@@ -36,10 +36,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGVMapEditor", "AGVLogic\AG
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGVSimulator", "AGVLogic\AGVSimulator\AGVSimulator.csproj", "{B2C3D4E5-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{C8D5274F-AC00-46C7-1F8D-E88E81087A52}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_BMS", "TestProject\Test_BMS\Test_BMS.csproj", "{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -170,18 +166,6 @@ Global
|
||||
{B2C3D4E5-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{B2C3D4E5-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B2C3D4E5-0000-0000-0000-000000000000}.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
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -194,7 +178,6 @@ Global
|
||||
{C5F7A8B2-8D3E-4A1B-9C6E-7F4D5E2A9B1C} = {E5C75D32-5AD6-44DD-8F27-E32023206EBB}
|
||||
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890} = {E5C75D32-5AD6-44DD-8F27-E32023206EBB}
|
||||
{B2C3D4E5-0000-0000-0000-000000000000} = {E5C75D32-5AD6-44DD-8F27-E32023206EBB}
|
||||
{CE3FFF9F-6ACA-44BD-B64A-33FF4AD5E82E} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B5B1FD72-356F-4840-83E8-B070AC21C8D9}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>Full</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<OutputPath>..\..\..\..\..\amkor\AGV4\</OutputPath>
|
||||
<OutputPath>..\..\..\..\..\Amkor\AGV4\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -341,6 +341,9 @@
|
||||
<Compile Include="StateMachine\_SPS.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Device\_DeviceManagement.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="StateMachine\_Loop.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net8.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<BaseOutputPath>S:\Amkor\AGV4</BaseOutputPath>
|
||||
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
|
||||
<UseResourceDedicatedThread>true</UseResourceDedicatedThread>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\StateMachine\StateMachine.csproj" />
|
||||
<ProjectReference Include="..\SubProject\AGVMapControl\AGVMapControl.csproj" />
|
||||
<ProjectReference Include="..\SubProject\AGV\NARUMI.csproj" />
|
||||
<ProjectReference Include="..\SubProject\AGVControl\agvControl.csproj" />
|
||||
<ProjectReference Include="..\SubProject\arCtl\arControl.csproj" />
|
||||
<ProjectReference Include="..\SubProject\BMS\BMS.csproj" />
|
||||
<ProjectReference Include="..\SubProject\CommData\CommData.csproj" />
|
||||
<ProjectReference Include="..\SubProject\Patch\SWPatch.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="Properties\Settings.Designer.cs">
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="icons8-split-64.ico">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Update="sample.route">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="arCommUtil">
|
||||
<HintPath>..\DLL\arCommUtil.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Winsock Orcas">
|
||||
<HintPath>..\DLL\Winsock Orcas.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.2" />
|
||||
<PackageReference Include="System.IO.Ports" Version="9.0.4" />
|
||||
<PackageReference Include="System.Management" Version="9.0.4" />
|
||||
<PackageReference Include="System.Speech" Version="9.0.4" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -103,6 +103,11 @@ namespace arDev
|
||||
RaiseMessage(MessageType.Error, $"데이터의 길이가 {MinRecvLength}가 아닙니다 길이={data.Length}");
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var rxstr = string.Join(" ", data.Select(t => t.ToString("X2")));
|
||||
RaiseMessage(MessageType.Recv, $"Querh:{QueryIndex},Data:{rxstr}" );
|
||||
}
|
||||
|
||||
if (QueryIndex == 0)
|
||||
{
|
||||
|
||||
@@ -1,402 +0,0 @@
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.ComponentModel;
|
||||
//using System.Threading;
|
||||
//using COMM;
|
||||
//using System.Runtime.Remoting.Messaging;
|
||||
//using AR;
|
||||
|
||||
//namespace Project.Device
|
||||
//{
|
||||
// public class Xbee_OLD : arDev.arRS232
|
||||
// {
|
||||
// public Xbee_OLD()
|
||||
// {
|
||||
|
||||
// }
|
||||
|
||||
// public string buffer = string.Empty;
|
||||
// public System.Text.StringBuilder newbuffer = new StringBuilder();
|
||||
// protected override bool CustomParser(byte[] buf, out byte[] remainBuffer)
|
||||
// {
|
||||
// //일반 kit 명령은 0x02 kit번호, kit값 0x03
|
||||
// //상태 명령은 0x04 메세지데이터 0x05
|
||||
|
||||
// Console.WriteLine("custom parse len=" + buf.Length.ToString());
|
||||
|
||||
// List<byte> sparebuffer = new List<byte>();
|
||||
// Boolean bComplete = false;
|
||||
// for (int i = 0; i < buf.Length; i++)
|
||||
// {
|
||||
// var incomByte = buf[i];
|
||||
// if (bComplete == true) sparebuffer.Add(incomByte);
|
||||
// else
|
||||
// {
|
||||
// if (findSTX == false)
|
||||
// {
|
||||
// if (incomByte != 0x02)
|
||||
// {
|
||||
// //버리는데이터
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// findSTX = true;
|
||||
// tempBuffer.Clear();
|
||||
// tempBuffer.Add(incomByte);
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// tempBuffer.Add(incomByte);
|
||||
|
||||
// if (incomByte == 0x03)
|
||||
// {
|
||||
// //데이터가 맞게 수신됨
|
||||
// LastReceiveBuffer = tempBuffer.ToArray();
|
||||
// bComplete = true;
|
||||
// findSTX = false;
|
||||
// }
|
||||
// else if (tempBuffer.Count > 30)
|
||||
// {
|
||||
// tempBuffer.Clear();
|
||||
// findSTX = false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// remainBuffer = sparebuffer.ToArray();
|
||||
// return bComplete;
|
||||
// }
|
||||
|
||||
|
||||
// public override bool ProcessRecvData(byte[] data)
|
||||
// {
|
||||
// var kitno = (char)(data[1]);
|
||||
// var kitval = (char)(data[2]);
|
||||
// NewMsgEvent(kitno, kitval);
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// public void NewMsgEvent(char kitNo, char kitVal)
|
||||
// {
|
||||
// //대상위치 확인
|
||||
// ePosition kitPos = ePosition.NONE;
|
||||
// if (kitNo == '9') kitPos = ePosition.QC;
|
||||
// else if (kitNo == '1') kitPos = ePosition.F1;
|
||||
// else if (kitNo == '2') kitPos = ePosition.F2;
|
||||
// else if (kitNo == '3') kitPos = ePosition.F3;
|
||||
// else if (kitNo == '4') kitPos = ePosition.F4;
|
||||
// else
|
||||
// {
|
||||
// if (kitNo == '0') return;
|
||||
// PUB.log.Add($"비허가 키트번호 무시 번호={kitNo},값={kitVal}");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// //if (kitNo= 'F')
|
||||
// //{
|
||||
// // PUB.Speak("알 수 없는 키트번호 입니다");
|
||||
// // PUB.logsys.Add($"키트번호별위치확인실패 값={kitNo}");
|
||||
// // return;
|
||||
// //}
|
||||
|
||||
// //(ePosition)int.Parse(kitNo.ToString());
|
||||
// PUB.logxbee.Add(string.Format("Xbee:newMsgEvent:{0},{1}=>{2}", kitNo, kitVal, kitPos));
|
||||
// if (PUB.CheckManualChargeMode() == false)
|
||||
// {
|
||||
// PUB.log.Add($"수동 충전 중이라 콜 기능을 취소 합니다");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// bool FixButton = kitPos == ePosition.NONE;
|
||||
// if (kitPos == ePosition.NONE)
|
||||
// {
|
||||
// if (kitVal == '1') kitPos = ePosition.QC;
|
||||
// else if (kitVal == '2') kitPos = ePosition.CHARGE;
|
||||
// else if (kitVal == '4') kitPos = ePosition.QC;
|
||||
// //else if (kitVal == '3') kitPos = ePosition.QA;
|
||||
// else
|
||||
// {
|
||||
// PUB.log.Add($"AGV버튼 이벤트 실행 값:{kitVal} 취소");
|
||||
// return;
|
||||
// }
|
||||
// kitVal = '1'; //버튼은 무조건 ON상태로 한다
|
||||
// }
|
||||
|
||||
// //자동상태가 아니라면 오류처리
|
||||
// if (VAR.BOOL[eVarBool.FLAG_AUTORUN] == false || PUB.sm.Step != StateMachine.eSMStep.RUN)
|
||||
// {
|
||||
// PUB.log.AddE("'자동실행' 상태가 아니므로 콜/취소 작업을 할 수 없습니다 콜:" + kitPos.ToString() + ",값=" + kitVal.ToString());
|
||||
// PUB.Speak(Lang.자동운전상태가아닙니다);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// //충전기를 제외하고 '1'의 값은 호출을 원하는값이다.('0'=취소)
|
||||
// if (kitVal == '1')
|
||||
// {
|
||||
// //qA혹은 Pack 에서 해당 버튼을 눌렀을때의 처리방법
|
||||
// //if (PUB.Result.CurrentPos == ePosition.QA && kitPos == ePosition.QA)
|
||||
// //{
|
||||
// // PUB.logsys.AddE("QA위치에서 QA버튼을 눌렀음 명령 취소함");
|
||||
// // PUB.Speak("현재 위치는 QA 입니다.");
|
||||
// // return;
|
||||
// //}
|
||||
|
||||
// //상/하차 작업중이 아니라면 콜을 받는다
|
||||
// if (PUB.sm.RunStep != StateMachine.ERunStep.GOUP && PUB.sm.RunStep != StateMachine.ERunStep.GODOWN)
|
||||
// {
|
||||
// //call을 받으려면 대상위 (2=QC,3,4,5,6,7)
|
||||
// //콜을 요청하는 곳 (2=QC,3=FVI-1,4,5,6,7==FVI-5)
|
||||
// //1번은 충전기
|
||||
|
||||
// //콜버튼으로 대상위치를 다시 결정한다.
|
||||
// //대상번호는 콜번호에서 +2을 하면 된다.
|
||||
// //대상번호 PK=1,QA2=2,QA1=3,QC=4
|
||||
// //QC의경우 콜Kit번호는 2이므로, 이동대상은 +2인 4가 되어야 함
|
||||
// //콜번호와 RFID대상번호는 2의 오차가 발생함, 현재 설치된 RFID를 모두 변경할 수 없어서 이렇게 운용함
|
||||
|
||||
|
||||
// RaiseMessage(MessageType.Normal, string.Format("CALL확정 Kit={0},대상위치={1}", kitNo, kitPos));
|
||||
|
||||
// PUB.AGV.data.CallNo = int.Parse(kitNo.ToString());
|
||||
// PUB.AGV.data.CallString = kitNo.ToString();
|
||||
|
||||
// PUB.Result.CommandKit = kitNo;
|
||||
// PUB.Result.TargetPos = kitPos;
|
||||
// SendToKit(kitNo, '1', (PUB.IsCanCALL() ? '1' : '0')); //콜확정을 클라이언트에 알림
|
||||
|
||||
// PUB.Speak(kitPos.ToString() + Lang.위치로이동합니다);
|
||||
|
||||
// //상태머신을 변경한다 (충전 OFF상태로 간다, 충전상태가 아니면 바로 이동하게됨)
|
||||
// //Pub.sm.ResetRunStep();
|
||||
// //Pub.sm.setNewStep(StateMachine.eSMStep.RUN);
|
||||
|
||||
// //qa, pack 은 하차 전용이다
|
||||
// PUB.sm.ClearRunStep();
|
||||
// PUB.sm.SetNewRunStep(StateMachine.ERunStep.GOUP);
|
||||
// PUB.sm.SetNewStep(StateMachine.eSMStep.RUN);
|
||||
// }
|
||||
// else if (PUB.sm.RunStep == StateMachine.ERunStep.GODOWN && VAR.BOOL[eVarBool.WAIT_COVER_DOWN] == false && VAR.BOOL[eVarBool.WAIT_COVER_UP] == false)
|
||||
// {
|
||||
// //하차중에 받을 수 있게하자 (단 FVi1 이하일때에는 무시하자) 230710 - 김수곤
|
||||
// if (PUB.Result.TargetPos == ePosition.QC && PUB.Result.CurrentPos < ePosition.F1)
|
||||
// {
|
||||
// PUB.log.Add($"하차중이지만 FVI #1 아래에 있으니 콜을 취소 합니다");
|
||||
// SendToKit(kitNo, '0', '0');
|
||||
// RaiseMessage(MessageType.Normal, $"QC 추가 콜이지만 위치가 #1번 이하이므로 취소 됩니다. Kit={kitNo},현재={PUB.Result.CurrentPos},대상={PUB.Result.TargetPos}");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// RaiseMessage(MessageType.Normal, string.Format("CALL확정(추가) Kit={0},대상위치={1}", kitNo, kitPos));
|
||||
|
||||
// PUB.AGV.data.CallNo = int.Parse(kitNo.ToString());
|
||||
// PUB.AGV.data.CallString = kitNo.ToString();
|
||||
|
||||
// PUB.Result.CommandKit = kitNo;
|
||||
// PUB.Result.TargetPos = kitPos;
|
||||
|
||||
// SendToKit(kitNo, '1', (PUB.IsCanCALL() ? '1' : '0')); //콜확정을 클라이언트에 알림
|
||||
|
||||
// PUB.Speak(kitPos.ToString() + Lang.위치로이동합니다);
|
||||
|
||||
// //상태머신을 변경한다 (충전 OFF상태로 간다, 충전상태가 아니면 바로 이동하게됨)
|
||||
// //Pub.sm.ResetRunStep();
|
||||
// //Pub.sm.setNewStep(StateMachine.eSMStep.RUN);
|
||||
|
||||
// //qa, pack 은 하차 전용이다
|
||||
// PUB.sm.ClearRunStep();
|
||||
// PUB.sm.SetNewRunStep(StateMachine.ERunStep.GOUP);
|
||||
// PUB.sm.SetNewStep(StateMachine.eSMStep.RUN);
|
||||
// }
|
||||
|
||||
// }
|
||||
// //else if (PUB.sm.RunStep == StateMachine.ERunStep.GODOWN && PUB.Result.CurrentPos == ePosition.QA)
|
||||
// //{
|
||||
// // RaiseMessage(MessageType.Normal, string.Format("CALL확정 Kit={0},대상위치={1}", kitNo, kitPos));
|
||||
|
||||
// // PUB.Result.CommandKit = kitNo;
|
||||
// // PUB.Result.TargetPos = kitPos;
|
||||
// // SendToKit(kitNo, '1'); //콜확정을 클라이언트에 알림
|
||||
|
||||
// // PUB.Speak(kitPos.ToString() + "위치로 이동 합니다");
|
||||
|
||||
// // //상태머신을 변경한다 (충전 OFF상태로 간다, 충전상태가 아니면 바로 이동하게됨)
|
||||
// // // Pub.sm.ResetRunStep();
|
||||
// // // Pub.sm.setNewStep(StateMachine.eSMStep.RUN);
|
||||
|
||||
// // //qa => pack 은 하차 전용이다
|
||||
// // //QA에서 PACK이동시에는 바로 N극 멈춤 기능을 사용해도도된다.(자재가 있으며, 커버가 내려가 있으므로 느리게 동작해야함)
|
||||
// // PUB.sm.ClearRunStep();
|
||||
// // PUB.sm.SetNewRunStep(StateMachine.ERunStep.GODOWN);
|
||||
// // PUB.sm.SetNewStep(StateMachine.ESMStep.RUN);
|
||||
|
||||
// // PUB.AGV.AGVMoveStop("xbee_newmsgevent", arDev.Narumi.eStopOpt.MarkStop);// (arDev.Narumi.eAgvCmd.MoveStop,.SetNextStop_Mark(true, "xbee godn,qa,pack");
|
||||
// // PUB.PLC.ZMot(arDev.FakePLC.ZMotDirection.Up);
|
||||
// //}
|
||||
// else if (PUB.Result.TargetPos == kitPos) ////현재 지정된 클라이언트가 또 눌렀다
|
||||
// {
|
||||
// PUB.Result.TargetPos = kitPos;
|
||||
// PUB.AGV.data.CallNo = int.Parse(kitNo.ToString());
|
||||
// PUB.AGV.data.CallString = kitNo.ToString();
|
||||
|
||||
// //상차 대기 중이라면 커버를 자동 올려준다
|
||||
// //이것은 QC만 가능하다
|
||||
// //QC가 QA혹은 PACK으로 보낼때 사용함
|
||||
// if (kitPos == ePosition.QC &&
|
||||
// VAR.BOOL[eVarBool.FLAG_LIMITLOW] == true)
|
||||
// {
|
||||
// RaiseMessage(MessageType.Normal, "QC위치에서 자동으로 커버를 올립니다");
|
||||
// //PUB.PLC.ZMot(arDev.FakePLC.ZMotDirection.Up);
|
||||
// PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //커버대기상태라면 커버를 자동으로 처리해준다.
|
||||
// if (PUB.sm.Step == StateMachine.eSMStep.RUN && (PUB.sm.RunStep == StateMachine.ERunStep.GOUP || PUB.sm.RunStep == StateMachine.ERunStep.GODOWN))
|
||||
// {
|
||||
|
||||
// if (VAR.BOOL[eVarBool.WAIT_COVER_DOWN] == true)
|
||||
// {
|
||||
// //var ld = PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_LD);
|
||||
// //var rd = PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_RD);
|
||||
// //if (ld == false || rd == false)
|
||||
// //{
|
||||
// // PUB.log.Add("사용자 콜버튼 추가 동작 - Z내림");
|
||||
// // PUB.PLC.ZMot(arDev.FakePLC.ZMotDirection.Down);
|
||||
// // PUB.Speak(Lang.커버를내립니다);
|
||||
// //}
|
||||
// }
|
||||
// else if (VAR.BOOL[eVarBool.WAIT_COVER_UP] == true)
|
||||
// {
|
||||
// //var lu = PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_LU);
|
||||
// //var ru = PUB.PLC.GetValueI(arDev.FakePLC.DIName.PINI_LIMIT_RU);
|
||||
|
||||
// //if (lu == false || ru == false)
|
||||
// //{
|
||||
// // PUB.PLC.ZMot(arDev.FakePLC.ZMotDirection.Up);
|
||||
// // PUB.log.Add("사용자 콜버튼 추가 동작 - Z올림");
|
||||
// // PUB.Speak(Lang.커버를올립니다);
|
||||
// //}
|
||||
// }
|
||||
// else RaiseMessage(MessageType.Normal, string.Format("이미 CALL이 확정되었습니다 No={0},Pos={1}", kitNo, kitPos));
|
||||
// }
|
||||
// else RaiseMessage(MessageType.Normal, string.Format("이미 CALL이 확정되었습니다 No={0},Pos={1}", kitNo, kitPos));
|
||||
// }
|
||||
// SendToKit(kitNo, '1', (PUB.IsCanCALL() ? '1' : '0')); //콜확정을 클라이언트에 알림
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //다른대상이 이미 선택된 상태이므로 CANCEL 한다.
|
||||
// SendToKit(kitNo, '0', (PUB.IsCanCALL() ? '1' : '0'));
|
||||
// RaiseMessage(MessageType.Normal, string.Format("다른 CALL이 확정된 상태입니다. 요청KIT={2},확정KIT={0},위치={1}", PUB.Result.TargetPos - 2, PUB.Result.TargetPos, kitNo));
|
||||
// }
|
||||
// }
|
||||
// else if (kitVal == '0') //캔슬버튼을 눌렀다
|
||||
// {
|
||||
// //목표번호가 캔슬버튼을 눌렀다
|
||||
// if (PUB.Result.TargetPos == kitPos)
|
||||
// {
|
||||
// //상차가 완료되면 TargetPos 가 변경되어 ,더이상 해당 버튼으로는 취소하지 못한다
|
||||
// PUB.AGV.data.CallNo = 0;
|
||||
// PUB.AGV.data.CallString = "--";
|
||||
|
||||
// SendToKit(kitNo, '0', (PUB.IsCanCALL() ? '1' : '0'));
|
||||
// RaiseMessage(MessageType.Normal, string.Format("콜 취소 Kit={0}", kitNo));
|
||||
// if (PUB.sm.RunStep != StateMachine.ERunStep.GOHOME)
|
||||
// {
|
||||
// PUB.Result.CommandKit = kitNo;
|
||||
// PUB.Result.TargetPos = ePosition.QC;
|
||||
// PUB.sm.ClearRunStep();
|
||||
// PUB.sm.SetNewRunStep(StateMachine.ERunStep.GOHOME);
|
||||
// PUB.sm.SetNewStep(StateMachine.eSMStep.RUN);
|
||||
// RaiseMessage(MessageType.Normal, string.Format("콜 취소로 인해 홈으로 이동합니다 Kit={0}", kitNo));
|
||||
// }
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //다른놈이 취소 버튼을 눌렀다. ㅋㅋ
|
||||
// //아무~ 의미 없다.
|
||||
// SendToKit(kitNo, '0', (PUB.IsCanCALL() ? '1' : '0'));
|
||||
// RaiseMessage(MessageType.Normal, string.Format("해당 콜취소는 유효하지 않습니다 요청KIT={0},확정KIT={1}", kitNo, PUB.Result.TargetPos - 2));
|
||||
// }
|
||||
// }
|
||||
// else if (kitVal == '2') //BACKWORK시에만 이 값이 전송되게 한다
|
||||
// {
|
||||
// //QA 이동 명령
|
||||
// //발동조건 1. QC 위치에서 GOUP(대기 혹은 상차완료)상태일때 (일반적인경우)
|
||||
// //발동조건 2. QC 위치에서 IDLE 상태일때 (GOUP상태로 하지 않고 바로 싫어버린경우)
|
||||
// //발동조건 3. 충전중일때
|
||||
|
||||
// //if (kitPos != ePosition.QC)
|
||||
// //{
|
||||
// // RaiseMessage(MessageType.Error, $"back 버튼은 QC버튼만 사용 가능 합니다");
|
||||
// // return;
|
||||
// //}
|
||||
|
||||
// //if (kitPos == ePosition.QC && PUB.Result.CurrentPos != ePosition.QC)
|
||||
// //{
|
||||
// // RaiseMessage(MessageType.Error, string.Format("QC의 QA버튼은 홈위치에 있어야 사용이 가능 합니다"));
|
||||
// // return;
|
||||
// //}
|
||||
|
||||
// ////명령송신은 QC로 고정한다
|
||||
// //PUB.Result.CommandKit = '2';
|
||||
// //PUB.Result.TargetPos = ePosition.QA;
|
||||
// //PUB.sm.ClearRunStep();
|
||||
// //PUB.sm.SetNewRunStep(StateMachine.ERunStep.GODOWN);
|
||||
// //PUB.sm.SetNewStep(StateMachine.ESMStep.RUN);
|
||||
// //RaiseMessage(MessageType.Normal, string.Format("후진하차 모드 대상위치={0}", ePosition.QA));
|
||||
// //PUB.logsys.AddI("QC의 QA리모콘 버튼 작업 입니다");
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// public void SendToKit(char kitNo, char Value, char enbcall)
|
||||
// {
|
||||
// List<byte> buffer = new List<byte>
|
||||
// {
|
||||
// 0x02,
|
||||
// (byte)kitNo,
|
||||
// (byte)Value,
|
||||
// (byte)enbcall,
|
||||
// 0x03
|
||||
// };
|
||||
// WriteData(buffer.ToArray());
|
||||
// //RaiseMessage(MessageType.Normal, $"지그비전송 {kitNo}:{Value}:{enbcall}");
|
||||
// }
|
||||
|
||||
// public string GetStatusString()
|
||||
// {
|
||||
// return DateTime.Now.ToString();
|
||||
// }
|
||||
|
||||
// public void SendStatus(String StatusString)
|
||||
// {
|
||||
|
||||
// ////IO
|
||||
|
||||
// char kitno = '0';
|
||||
// char kitval = '1';
|
||||
// if (PUB.Result.TargetPos == ePosition.F1) kitno = '1';
|
||||
// else if (PUB.Result.TargetPos == ePosition.F2) kitno = '2';
|
||||
// else if (PUB.Result.TargetPos == ePosition.F3) kitno = '3';
|
||||
// else if (PUB.Result.TargetPos == ePosition.F4) kitno = '4';
|
||||
// else if (PUB.Result.TargetPos == ePosition.QC) kitno = '9';
|
||||
// else
|
||||
// {
|
||||
// //충전기 충전하는 것으로한다
|
||||
// if (VAR.BOOL[eVarBool.FLAG_CHARGEONA] == false && VAR.BOOL[eVarBool.FLAG_CHARGEONM] == false)
|
||||
// kitval = '0';
|
||||
// }
|
||||
|
||||
// //콜가능여부도 전송한다
|
||||
// var enbcall = PUB.IsCanCALL() ? '1' : '0';
|
||||
// SendToKit(kitno, kitval, enbcall);
|
||||
|
||||
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
311
Cs_HMI/Project/Device/_DeviceManagement.cs
Normal file
311
Cs_HMI/Project/Device/_DeviceManagement.cs
Normal file
@@ -0,0 +1,311 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Media.Animation;
|
||||
using AR;
|
||||
using arCtl;
|
||||
using COMM;
|
||||
using Project.StateMachine;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
/// <summary>
|
||||
/// 장치 연결 및 상태 전송을 담당하는 별도 태스크
|
||||
/// </summary>
|
||||
public partial class fMain
|
||||
{
|
||||
// 장치 관리 태스크 관련
|
||||
private Task deviceManagementTask;
|
||||
private CancellationTokenSource deviceManagementCts;
|
||||
private volatile bool isDeviceManagementRunning = false;
|
||||
|
||||
/// <summary>
|
||||
/// 장치 관리 태스크 시작 (IDLE 상태 진입 시 호출)
|
||||
/// </summary>
|
||||
public void StartDeviceManagementTask()
|
||||
{
|
||||
if (isDeviceManagementRunning)
|
||||
{
|
||||
PUB.log.Add("DeviceManagement", "이미 실행 중입니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
isDeviceManagementRunning = true;
|
||||
deviceManagementCts = new CancellationTokenSource();
|
||||
|
||||
deviceManagementTask = Task.Factory.StartNew(
|
||||
() => DeviceManagementWorker(deviceManagementCts.Token),
|
||||
deviceManagementCts.Token,
|
||||
TaskCreationOptions.LongRunning,
|
||||
TaskScheduler.Default
|
||||
);
|
||||
|
||||
PUB.log.Add("DeviceManagement", "장치 관리 태스크 시작");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 장치 관리 태스크 종료
|
||||
/// </summary>
|
||||
public void StopDeviceManagementTask()
|
||||
{
|
||||
if (!isDeviceManagementRunning)
|
||||
return;
|
||||
|
||||
isDeviceManagementRunning = false;
|
||||
|
||||
try
|
||||
{
|
||||
deviceManagementCts?.Cancel();
|
||||
|
||||
if (deviceManagementTask != null)
|
||||
{
|
||||
if (!deviceManagementTask.Wait(3000)) // 3초 대기
|
||||
{
|
||||
PUB.log.AddE("DeviceManagement:태스크 종료 대기 시간 초과");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE($"DeviceManagement 종료 중 오류: {ex.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
deviceManagementCts?.Dispose();
|
||||
deviceManagementCts = null;
|
||||
deviceManagementTask = null;
|
||||
PUB.log.Add("DeviceManagement", "장치 관리 태스크 종료");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 장치 관리 워커 (별도 태스크에서 실행)
|
||||
/// - 장치 연결 관리 (AGV, XBee, BMS)
|
||||
/// - 자동 상태 전송 (XBee, BMS)
|
||||
/// </summary>
|
||||
private void DeviceManagementWorker(CancellationToken cancellationToken)
|
||||
{
|
||||
PUB.log.Add("DeviceManagementWorker", "시작");
|
||||
|
||||
DateTime lastXbeStatusSendTime = DateTime.Now;
|
||||
DateTime lastBmsQueryTime = DateTime.Now;
|
||||
|
||||
while (!cancellationToken.IsCancellationRequested && isDeviceManagementRunning)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 상태머신이 IDLE 이상이고 CLOSING 미만일 때만 동작
|
||||
if (PUB.sm.Step >= eSMStep.IDLE && PUB.sm.Step < eSMStep.CLOSING)
|
||||
{
|
||||
// ========== 1. 장치 연결 관리 ==========
|
||||
ManageDeviceConnections();
|
||||
|
||||
// ========== 2. XBee 상태 전송 ==========
|
||||
if (PUB.XBE != null && PUB.XBE.IsOpen)
|
||||
{
|
||||
var tsXbe = DateTime.Now - lastXbeStatusSendTime;
|
||||
if (tsXbe.TotalSeconds >= PUB.setting.interval_xbe)
|
||||
{
|
||||
lastXbeStatusSendTime = DateTime.Now;
|
||||
ThreadPool.QueueUserWorkItem(_ =>
|
||||
{
|
||||
try
|
||||
{
|
||||
PUB.XBE.SendStatus();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE($"XBee SendStatus 오류: {ex.Message}");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ========== 3. BMS 쿼리 및 배터리 경고 ==========
|
||||
if (PUB.BMS != null && PUB.BMS.IsOpen)
|
||||
{
|
||||
var tsBms = DateTime.Now - lastBmsQueryTime;
|
||||
if (tsBms.TotalSeconds >= PUB.setting.interval_bms)
|
||||
{
|
||||
lastBmsQueryTime = DateTime.Now;
|
||||
ThreadPool.QueueUserWorkItem(_ =>
|
||||
{
|
||||
try
|
||||
{
|
||||
PUB.BMS.SendQuery();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE($"BMS SendQuery 오류: {ex.Message}");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 배터리 경고음
|
||||
try
|
||||
{
|
||||
Update_BatteryWarnSpeak();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE($"BatteryWarnSpeak 오류: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE($"DeviceManagementWorker 오류: {ex.Message}");
|
||||
}
|
||||
|
||||
// 1초 대기 (또는 취소 요청 시 즉시 종료)
|
||||
try
|
||||
{
|
||||
Task.Delay(1000, cancellationToken).Wait();
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
PUB.log.Add("DeviceManagementWorker", "종료");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 장치 연결 상태 관리
|
||||
/// </summary>
|
||||
private void ManageDeviceConnections()
|
||||
{
|
||||
try
|
||||
{
|
||||
// AGV 연결
|
||||
ConnectSerialPort(PUB.AGV, PUB.setting.Port_AGV, PUB.setting.Baud_AGV,
|
||||
eVarTime.LastConn_AGV, eVarTime.LastConnTry_AGV, eVarTime.LastRecv_AGV);
|
||||
|
||||
// XBee 연결
|
||||
ConnectSerialPort(PUB.XBE, PUB.setting.Port_XBE, PUB.setting.Baud_XBE,
|
||||
eVarTime.LastConn_XBE, eVarTime.LastConnTry_XBE, eVarTime.LastRecv_XBE);
|
||||
|
||||
// BMS 연결
|
||||
if (PUB.BMS.IsOpen == false)
|
||||
{
|
||||
var ts = VAR.TIME.RUN(eVarTime.LastConn_BAT);
|
||||
if (ts.TotalSeconds > 3)
|
||||
{
|
||||
PUB.log.Add($"BMS 연결 시도: {PUB.setting.Port_BAT}");
|
||||
PUB.BMS.PortName = PUB.setting.Port_BAT;
|
||||
if (PUB.BMS.Open())
|
||||
PUB.log.AddI($"BMS 연결 완료({PUB.setting.Port_BAT})");
|
||||
|
||||
VAR.TIME.Update(eVarTime.LastConn_BAT);
|
||||
VAR.TIME.Update(eVarTime.LastConnTry_BAT);
|
||||
}
|
||||
}
|
||||
else if (PUB.BMS.IsValid == false)
|
||||
{
|
||||
var ts = VAR.TIME.RUN(eVarTime.LastConnTry_BAT);
|
||||
if (ts.TotalSeconds > (PUB.setting.interval_bms * 2.5))
|
||||
{
|
||||
PUB.log.Add("BMS 자동 연결 해제 (응답 없음)");
|
||||
PUB.BMS.Close();
|
||||
VAR.TIME.Set(eVarTime.LastConn_BAT, DateTime.Now.AddSeconds(5));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE($"ManageDeviceConnections 오류: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 시리얼 포트 연결 (arDev.arRS232)
|
||||
/// </summary>
|
||||
void ConnectSerialPort(arDev.arRS232 dev, string port, int baud, eVarTime conn, eVarTime conntry, eVarTime recvtime)
|
||||
{
|
||||
if (dev.IsOpen == false && port.isEmpty() == false)
|
||||
{
|
||||
var tsPLC = VAR.TIME.RUN(conntry);
|
||||
if (tsPLC.TotalSeconds > 5)
|
||||
{
|
||||
VAR.TIME.Update(conntry);
|
||||
try
|
||||
{
|
||||
VAR.TIME.Update(recvtime);
|
||||
dev.PortName = port;
|
||||
dev.BaudRate = baud;
|
||||
if (dev.Open())
|
||||
{
|
||||
PUB.log.Add(port, $"[AGV:{port}:{baud}] 연결 완료");
|
||||
}
|
||||
else
|
||||
{
|
||||
var errmessage = dev.errorMessage;
|
||||
PUB.log.AddE($"[AGV:{port}:{baud}] {errmessage}");
|
||||
}
|
||||
VAR.TIME.Update(conn);
|
||||
VAR.TIME.Update(conntry);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (dev.PortName.Equals(port) == false)
|
||||
{
|
||||
PUB.log.Add(port, $"포트 변경({dev.PortName}->{port})으로 연결 종료");
|
||||
dev.Close();
|
||||
VAR.TIME.Update(conntry);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 시리얼 포트 연결 (Device.Xbee)
|
||||
/// </summary>
|
||||
void ConnectSerialPort(Device.Xbee dev, string port, int baud, eVarTime conn, eVarTime conntry, eVarTime recvtime)
|
||||
{
|
||||
if (dev.IsOpen == false && port.isEmpty() == false)
|
||||
{
|
||||
var tsPLC = VAR.TIME.RUN(conntry);
|
||||
if (tsPLC.TotalSeconds > 5)
|
||||
{
|
||||
VAR.TIME.Update(conntry);
|
||||
try
|
||||
{
|
||||
VAR.TIME.Update(recvtime);
|
||||
dev.PortName = port;
|
||||
dev.BaudRate = baud;
|
||||
if (dev.Open())
|
||||
{
|
||||
PUB.log.Add(port, $"[XBEE:{port}:{baud}] 연결 완료");
|
||||
}
|
||||
else
|
||||
{
|
||||
var errmessage = dev.errorMessage;
|
||||
PUB.log.AddE($"[XBEE:{port}:{baud}] {errmessage}");
|
||||
}
|
||||
VAR.TIME.Update(conn);
|
||||
VAR.TIME.Update(conntry);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (dev.PortName.Equals(port) == false)
|
||||
{
|
||||
PUB.log.Add(port, $"포트 변경({dev.PortName}->{port})으로 연결 종료");
|
||||
dev.Close();
|
||||
VAR.TIME[(int)conntry] = DateTime.Now;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
24
Cs_HMI/Project/Project.sln
Normal file
24
Cs_HMI/Project/Project.sln
Normal file
@@ -0,0 +1,24 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.5.2.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGV4", "AGV4.csproj", "{6D0CF7CE-1916-3231-E152-64E6C2B57D2B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{6D0CF7CE-1916-3231-E152-64E6C2B57D2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6D0CF7CE-1916-3231-E152-64E6C2B57D2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6D0CF7CE-1916-3231-E152-64E6C2B57D2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6D0CF7CE-1916-3231-E152-64E6C2B57D2B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {9EAFEBD8-1AC9-4339-BD45-B1F43F120F34}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
|
||||
// 지정되도록 할 수 있습니다.
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("25.11.14.1530")]
|
||||
[assembly: AssemblyFileVersion("25.11.14.1530")]
|
||||
[assembly: AssemblyVersion("25.12.04.0000")]
|
||||
[assembly: AssemblyFileVersion("25.12.04.0000")]
|
||||
|
||||
@@ -17,6 +17,9 @@ namespace Project
|
||||
PUB.bShutdown = true;
|
||||
//if (PUB.PLC != null) PUB.PLC.Dispose();
|
||||
|
||||
// 장치 관리 태스크 종료
|
||||
StopDeviceManagementTask();
|
||||
|
||||
PUB.AddEEDB("프로그램 종료");
|
||||
PUB.log.Add("Program Close");
|
||||
PUB.log.Flush();
|
||||
|
||||
@@ -153,6 +153,9 @@ namespace Project
|
||||
PUB.Result.SMSG_ProgressEnable = false;
|
||||
UpdateStatusMessage("준비 완료", Color.Red, Color.Gold);
|
||||
if (startuptime.Year == 1982) startuptime = DateTime.Now;
|
||||
|
||||
// 장치 관리 태스크 시작 (IDLE 진입 시 한 번만)
|
||||
StartDeviceManagementTask();
|
||||
}
|
||||
|
||||
//자동소거기능
|
||||
|
||||
@@ -13,234 +13,25 @@ using Project.StateMachine;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// SPS (Scan Per Second) 이벤트 핸들러
|
||||
/// - 장치 연결 및 상태 전송 기능은 _DeviceManagement.cs로 분리됨
|
||||
/// </summary>
|
||||
public partial class fMain
|
||||
{
|
||||
DateTime chargesynctime = DateTime.Now;
|
||||
DateTime agvsendstarttime = DateTime.Now;
|
||||
|
||||
// 장치 연결 쓰레드 관련
|
||||
private Thread deviceConnectionThread;
|
||||
private volatile bool isDeviceConnectionRunning = false;
|
||||
|
||||
void ConnectSerialPort(arDev.arRS232 dev, string port, int baud, eVarTime conn, eVarTime conntry, eVarTime recvtime)
|
||||
{
|
||||
if (dev.IsOpen == false && port.isEmpty() == false)
|
||||
{
|
||||
var tsPLC = VAR.TIME.RUN(conntry);
|
||||
if (tsPLC.TotalSeconds > 5)
|
||||
{
|
||||
VAR.TIME.Update(conntry);
|
||||
try
|
||||
{
|
||||
VAR.TIME.Update(recvtime); //this.LastReceiveTime = DateTime.Now;
|
||||
dev.PortName = port;
|
||||
dev.BaudRate = baud;
|
||||
if (dev.Open())
|
||||
{
|
||||
PUB.log.Add(port, $"[AGV:{port}:{baud}]연결완료");
|
||||
}
|
||||
else
|
||||
{
|
||||
var errmessage = dev.errorMessage;
|
||||
PUB.log.AddE($"[AGV:{port}:{baud}] {errmessage}");
|
||||
}
|
||||
VAR.TIME.Update(conn);
|
||||
VAR.TIME.Update(conntry);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (dev.PortName.Equals(port) == false)
|
||||
{
|
||||
PUB.log.Add(port, $"포트변경({dev.PortName}->{port})으로 연결 종료");
|
||||
dev.Close();
|
||||
VAR.TIME.Update(conntry);
|
||||
}
|
||||
}
|
||||
void ConnectSerialPort(Device.Xbee dev, string port, int baud, eVarTime conn, eVarTime conntry, eVarTime recvtime)
|
||||
{
|
||||
if (dev.IsOpen == false && port.isEmpty() == false)
|
||||
{
|
||||
var tsPLC = VAR.TIME.RUN(conntry);
|
||||
if (tsPLC.TotalSeconds > 5)
|
||||
{
|
||||
VAR.TIME.Update(conntry);
|
||||
try
|
||||
{
|
||||
VAR.TIME.Update(recvtime); //this.LastReceiveTime = DateTime.Now;
|
||||
dev.PortName = port;
|
||||
dev.BaudRate = baud;
|
||||
if (dev.Open())
|
||||
{
|
||||
PUB.log.Add(port, $"[XBEE:{port}:{baud}]연결완료");
|
||||
}
|
||||
else
|
||||
{
|
||||
var errmessage = dev.errorMessage;
|
||||
PUB.log.AddE($"[XBEE:{port}:{baud}] {errmessage}");
|
||||
}
|
||||
VAR.TIME.Update(conn);
|
||||
VAR.TIME.Update(conntry);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (dev.PortName.Equals(port) == false)
|
||||
{
|
||||
PUB.log.Add(port, $"포트변경({dev.PortName}->{port})으로 연결 종료");
|
||||
dev.Close();
|
||||
VAR.TIME[(int)conntry] = DateTime.Now; ;
|
||||
}
|
||||
}
|
||||
|
||||
// 장치 연결 쓰레드 시작
|
||||
private void StartDeviceConnectionThread()
|
||||
{
|
||||
if (deviceConnectionThread == null || !deviceConnectionThread.IsAlive)
|
||||
{
|
||||
isDeviceConnectionRunning = true;
|
||||
deviceConnectionThread = new Thread(DeviceConnectionWorker);
|
||||
deviceConnectionThread.IsBackground = true;
|
||||
deviceConnectionThread.Name = "DeviceConnectionThread";
|
||||
deviceConnectionThread.Start();
|
||||
PUB.log.Add("DeviceConnection", "장치 연결 쓰레드 시작");
|
||||
}
|
||||
}
|
||||
|
||||
// 장치 연결 쓰레드 종료
|
||||
private void StopDeviceConnectionThread()
|
||||
{
|
||||
if (deviceConnectionThread != null && deviceConnectionThread.IsAlive)
|
||||
{
|
||||
isDeviceConnectionRunning = false;
|
||||
if (!deviceConnectionThread.Join(2000)) // 2초 대기
|
||||
{
|
||||
try
|
||||
{
|
||||
deviceConnectionThread.Abort();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
PUB.log.Add("DeviceConnection", "장치 연결 쓰레드 종료");
|
||||
}
|
||||
}
|
||||
|
||||
// 장치 연결 처리 워커 (별도 쓰레드에서 실행)
|
||||
private void DeviceConnectionWorker()
|
||||
{
|
||||
PUB.log.Add($"Start DeviceConnectionWorker");
|
||||
while (isDeviceConnectionRunning)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (PUB.sm.Step >= eSMStep.IDLE && PUB.sm.Step < eSMStep.CLOSING)
|
||||
{
|
||||
//agv connect
|
||||
ConnectSerialPort(PUB.AGV, PUB.setting.Port_AGV, PUB.setting.Baud_AGV,
|
||||
eVarTime.LastConn_AGV, eVarTime.LastConnTry_AGV, eVarTime.LastRecv_AGV);
|
||||
|
||||
//xbee connect
|
||||
ConnectSerialPort(PUB.XBE, PUB.setting.Port_XBE, PUB.setting.Baud_XBE,
|
||||
eVarTime.LastConn_XBE, eVarTime.LastConnTry_XBE, eVarTime.LastRecv_XBE);
|
||||
|
||||
//bms connect
|
||||
if (PUB.BMS.IsOpen == false)
|
||||
{
|
||||
var ts = VAR.TIME.RUN(eVarTime.LastConn_BAT);
|
||||
if (ts.TotalSeconds > 3)
|
||||
{
|
||||
PUB.log.Add($"bms connect to {PUB.setting.Port_BAT}");
|
||||
PUB.BMS.PortName = PUB.setting.Port_BAT;
|
||||
if (PUB.BMS.Open())
|
||||
PUB.log.AddI($"BMS Connected({PUB.setting.Port_BAT})");
|
||||
|
||||
VAR.TIME.Update(eVarTime.LastConn_BAT);
|
||||
VAR.TIME.Update(eVarTime.LastConnTry_BAT);
|
||||
}
|
||||
}
|
||||
else if (PUB.BMS.IsValid == false)
|
||||
{
|
||||
var ts = VAR.TIME.RUN(eVarTime.LastConnTry_BAT);
|
||||
if (ts.TotalSeconds > (PUB.setting.interval_bms * 2.5))
|
||||
{
|
||||
Console.WriteLine("bms auto disconnect");
|
||||
PUB.BMS.Close();
|
||||
VAR.TIME.Set(eVarTime.LastConn_BAT, DateTime.Now.AddSeconds(5));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PUB.log.AddE($"DeviceConnection: {ex.Message}");
|
||||
}
|
||||
|
||||
// 1초 대기 후 다시 체크
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
void sm_SPS(object sender, EventArgs e)
|
||||
{
|
||||
if (PUB.sm.Step < eSMStep.IDLE || PUB.sm.Step >= eSMStep.CLOSING) return;
|
||||
//return;
|
||||
|
||||
// SPS는 이제 간단한 작업만 수행
|
||||
// 장치 연결 및 상태 전송은 별도 태스크(_DeviceManagement.cs)에서 처리
|
||||
try
|
||||
{
|
||||
// 장치 연결 쓰레드가 실행 중이 아니면 시작 (한 번만)
|
||||
if (!isDeviceConnectionRunning)
|
||||
{
|
||||
StartDeviceConnectionThread();
|
||||
}
|
||||
|
||||
//지그비상태전송 (비동기로 실행)
|
||||
if (PUB.XBE != null && PUB.XBE.IsOpen)
|
||||
{
|
||||
//일정간격으로 상태를 전송한다
|
||||
if (PUB.XBE.LastStatusSendTime.Year == 1982) PUB.XBE.LastStatusSendTime = DateTime.Now.AddSeconds(1);
|
||||
var ts = DateTime.Now - PUB.XBE.LastStatusSendTime;
|
||||
if (ts.TotalSeconds >= PUB.setting.interval_xbe)
|
||||
{
|
||||
|
||||
System.Threading.ThreadPool.QueueUserWorkItem(_ =>
|
||||
{
|
||||
try { PUB.XBE.SendStatus(); }
|
||||
catch { /* 무시 */ }
|
||||
finally { PUB.XBE.LastStatusSendTime = DateTime.Now; }
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//배터리쿼리 (비동기로 실행)
|
||||
if (PUB.BMS != null && PUB.BMS.IsOpen)
|
||||
{
|
||||
if (PUB.BMS.lastSendTime.Year == 1982) PUB.BMS.lastSendTime = DateTime.Now.AddSeconds(1);
|
||||
var ts = DateTime.Now - PUB.BMS.lastSendTime;
|
||||
if (ts.TotalSeconds >= PUB.setting.interval_bms)
|
||||
{
|
||||
//PUB.BMS.lastSendTime = DateTime.Now;
|
||||
//System.Threading.ThreadPool.QueueUserWorkItem(_ =>
|
||||
//{
|
||||
// try { PUB.BMS.SendQuery(); }
|
||||
// catch { /* 무시 */ }
|
||||
// finally { PUB.BMS.lastSendTime = DateTime.Now; }
|
||||
//});
|
||||
}
|
||||
|
||||
// Update_BatteryWarnSpeak도 비동기로
|
||||
//System.Threading.ThreadPool.QueueUserWorkItem(_ =>
|
||||
//{
|
||||
try { Update_BatteryWarnSpeak(); }
|
||||
catch { /* 무시 */ }
|
||||
//});
|
||||
}
|
||||
// 여기에 SPS에서 처리해야 할 간단한 작업만 남김
|
||||
// 현재는 비어있음 - 필요한 경우 추가
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
177
Cs_HMI/Project/ViewForm/fAgv.Designer.cs
generated
177
Cs_HMI/Project/ViewForm/fAgv.Designer.cs
generated
@@ -46,8 +46,18 @@
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button8 = new System.Windows.Forms.Button();
|
||||
this.button4 = new System.Windows.Forms.Button();
|
||||
this.button9 = new System.Windows.Forms.Button();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.button16 = new System.Windows.Forms.Button();
|
||||
this.button10 = new System.Windows.Forms.Button();
|
||||
this.button11 = new System.Windows.Forms.Button();
|
||||
this.button12 = new System.Windows.Forms.Button();
|
||||
this.button13 = new System.Windows.Forms.Button();
|
||||
this.button14 = new System.Windows.Forms.Button();
|
||||
this.button15 = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
@@ -69,7 +79,7 @@
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(1050, 510);
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(1050, 461);
|
||||
this.tableLayoutPanel1.TabIndex = 6;
|
||||
//
|
||||
// richTextBox1
|
||||
@@ -78,7 +88,7 @@
|
||||
this.richTextBox1.Location = new System.Drawing.Point(3, 3);
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.richTextBox1, 2);
|
||||
this.richTextBox1.Size = new System.Drawing.Size(256, 454);
|
||||
this.richTextBox1.Size = new System.Drawing.Size(256, 404);
|
||||
this.richTextBox1.TabIndex = 1;
|
||||
this.richTextBox1.Text = "";
|
||||
//
|
||||
@@ -88,7 +98,7 @@
|
||||
this.richTextBox2.Location = new System.Drawing.Point(265, 3);
|
||||
this.richTextBox2.Name = "richTextBox2";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.richTextBox2, 2);
|
||||
this.richTextBox2.Size = new System.Drawing.Size(256, 454);
|
||||
this.richTextBox2.Size = new System.Drawing.Size(256, 404);
|
||||
this.richTextBox2.TabIndex = 1;
|
||||
this.richTextBox2.Text = "";
|
||||
//
|
||||
@@ -98,7 +108,7 @@
|
||||
this.richTextBox3.Location = new System.Drawing.Point(527, 3);
|
||||
this.richTextBox3.Name = "richTextBox3";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.richTextBox3, 2);
|
||||
this.richTextBox3.Size = new System.Drawing.Size(256, 454);
|
||||
this.richTextBox3.Size = new System.Drawing.Size(256, 404);
|
||||
this.richTextBox3.TabIndex = 1;
|
||||
this.richTextBox3.Text = "";
|
||||
//
|
||||
@@ -108,7 +118,7 @@
|
||||
this.richTextBox4.Location = new System.Drawing.Point(789, 3);
|
||||
this.richTextBox4.Name = "richTextBox4";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.richTextBox4, 2);
|
||||
this.richTextBox4.Size = new System.Drawing.Size(258, 454);
|
||||
this.richTextBox4.Size = new System.Drawing.Size(258, 404);
|
||||
this.richTextBox4.TabIndex = 1;
|
||||
this.richTextBox4.Text = "";
|
||||
//
|
||||
@@ -117,9 +127,9 @@
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.label1, 2);
|
||||
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.Location = new System.Drawing.Point(3, 460);
|
||||
this.label1.Location = new System.Drawing.Point(3, 410);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(518, 50);
|
||||
this.label1.Size = new System.Drawing.Size(518, 51);
|
||||
this.label1.TabIndex = 2;
|
||||
this.label1.Text = "label1";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
@@ -141,9 +151,9 @@
|
||||
this.panel1.Controls.Add(this.button8);
|
||||
this.panel1.Controls.Add(this.button4);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.panel1.Location = new System.Drawing.Point(3, 513);
|
||||
this.panel1.Location = new System.Drawing.Point(3, 522);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(1050, 67);
|
||||
this.panel1.Size = new System.Drawing.Size(1050, 58);
|
||||
this.panel1.TabIndex = 7;
|
||||
//
|
||||
// lbIP
|
||||
@@ -151,9 +161,9 @@
|
||||
this.lbIP.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lbIP.Font = new System.Drawing.Font("Tahoma", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
|
||||
this.lbIP.ForeColor = System.Drawing.Color.White;
|
||||
this.lbIP.Location = new System.Drawing.Point(300, 0);
|
||||
this.lbIP.Location = new System.Drawing.Point(252, 0);
|
||||
this.lbIP.Name = "lbIP";
|
||||
this.lbIP.Size = new System.Drawing.Size(250, 67);
|
||||
this.lbIP.Size = new System.Drawing.Size(398, 58);
|
||||
this.lbIP.TabIndex = 8;
|
||||
this.lbIP.Text = "000.000.000.000";
|
||||
this.lbIP.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
@@ -161,9 +171,9 @@
|
||||
// button7
|
||||
//
|
||||
this.button7.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button7.Location = new System.Drawing.Point(550, 0);
|
||||
this.button7.Location = new System.Drawing.Point(650, 0);
|
||||
this.button7.Name = "button7";
|
||||
this.button7.Size = new System.Drawing.Size(100, 67);
|
||||
this.button7.Size = new System.Drawing.Size(80, 58);
|
||||
this.button7.TabIndex = 6;
|
||||
this.button7.Text = "Go - Front\r\nManual";
|
||||
this.button7.UseVisualStyleBackColor = true;
|
||||
@@ -172,9 +182,9 @@
|
||||
// button6
|
||||
//
|
||||
this.button6.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button6.Location = new System.Drawing.Point(650, 0);
|
||||
this.button6.Location = new System.Drawing.Point(730, 0);
|
||||
this.button6.Name = "button6";
|
||||
this.button6.Size = new System.Drawing.Size(100, 67);
|
||||
this.button6.Size = new System.Drawing.Size(80, 58);
|
||||
this.button6.TabIndex = 5;
|
||||
this.button6.Text = "Go - Back\r\nManual";
|
||||
this.button6.UseVisualStyleBackColor = true;
|
||||
@@ -183,9 +193,9 @@
|
||||
// button5
|
||||
//
|
||||
this.button5.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button5.Location = new System.Drawing.Point(750, 0);
|
||||
this.button5.Location = new System.Drawing.Point(810, 0);
|
||||
this.button5.Name = "button5";
|
||||
this.button5.Size = new System.Drawing.Size(100, 67);
|
||||
this.button5.Size = new System.Drawing.Size(80, 58);
|
||||
this.button5.TabIndex = 4;
|
||||
this.button5.Text = "Stop(Mark)";
|
||||
this.button5.UseVisualStyleBackColor = true;
|
||||
@@ -194,9 +204,9 @@
|
||||
// button3
|
||||
//
|
||||
this.button3.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button3.Location = new System.Drawing.Point(200, 0);
|
||||
this.button3.Location = new System.Drawing.Point(168, 0);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(100, 67);
|
||||
this.button3.Size = new System.Drawing.Size(84, 58);
|
||||
this.button3.TabIndex = 2;
|
||||
this.button3.Text = "Charge Off";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
@@ -205,9 +215,9 @@
|
||||
// button2
|
||||
//
|
||||
this.button2.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button2.Location = new System.Drawing.Point(100, 0);
|
||||
this.button2.Location = new System.Drawing.Point(84, 0);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(100, 67);
|
||||
this.button2.Size = new System.Drawing.Size(84, 58);
|
||||
this.button2.TabIndex = 1;
|
||||
this.button2.Text = "Charge On";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
@@ -218,7 +228,7 @@
|
||||
this.button1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button1.Location = new System.Drawing.Point(0, 0);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(100, 67);
|
||||
this.button1.Size = new System.Drawing.Size(84, 58);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.Text = "Reset";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
@@ -227,9 +237,9 @@
|
||||
// button8
|
||||
//
|
||||
this.button8.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button8.Location = new System.Drawing.Point(850, 0);
|
||||
this.button8.Location = new System.Drawing.Point(890, 0);
|
||||
this.button8.Name = "button8";
|
||||
this.button8.Size = new System.Drawing.Size(100, 67);
|
||||
this.button8.Size = new System.Drawing.Size(80, 58);
|
||||
this.button8.TabIndex = 7;
|
||||
this.button8.Text = "Run";
|
||||
this.button8.UseVisualStyleBackColor = true;
|
||||
@@ -238,20 +248,125 @@
|
||||
// button4
|
||||
//
|
||||
this.button4.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button4.Location = new System.Drawing.Point(950, 0);
|
||||
this.button4.Location = new System.Drawing.Point(970, 0);
|
||||
this.button4.Name = "button4";
|
||||
this.button4.Size = new System.Drawing.Size(100, 67);
|
||||
this.button4.Size = new System.Drawing.Size(80, 58);
|
||||
this.button4.TabIndex = 3;
|
||||
this.button4.Text = "Stop";
|
||||
this.button4.UseVisualStyleBackColor = true;
|
||||
this.button4.Click += new System.EventHandler(this.button4_Click);
|
||||
//
|
||||
// button9
|
||||
//
|
||||
this.button9.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button9.Location = new System.Drawing.Point(324, 0);
|
||||
this.button9.Name = "button9";
|
||||
this.button9.Size = new System.Drawing.Size(115, 58);
|
||||
this.button9.TabIndex = 9;
|
||||
this.button9.Text = "GDS Center Scope";
|
||||
this.button9.UseVisualStyleBackColor = true;
|
||||
this.button9.Click += new System.EventHandler(this.button9_Click);
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Controls.Add(this.button15);
|
||||
this.panel2.Controls.Add(this.button14);
|
||||
this.panel2.Controls.Add(this.button11);
|
||||
this.panel2.Controls.Add(this.button12);
|
||||
this.panel2.Controls.Add(this.button13);
|
||||
this.panel2.Controls.Add(this.button9);
|
||||
this.panel2.Controls.Add(this.button10);
|
||||
this.panel2.Controls.Add(this.button16);
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.panel2.Location = new System.Drawing.Point(3, 464);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(1050, 58);
|
||||
this.panel2.TabIndex = 8;
|
||||
//
|
||||
// button16
|
||||
//
|
||||
this.button16.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button16.Location = new System.Drawing.Point(0, 0);
|
||||
this.button16.Name = "button16";
|
||||
this.button16.Size = new System.Drawing.Size(162, 58);
|
||||
this.button16.TabIndex = 0;
|
||||
this.button16.Text = "백턴유지시간";
|
||||
this.button16.UseVisualStyleBackColor = true;
|
||||
this.button16.Click += new System.EventHandler(this.button16_Click);
|
||||
//
|
||||
// button10
|
||||
//
|
||||
this.button10.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button10.Location = new System.Drawing.Point(162, 0);
|
||||
this.button10.Name = "button10";
|
||||
this.button10.Size = new System.Drawing.Size(162, 58);
|
||||
this.button10.TabIndex = 1;
|
||||
this.button10.Text = "GateOut Off Time";
|
||||
this.button10.UseVisualStyleBackColor = true;
|
||||
this.button10.Click += new System.EventHandler(this.button10_Click);
|
||||
//
|
||||
// button11
|
||||
//
|
||||
this.button11.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button11.Location = new System.Drawing.Point(810, 0);
|
||||
this.button11.Name = "button11";
|
||||
this.button11.Size = new System.Drawing.Size(80, 58);
|
||||
this.button11.TabIndex = 11;
|
||||
this.button11.Text = "Up";
|
||||
this.button11.UseVisualStyleBackColor = true;
|
||||
this.button11.Click += new System.EventHandler(this.button11_Click);
|
||||
//
|
||||
// button12
|
||||
//
|
||||
this.button12.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button12.Location = new System.Drawing.Point(890, 0);
|
||||
this.button12.Name = "button12";
|
||||
this.button12.Size = new System.Drawing.Size(80, 58);
|
||||
this.button12.TabIndex = 12;
|
||||
this.button12.Text = "Stop";
|
||||
this.button12.UseVisualStyleBackColor = true;
|
||||
this.button12.Click += new System.EventHandler(this.button12_Click);
|
||||
//
|
||||
// button13
|
||||
//
|
||||
this.button13.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.button13.Location = new System.Drawing.Point(970, 0);
|
||||
this.button13.Name = "button13";
|
||||
this.button13.Size = new System.Drawing.Size(80, 58);
|
||||
this.button13.TabIndex = 10;
|
||||
this.button13.Text = "Down";
|
||||
this.button13.UseVisualStyleBackColor = true;
|
||||
this.button13.Click += new System.EventHandler(this.button13_Click);
|
||||
//
|
||||
// button14
|
||||
//
|
||||
this.button14.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button14.Location = new System.Drawing.Point(439, 0);
|
||||
this.button14.Name = "button14";
|
||||
this.button14.Size = new System.Drawing.Size(84, 58);
|
||||
this.button14.TabIndex = 13;
|
||||
this.button14.Text = "Mag On";
|
||||
this.button14.UseVisualStyleBackColor = true;
|
||||
this.button14.Click += new System.EventHandler(this.button14_Click);
|
||||
//
|
||||
// button15
|
||||
//
|
||||
this.button15.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.button15.Location = new System.Drawing.Point(523, 0);
|
||||
this.button15.Name = "button15";
|
||||
this.button15.Size = new System.Drawing.Size(84, 58);
|
||||
this.button15.TabIndex = 14;
|
||||
this.button15.Text = "Mag Off";
|
||||
this.button15.UseVisualStyleBackColor = true;
|
||||
this.button15.Click += new System.EventHandler(this.button15_Click);
|
||||
//
|
||||
// fAgv
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
|
||||
this.ClientSize = new System.Drawing.Size(1056, 583);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "fAgv";
|
||||
@@ -261,6 +376,7 @@
|
||||
this.VisibleChanged += new System.EventHandler(this.fAgv_VisibleChanged);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -284,5 +400,14 @@
|
||||
private System.Windows.Forms.Button button8;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label lbIP;
|
||||
private System.Windows.Forms.Button button9;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Button button16;
|
||||
private System.Windows.Forms.Button button10;
|
||||
private System.Windows.Forms.Button button15;
|
||||
private System.Windows.Forms.Button button14;
|
||||
private System.Windows.Forms.Button button11;
|
||||
private System.Windows.Forms.Button button12;
|
||||
private System.Windows.Forms.Button button13;
|
||||
}
|
||||
}
|
||||
@@ -135,5 +135,57 @@ namespace Project.ViewForm
|
||||
{
|
||||
PUB.AGV.AGVMoveRun();
|
||||
}
|
||||
|
||||
private void button9_Click(object sender, EventArgs e)
|
||||
{
|
||||
PUB.AGV.TurnGDSCenterScope();
|
||||
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
|
||||
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
|
||||
}
|
||||
|
||||
private void button16_Click(object sender, EventArgs e)
|
||||
{
|
||||
var inputbox = AR.UTIL.InputBox("input value","100");
|
||||
if (inputbox.Item1 == false) return;
|
||||
if (int.TryParse(inputbox.Item2, out int value) == false) return;
|
||||
PUB.AGV.SetBackturnTime(value);
|
||||
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
|
||||
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
|
||||
}
|
||||
|
||||
private void button10_Click(object sender, EventArgs e)
|
||||
{
|
||||
var inputbox = AR.UTIL.InputBox("input value","50");
|
||||
if (inputbox.Item1 == false) return;
|
||||
if (int.TryParse(inputbox.Item2, out int value) == false) return;
|
||||
PUB.AGV.SetGateOutOffTime(value);
|
||||
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
|
||||
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
|
||||
}
|
||||
|
||||
private void button14_Click(object sender, EventArgs e)
|
||||
{
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
|
||||
}
|
||||
|
||||
private void button15_Click(object sender, EventArgs e)
|
||||
{
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
|
||||
}
|
||||
|
||||
private void button11_Click(object sender, EventArgs e)
|
||||
{
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
|
||||
}
|
||||
|
||||
private void button13_Click(object sender, EventArgs e)
|
||||
{
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
|
||||
}
|
||||
|
||||
private void button12_Click(object sender, EventArgs e)
|
||||
{
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.STP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
144
Cs_HMI/Project/ViewForm/fIO.Designer.cs
generated
144
Cs_HMI/Project/ViewForm/fIO.Designer.cs
generated
@@ -29,30 +29,21 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
arFrame.Control.ColorListItem colorListItem25 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem26 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem27 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem28 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem29 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem30 = new arFrame.Control.ColorListItem();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fIO));
|
||||
arFrame.Control.ColorListItem colorListItem1 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem2 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem3 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem4 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem5 = new arFrame.Control.ColorListItem();
|
||||
arFrame.Control.ColorListItem colorListItem6 = new arFrame.Control.ColorListItem();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.HWState = new arFrame.Control.GridView();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.panel3 = new System.Windows.Forms.Panel();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.button4 = new System.Windows.Forms.Button();
|
||||
this.button5 = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel3.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
@@ -76,31 +67,31 @@
|
||||
//
|
||||
this.HWState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
|
||||
this.HWState.BorderSize = 0;
|
||||
colorListItem25.BackColor1 = System.Drawing.Color.Gray;
|
||||
colorListItem25.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))));
|
||||
colorListItem25.Remark = "타이틀바(상)";
|
||||
colorListItem26.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem26.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
colorListItem26.Remark = "상태표시(하)";
|
||||
colorListItem27.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem27.BackColor2 = System.Drawing.Color.Lime;
|
||||
colorListItem27.Remark = "정상";
|
||||
colorListItem28.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem28.BackColor2 = System.Drawing.Color.Red;
|
||||
colorListItem28.Remark = "오류";
|
||||
colorListItem29.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem29.BackColor2 = System.Drawing.Color.Yellow;
|
||||
colorListItem29.Remark = "오류(깜박)";
|
||||
colorListItem30.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem30.BackColor2 = System.Drawing.Color.DarkViolet;
|
||||
colorListItem30.Remark = "오류(유효)";
|
||||
colorListItem1.BackColor1 = System.Drawing.Color.Gray;
|
||||
colorListItem1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))));
|
||||
colorListItem1.Remark = "타이틀바(상)";
|
||||
colorListItem2.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
colorListItem2.Remark = "상태표시(하)";
|
||||
colorListItem3.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem3.BackColor2 = System.Drawing.Color.Lime;
|
||||
colorListItem3.Remark = "정상";
|
||||
colorListItem4.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem4.BackColor2 = System.Drawing.Color.Red;
|
||||
colorListItem4.Remark = "오류";
|
||||
colorListItem5.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem5.BackColor2 = System.Drawing.Color.Yellow;
|
||||
colorListItem5.Remark = "오류(깜박)";
|
||||
colorListItem6.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
colorListItem6.BackColor2 = System.Drawing.Color.DarkViolet;
|
||||
colorListItem6.Remark = "오류(유효)";
|
||||
this.HWState.ColorList = new arFrame.Control.ColorListItem[] {
|
||||
colorListItem25,
|
||||
colorListItem26,
|
||||
colorListItem27,
|
||||
colorListItem28,
|
||||
colorListItem29,
|
||||
colorListItem30};
|
||||
colorListItem1,
|
||||
colorListItem2,
|
||||
colorListItem3,
|
||||
colorListItem4,
|
||||
colorListItem5,
|
||||
colorListItem6};
|
||||
this.HWState.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.HWState.Font = new System.Drawing.Font("Consolas", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.HWState.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
@@ -179,84 +170,17 @@
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.Controls.Add(this.button5);
|
||||
this.panel3.Controls.Add(this.button4);
|
||||
this.panel3.Controls.Add(this.panel2);
|
||||
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel3.Location = new System.Drawing.Point(3, 23);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Size = new System.Drawing.Size(1050, 499);
|
||||
this.panel3.TabIndex = 10;
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
|
||||
this.panel2.Controls.Add(this.button2);
|
||||
this.panel2.Controls.Add(this.button3);
|
||||
this.panel2.Controls.Add(this.button1);
|
||||
this.panel2.Location = new System.Drawing.Point(925, 15);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(99, 315);
|
||||
this.panel2.TabIndex = 6;
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button2.Image = ((System.Drawing.Image)(resources.GetObject("button2.Image")));
|
||||
this.button2.Location = new System.Drawing.Point(0, 100);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(99, 115);
|
||||
this.button2.TabIndex = 1;
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.button3.Image = ((System.Drawing.Image)(resources.GetObject("button3.Image")));
|
||||
this.button3.Location = new System.Drawing.Point(0, 215);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(99, 100);
|
||||
this.button3.TabIndex = 2;
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click_1);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));
|
||||
this.button1.Location = new System.Drawing.Point(0, 0);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(99, 100);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Interval = 200;
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// button4
|
||||
//
|
||||
this.button4.Location = new System.Drawing.Point(726, 53);
|
||||
this.button4.Name = "button4";
|
||||
this.button4.Size = new System.Drawing.Size(134, 100);
|
||||
this.button4.TabIndex = 7;
|
||||
this.button4.Text = "Magnet On";
|
||||
this.button4.UseVisualStyleBackColor = true;
|
||||
this.button4.Click += new System.EventHandler(this.button4_Click);
|
||||
//
|
||||
// button5
|
||||
//
|
||||
this.button5.Location = new System.Drawing.Point(726, 159);
|
||||
this.button5.Name = "button5";
|
||||
this.button5.Size = new System.Drawing.Size(134, 100);
|
||||
this.button5.TabIndex = 8;
|
||||
this.button5.Text = "Magnet Off";
|
||||
this.button5.UseVisualStyleBackColor = true;
|
||||
this.button5.Click += new System.EventHandler(this.button5_Click);
|
||||
//
|
||||
// fIO
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
@@ -270,8 +194,6 @@
|
||||
this.VisibleChanged += new System.EventHandler(this.fIO_VisibleChanged);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel3.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -283,12 +205,6 @@
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private arFrame.Control.GridView HWState;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Panel panel3;
|
||||
private System.Windows.Forms.Button button4;
|
||||
private System.Windows.Forms.Button button5;
|
||||
}
|
||||
}
|
||||
@@ -117,97 +117,6 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="button2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAA/ZJREFUWEfd
|
||||
WLtOG0EUtZR0ST4jDyVR8gE0GNtrGxKlwKYAFOAHMA9DxRsaCl6/kR5RpiH4AY0DOBgpiYkjmoCR2LUp
|
||||
smhzzjLgRwZ7/QpWjnSk9e7M3OOZO3PvHdt/i4jd/jrsco1uezwbEY8nGVGUTMjp1Ek+4913fgu5XCNs
|
||||
K7o1FpstLY8iLtd4xO1O7XR0qIcDAxfHwaCRnp01tMVFI7u0ZJLPfHc8NmYc9vdn2RZ9foSdzuDH1taH
|
||||
Yrj6AYPeDytKEOLUeG9v5mRy0rhYWbHO5WWDfeI9PRpmXeXMc0wxfG3YUpRnUUU53O3qUs/m5+UCKiDH
|
||||
2PX51Kjbndi0258KM9UBS/IO4rSfw8OXMmO1MBUIXGJFtFBb21thrjJEHI4+/MtMemZGaqAePJ2eNqIe
|
||||
TybidL4XZq3BnDmIO1tYkA5cT3LJKXLL4XgjzJeG8DmtkTNXzNOpKYPLjVV7ImTIwZ3FDdEInytH+KSO
|
||||
VTsoubu5/T/7/eeyAf4FY36/hpkcEXIKIQ5ha0fJ6uoVZd9ktNj+bG7OQBQ6lx7mEDfOQ1jWsYAwpMfj
|
||||
hr63Z1mkHosZeiJhXKytSb/nM97drTHiCFk5MHydwFllnW4oxF3DikiKu4YVkYw48MUjIesKDOaMlwxJ
|
||||
sk75zDdIlBJZSdsbQsN2e7v2SVFeCnnmuRdk4Jd2kNCK4arECTLBgKYhIc9mY1rErETW+DaWElCLOJJa
|
||||
oGldyDMFJpkeyRqXokxIreLINEIgNH0V8uCDiBzM4WSNy7FYUD6qEUeq0IL0ThXybDZmwVkLG+Q2ykRW
|
||||
K47MIOmFD/4W8hokcH+/fgKbfombfpPgxwYLHFnj21hKSK0ij0dHDVSFuWOGWQwOx6Y5qBN9fVloCgh5
|
||||
EOhwvGqqUOf1alG7/YWQd4VttztZtpzE4Nyd17BiMF+kfnBQNln4NTHxd7JAMB6zbpV1KqAQWcmSUaQV
|
||||
caSZbsHlhKwcmCTiw50mrGkkrDhezmOK8kDIKkTI4RhBUX03KT98L+bzaWG3O5fFFMMsmlDxs6iWDtJA
|
||||
pgYHdYj78sHvvyfkyMHrCJaALKplAzWCzOQZzeBij4WM0uB1BA7KTD3uYsrRLJQ8nmzE6ewQ5q2B1xGs
|
||||
+FlUywauBzlztIGZ6xVmKwOvI7jcqaGh+vokNgR9jsta8cwVg9cRrPhR0KtcDqnBCsijJNbZqXJDWPa5
|
||||
cuDuxj8dZlHNw9yMOJXkj2hrXmDyEMYYEBYou1urgXmYI+Kghj7a8XpVVl/mFTB2vHkFDCGkeQWMd8xK
|
||||
GPhZRqJPEsJ4s1r/K2AZGMxZGiJVW4cLfKOv3lyi49l8h29sg2Tkuej2v8Fm+wNDbvcV8BObjwAAAABJ
|
||||
RU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="button3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="button1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
|
||||
93
Cs_HMI/Project/ViewForm/fManual.Designer.cs
generated
93
Cs_HMI/Project/ViewForm/fManual.Designer.cs
generated
@@ -41,6 +41,12 @@
|
||||
this.btErrReset = new System.Windows.Forms.Button();
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this.btBack180 = new System.Windows.Forms.Button();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.btRight180 = new System.Windows.Forms.Button();
|
||||
this.panel10 = new System.Windows.Forms.Panel();
|
||||
this.btLeft180 = new System.Windows.Forms.Button();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.radpbs2 = new AGVControl.MyRadioButton();
|
||||
@@ -70,6 +76,7 @@
|
||||
this.guideSensor1 = new Narumi.UC.GuideSensor();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.grpSpeed.SuspendLayout();
|
||||
this.grpBunki.SuspendLayout();
|
||||
@@ -384,6 +391,7 @@
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Controls.Add(this.groupBox3);
|
||||
this.panel2.Controls.Add(this.button1);
|
||||
this.panel2.Controls.Add(this.groupBox1);
|
||||
this.panel2.Controls.Add(this.grpSpeed);
|
||||
@@ -396,13 +404,87 @@
|
||||
this.panel2.TabIndex = 9;
|
||||
this.panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.panel2_Paint);
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
this.groupBox3.Controls.Add(this.btBack180);
|
||||
this.groupBox3.Controls.Add(this.panel1);
|
||||
this.groupBox3.Controls.Add(this.btRight180);
|
||||
this.groupBox3.Controls.Add(this.panel10);
|
||||
this.groupBox3.Controls.Add(this.btLeft180);
|
||||
this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox3.Location = new System.Drawing.Point(0, 450);
|
||||
this.groupBox3.Name = "groupBox3";
|
||||
this.groupBox3.Padding = new System.Windows.Forms.Padding(10, 5, 5, 10);
|
||||
this.groupBox3.Size = new System.Drawing.Size(404, 67);
|
||||
this.groupBox3.TabIndex = 11;
|
||||
this.groupBox3.TabStop = false;
|
||||
//
|
||||
// btBack180
|
||||
//
|
||||
this.btBack180.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.btBack180.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btBack180.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.btBack180.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.btBack180.ForeColor = System.Drawing.Color.Black;
|
||||
this.btBack180.Location = new System.Drawing.Point(270, 19);
|
||||
this.btBack180.Name = "btBack180";
|
||||
this.btBack180.Size = new System.Drawing.Size(129, 38);
|
||||
this.btBack180.TabIndex = 15;
|
||||
this.btBack180.Text = "백후 180도 회전";
|
||||
this.btBack180.UseVisualStyleBackColor = false;
|
||||
this.btBack180.Click += new System.EventHandler(this.btBack180_Click);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.panel1.Location = new System.Drawing.Point(261, 19);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(9, 38);
|
||||
this.panel1.TabIndex = 14;
|
||||
//
|
||||
// btRight180
|
||||
//
|
||||
this.btRight180.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.btRight180.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.btRight180.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.btRight180.ForeColor = System.Drawing.Color.Black;
|
||||
this.btRight180.Location = new System.Drawing.Point(140, 19);
|
||||
this.btRight180.Name = "btRight180";
|
||||
this.btRight180.Size = new System.Drawing.Size(121, 38);
|
||||
this.btRight180.TabIndex = 6;
|
||||
this.btRight180.Text = "180도 우회전";
|
||||
this.btRight180.UseVisualStyleBackColor = false;
|
||||
this.btRight180.Click += new System.EventHandler(this.btRight180_Click);
|
||||
//
|
||||
// panel10
|
||||
//
|
||||
this.panel10.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.panel10.Location = new System.Drawing.Point(131, 19);
|
||||
this.panel10.Name = "panel10";
|
||||
this.panel10.Size = new System.Drawing.Size(9, 38);
|
||||
this.panel10.TabIndex = 12;
|
||||
//
|
||||
// btLeft180
|
||||
//
|
||||
this.btLeft180.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.btLeft180.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.btLeft180.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.btLeft180.ForeColor = System.Drawing.Color.Black;
|
||||
this.btLeft180.Location = new System.Drawing.Point(10, 19);
|
||||
this.btLeft180.Name = "btLeft180";
|
||||
this.btLeft180.Size = new System.Drawing.Size(121, 38);
|
||||
this.btLeft180.TabIndex = 7;
|
||||
this.btLeft180.Text = "180도 좌회전";
|
||||
this.btLeft180.UseVisualStyleBackColor = false;
|
||||
this.btLeft180.Click += new System.EventHandler(this.btLeft180_Click);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.button1.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
|
||||
this.button1.Location = new System.Drawing.Point(0, 380);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(404, 137);
|
||||
this.button1.Size = new System.Drawing.Size(404, 70);
|
||||
this.button1.TabIndex = 10;
|
||||
this.button1.Text = "설정 적용";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
@@ -847,6 +929,7 @@
|
||||
this.VisibleChanged += new System.EventHandler(this.fManual_VisibleChanged);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.groupBox3.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.grpSpeed.ResumeLayout(false);
|
||||
this.grpBunki.ResumeLayout(false);
|
||||
@@ -896,5 +979,11 @@
|
||||
private System.Windows.Forms.Button button1;
|
||||
private arCtl.arLabel arLabel1;
|
||||
private System.Windows.Forms.Panel panel12;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
private System.Windows.Forms.Button btBack180;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Button btRight180;
|
||||
private System.Windows.Forms.Panel panel10;
|
||||
private System.Windows.Forms.Button btLeft180;
|
||||
}
|
||||
}
|
||||
@@ -351,5 +351,24 @@ namespace Project.ViewForm
|
||||
AR.UTIL.MsgI($"주행속도({PUB.setting.SPD_DRIVE})가 '고속' 속도에 연결되었습니다.\n" +
|
||||
$"창을 이동하거나 '설정적용'을 누르면 원래속도({PUB.setting.SPD_H})로 변경 됩니다");
|
||||
}
|
||||
|
||||
private void btLeft180_Click(object sender, EventArgs e)
|
||||
{
|
||||
//[STX] C T L 0 0 0 0 A 3 [ETX]
|
||||
PUB.AGV.AGVMoveLeft180Turn();
|
||||
|
||||
}
|
||||
|
||||
private void btRight180_Click(object sender, EventArgs e)
|
||||
{
|
||||
//[STX] C T R 0 0 0 0 A 9 [ETX]
|
||||
PUB.AGV.AGVMoveRight180Turn();
|
||||
}
|
||||
|
||||
private void btBack180_Click(object sender, EventArgs e)
|
||||
{
|
||||
//[STX] C T B 0 0 0 0 9 9 [ETX]
|
||||
PUB.AGV.AGVMoveBack180Turn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
25
Cs_HMI/Project/fMain.Designer.cs
generated
25
Cs_HMI/Project/fMain.Designer.cs
generated
@@ -131,6 +131,7 @@ namespace Project
|
||||
this.mapFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.loadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.editorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.demoListLotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.refreshListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -143,7 +144,6 @@ namespace Project
|
||||
this.arPanel2 = new arCtl.arPanel();
|
||||
this.arPanel1 = new arCtl.arPanel();
|
||||
this.ctlPos1 = new Project.CtlPos();
|
||||
this.editorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.panRight.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.panel4.SuspendLayout();
|
||||
@@ -167,7 +167,7 @@ namespace Project
|
||||
this.MenuLift.FlatAppearance.BorderSize = 0;
|
||||
this.MenuLift.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.MenuLift.Font = new System.Drawing.Font("맑은 고딕", 18F, System.Drawing.FontStyle.Bold);
|
||||
this.MenuLift.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
|
||||
this.MenuLift.ForeColor = System.Drawing.Color.Red;
|
||||
this.MenuLift.Location = new System.Drawing.Point(285, 0);
|
||||
this.MenuLift.Name = "MenuLift";
|
||||
this.MenuLift.Size = new System.Drawing.Size(92, 50);
|
||||
@@ -175,6 +175,7 @@ namespace Project
|
||||
this.MenuLift.Text = "LIFT";
|
||||
this.toolTip1.SetToolTip(this.MenuLift, "I/O 및 FLAG를 확인 합니다");
|
||||
this.MenuLift.UseVisualStyleBackColor = true;
|
||||
this.MenuLift.Visible = false;
|
||||
this.MenuLift.Click += new System.EventHandler(this.MenuLift_Click);
|
||||
//
|
||||
// MenuMAN
|
||||
@@ -1690,7 +1691,7 @@ namespace Project
|
||||
this.toolStripMenuItem5,
|
||||
this.refreshListToolStripMenuItem});
|
||||
this.cmDebug.Name = "cmVision";
|
||||
this.cmDebug.Size = new System.Drawing.Size(229, 346);
|
||||
this.cmDebug.Size = new System.Drawing.Size(229, 324);
|
||||
//
|
||||
// mapFileToolStripMenuItem
|
||||
//
|
||||
@@ -1705,17 +1706,24 @@ namespace Project
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(105, 22);
|
||||
this.saveToolStripMenuItem.Text = "Save";
|
||||
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
|
||||
//
|
||||
// loadToolStripMenuItem
|
||||
//
|
||||
this.loadToolStripMenuItem.Name = "loadToolStripMenuItem";
|
||||
this.loadToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.loadToolStripMenuItem.Size = new System.Drawing.Size(105, 22);
|
||||
this.loadToolStripMenuItem.Text = "Load";
|
||||
this.loadToolStripMenuItem.Click += new System.EventHandler(this.loadToolStripMenuItem_Click);
|
||||
//
|
||||
// editorToolStripMenuItem
|
||||
//
|
||||
this.editorToolStripMenuItem.Name = "editorToolStripMenuItem";
|
||||
this.editorToolStripMenuItem.Size = new System.Drawing.Size(105, 22);
|
||||
this.editorToolStripMenuItem.Text = "Editor";
|
||||
this.editorToolStripMenuItem.Click += new System.EventHandler(this.editorToolStripMenuItem_Click);
|
||||
//
|
||||
// demoListLotToolStripMenuItem
|
||||
//
|
||||
this.demoListLotToolStripMenuItem.Name = "demoListLotToolStripMenuItem";
|
||||
@@ -2188,13 +2196,6 @@ namespace Project
|
||||
this.ctlPos1.Text = "ctlPos1";
|
||||
this.ctlPos1.Visible = false;
|
||||
//
|
||||
// editorToolStripMenuItem
|
||||
//
|
||||
this.editorToolStripMenuItem.Name = "editorToolStripMenuItem";
|
||||
this.editorToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.editorToolStripMenuItem.Text = "Editor";
|
||||
this.editorToolStripMenuItem.Click += new System.EventHandler(this.editorToolStripMenuItem_Click);
|
||||
//
|
||||
// fMain
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
|
||||
@@ -115,8 +115,7 @@ namespace Project
|
||||
|
||||
private void __Closing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
// 장치 연결 쓰레드 종료
|
||||
StopDeviceConnectionThread();
|
||||
// 장치 관리 태스크는 _STEP_CLOSING_START에서 종료됨
|
||||
|
||||
PUB.popup.needClose = true;
|
||||
if (remoteClose == true)
|
||||
|
||||
@@ -65,7 +65,7 @@ namespace arDev
|
||||
{
|
||||
return AddCommand(cmd + data);
|
||||
}
|
||||
|
||||
|
||||
public bool LiftControl(LiftCommand cmd)
|
||||
{
|
||||
return AddCommand(eAgvCmd.LiftControl, cmd.ToString());
|
||||
@@ -77,6 +77,33 @@ namespace arDev
|
||||
else
|
||||
return AddCommand(eAgvCmd.ChargeOf, chargetID.ToString("0000"));
|
||||
}
|
||||
public bool SetBackturnTime(int time)
|
||||
{
|
||||
return AddCommand(eAgvCmd.BackTrunResumeTime, time.ToString("0000"));
|
||||
}
|
||||
public bool SetGateOutOffTime(int time)
|
||||
{
|
||||
return AddCommand(eAgvCmd.GateoutTime, time.ToString("0000"));
|
||||
}
|
||||
|
||||
public bool TurnGDSCenterScope()
|
||||
{
|
||||
return AddCommand(eAgvCmd.TurnGDSCenterScope);
|
||||
}
|
||||
public bool AGVMoveLeft180Turn()
|
||||
{
|
||||
return AddCommand(eAgvCmd.TurnLeft);
|
||||
}
|
||||
public bool AGVMoveRight180Turn()
|
||||
{
|
||||
return AddCommand(eAgvCmd.TurnRight);
|
||||
}
|
||||
public bool AGVMoveBack180Turn()
|
||||
{
|
||||
return AddCommand(eAgvCmd.TurnBack);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public bool AGVErrorReset()
|
||||
{
|
||||
@@ -100,10 +127,10 @@ namespace arDev
|
||||
value = value.PadLeft(4, '0');
|
||||
return AddCommand($"SCH{value}");
|
||||
}
|
||||
public bool AGVGateOutTimer(int value)
|
||||
{
|
||||
return AddCommand($"SGT{value:0000}");
|
||||
}
|
||||
//public bool AGVGateOutTimer(int value)
|
||||
//{
|
||||
// return AddCommand($"SGT{value:0000}");
|
||||
//}
|
||||
/// <summary>
|
||||
/// 정지감속주기 및 상수
|
||||
/// </summary>
|
||||
@@ -137,6 +164,8 @@ namespace arDev
|
||||
};
|
||||
return AddCommand(cmds);
|
||||
}
|
||||
|
||||
|
||||
protected bool AddCommand(params string[] cmds)
|
||||
{
|
||||
bool ret = true;
|
||||
@@ -203,15 +232,15 @@ namespace arDev
|
||||
RaiseMessage(arRS232.MessageType.Normal, "충전명령전송");
|
||||
break;
|
||||
|
||||
case eAgvCmd.GoTurnLeft:
|
||||
case eAgvCmd.TurnLeft:
|
||||
cmdString = $"CTL0000";
|
||||
retval = AddCommand(cmdString);
|
||||
break;
|
||||
case eAgvCmd.GoTurnRight:
|
||||
case eAgvCmd.TurnRight:
|
||||
cmdString = $"CTR0000";
|
||||
retval = AddCommand(cmdString);
|
||||
break;
|
||||
case eAgvCmd.goTurnBack:
|
||||
case eAgvCmd.TurnBack:
|
||||
cmdString = $"CTB0000";
|
||||
retval = AddCommand(cmdString);
|
||||
break;
|
||||
@@ -240,7 +269,18 @@ namespace arDev
|
||||
cmdString = "CRS0000";
|
||||
retval = AddCommand(cmdString);
|
||||
break;
|
||||
|
||||
case eAgvCmd.TurnGDSCenterScope:
|
||||
cmdString = "SGS1000";
|
||||
retval = AddCommand(cmdString);
|
||||
break;
|
||||
case eAgvCmd.BackTrunResumeTime:
|
||||
cmdString = $"SST{param}";
|
||||
retval = AddCommand(cmdString);
|
||||
break;
|
||||
case eAgvCmd.GateoutTime:
|
||||
cmdString = $"SGT{param}";
|
||||
retval = AddCommand(cmdString);
|
||||
break;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
@@ -141,17 +141,17 @@ namespace arDev
|
||||
/// <summary>
|
||||
/// CMD : CTL0000
|
||||
/// </summary>
|
||||
GoTurnLeft,
|
||||
TurnLeft,
|
||||
|
||||
/// <summary>
|
||||
/// CMD : CTR0000
|
||||
/// </summary>
|
||||
GoTurnRight,
|
||||
TurnRight,
|
||||
|
||||
/// <summary>
|
||||
/// CMD : CTB0000
|
||||
/// </summary>
|
||||
goTurnBack,
|
||||
TurnBack,
|
||||
|
||||
/// <summary>
|
||||
/// CMD : CBZ
|
||||
@@ -175,6 +175,12 @@ namespace arDev
|
||||
SetSpeed,
|
||||
|
||||
CPUReset,
|
||||
|
||||
TurnGDSCenterScope,
|
||||
|
||||
BackTrunResumeTime,
|
||||
GateoutTime,
|
||||
|
||||
}
|
||||
public enum eForm
|
||||
{
|
||||
|
||||
Submodule Cs_HMI/SubProject/EnigProtocol updated: 8877cb1a9d...4f360f33a7
@@ -13,8 +13,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_Port", "Test_Port\Test
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Library", "Library", "{530A4517-6210-422B-8CB4-B7D194EE70BE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BMS", "..\SubProject\BMS\BMS.csproj", "{7A94C30C-6772-4F71-BF9C-0DF071A1BC70}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommData", "..\SubProject\CommData\CommData.csproj", "{14E8C9A5-013E-49BA-B435-EFEFC77DD623}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ENIGProtocol", "..\SubProject\EnigProtocol\enigprotocol\ENIGProtocol.csproj", "{9365803B-933D-4237-93C7-B502C855A71C}"
|
||||
@@ -43,10 +41,6 @@ Global
|
||||
{CCFA2CE7-A539-4ADC-B803-F759284C3463}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CCFA2CE7-A539-4ADC-B803-F759284C3463}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CCFA2CE7-A539-4ADC-B803-F759284C3463}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
@@ -64,7 +58,6 @@ Global
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{7A94C30C-6772-4F71-BF9C-0DF071A1BC70} = {530A4517-6210-422B-8CB4-B7D194EE70BE}
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623} = {530A4517-6210-422B-8CB4-B7D194EE70BE}
|
||||
{9365803B-933D-4237-93C7-B502C855A71C} = {530A4517-6210-422B-8CB4-B7D194EE70BE}
|
||||
{8BAE0EAC-3D25-402F-9A65-2BA1ECFE28B7} = {530A4517-6210-422B-8CB4-B7D194EE70BE}
|
||||
|
||||
2
Cs_HMI/TestProject/Test_BMS/Form1.Designer.cs
generated
2
Cs_HMI/TestProject/Test_BMS/Form1.Designer.cs
generated
@@ -47,7 +47,7 @@
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(131, 20);
|
||||
this.comboBox1.TabIndex = 0;
|
||||
this.comboBox1.Text = "com15";
|
||||
this.comboBox1.Text = "com6";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
|
||||
@@ -18,22 +18,15 @@ namespace Test_BMS
|
||||
InitializeComponent();
|
||||
bms = new arDev.BMS();
|
||||
bms.BMSDataReceive += Bms_BMSDataReceive;
|
||||
bms.BMSCellDataReceive += Bms_BMSCellDataReceive;
|
||||
bms.Message += Bms_Message;
|
||||
this.Text = $"{Application.ProductName} ver{Application.ProductVersion}";
|
||||
}
|
||||
|
||||
private void Bms_Message(object sender, arRS232.MessageEventArgs e)
|
||||
private void Bms_BMSCellDataReceive(object sender, arDev.BMSCelvoltageEventArgs e)
|
||||
{
|
||||
var sb = new System.Text.StringBuilder();
|
||||
if (e.Data != null)
|
||||
{
|
||||
foreach (var b in e.Data)
|
||||
sb.Append(" " + b.ToString("X2"));
|
||||
}
|
||||
else sb.Append(e.Message);
|
||||
if (e.MsgType == arRS232.MessageType.Error)
|
||||
addmsg(e.Message);
|
||||
else
|
||||
addmsg($"{e.MsgType}:{sb}");
|
||||
var valuestr = string.Join(" ", e.voltage.Select(t => t.ToString()));
|
||||
addmsg($"voltage:{valuestr}");
|
||||
}
|
||||
|
||||
private void Bms_BMSDataReceive(object sender, EventArgs e)
|
||||
@@ -43,7 +36,32 @@ namespace Test_BMS
|
||||
addmsg("Recv:" + msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void Bms_Message(object sender, arDev.arRS232.MessageEventArgs e)
|
||||
{
|
||||
var sb = new System.Text.StringBuilder();
|
||||
if (e.Data != null)
|
||||
{
|
||||
foreach (var b in e.Data)
|
||||
sb.Append(" " + b.ToString("X2"));
|
||||
}
|
||||
else sb.Append(e.Message);
|
||||
|
||||
if (e.MsgType == arDev.arRS232.MessageType.Error)
|
||||
addmsg(e.Message);
|
||||
else if(e.MsgType == arDev.arRS232.MessageType.Send)
|
||||
{
|
||||
addmsg($"Tx:{sb}");
|
||||
}
|
||||
else if(e.MsgType == arDev.arRS232.MessageType.Recv)
|
||||
{
|
||||
addmsg($"Rx:{sb}");
|
||||
}
|
||||
else
|
||||
addmsg($"{e.MsgType}:{sb}");
|
||||
}
|
||||
|
||||
void addmsg(string m)
|
||||
{
|
||||
if (logTextBox1.InvokeRequired)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\..\..\..\..\Amkor\AGV4\Test\</OutputPath>
|
||||
<OutputPath>..\..\..\..\..\..\Amkor\AGV4\Test\BMS\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -50,6 +50,12 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\..\Project\Device\BMS.cs">
|
||||
<Link>BMS.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Project\Device\BMSInformationEventArgs.cs">
|
||||
<Link>BMSInformationEventArgs.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
||||
Reference in New Issue
Block a user