This commit is contained in:
chi
2025-04-24 16:24:01 +09:00
parent f71b963851
commit 20dd87a9d0
55 changed files with 961 additions and 1085 deletions

View File

@@ -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}

View File

@@ -0,0 +1,63 @@
<?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>D:\Amkor\AGV4</BaseOutputPath>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Protocol\enigprotocol\ENIGProtocol.csproj" />
<ProjectReference Include="..\StateMachine\StateMachine.csproj" />
<ProjectReference Include="..\SubProject\AGV\NARUMI.csproj" />
<ProjectReference Include="..\SubProject\AGVControl\agvControl.csproj" />
<ProjectReference Include="..\SubProject\arCtl\arControl.csproj" />
<ProjectReference Include="..\SubProject\arFrameControl\arFrameControl.csproj" />
<ProjectReference Include="..\SubProject\BMS\BMS.csproj" />
<ProjectReference Include="..\SubProject\CommData\CommData.csproj" />
<ProjectReference Include="..\SubProject\CommUtil\arCommUtil.csproj" />
<ProjectReference Include="..\SubProject\MSSQLCommand\MSSQLCommand.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>
</ItemGroup>
<ItemGroup>
<Reference Include="Winsock_Orcas">
<HintPath>lib\Winsock_Orcas.dll</HintPath>
</Reference>
<Reference Include="EEProtocol">
<HintPath>lib\EEProtocol.dll</HintPath>
</Reference>
<Reference Include="arUtil">
<HintPath>lib\arUtil.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<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>

View File

@@ -1,545 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{65F3E762-800C-499E-862F-A535642EC59F}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Project</RootNamespace>
<AssemblyName>Amkor</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<PublishUrl>게시\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<NoWin32Manifest>False</NoWin32Manifest>
<SignAssembly>False</SignAssembly>
<DelaySign>False</DelaySign>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<OutputPath>..\..\..\..\..\Amkor\AGV4\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<NoWarn>IDE1006</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\..\ManualMapEditor\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>icons8-split-64.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\..\..\..\Amkor\OTP2DReading\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
<BaseOutputPath>D:\Amkor\AGV4</BaseOutputPath>
<Copyright>Amkor</Copyright>
<Title>AGV4</Title>
<Description>Amkor AGV4</Description>
<AssemblyVersion>25.04.24.1500</AssemblyVersion>
<FileVersion>25.04.24.1500</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<NoWarn>1701;1702;8622</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<StartAction>Project</StartAction>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<BaseAddress>4194304</BaseAddress>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<NoWarn>1701;1702;8622</NoWarn>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Protocol\enigprotocol\ENIGProtocol.csproj" />
<ProjectReference Include="..\StateMachine\StateMachine.csproj" />
<ProjectReference Include="..\SubProject\AGV\NARUMI.csproj" />
<ProjectReference Include="..\SubProject\AGVControl\agvControl.csproj" />
<ProjectReference Include="..\SubProject\arCtl\arControl.csproj" />
<ProjectReference Include="..\SubProject\arFrameControl\arFrameControl.csproj" />
<ProjectReference Include="..\SubProject\BMS\BMS.csproj" />
<ProjectReference Include="..\SubProject\CommData\CommData.csproj" />
<ProjectReference Include="..\SubProject\CommUtil\arCommUtil.csproj" />
<ProjectReference Include="..\SubProject\MSSQLCommand\MSSQLCommand.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>
</ItemGroup>
<ItemGroup>
<Reference Include="ArLog.Net4, Version=19.7.18.1730, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\DLL\ArLog.Net4.dll</HintPath>
</Reference>
<Reference Include="ArSetting.Net4, Version=19.7.3.2330, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\DLL\ArSetting.Net4.dll</HintPath>
</Reference>
<Reference Include="Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL">
<HintPath>..\packages\Ionic.Zip.1.9.1.8\lib\Ionic.Zip.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Speech, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Program Files (x86)\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
<Reference Include="Winsock Orcas">
<HintPath>..\DLL\Winsock Orcas.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Class\EEMStatus.cs" />
<Compile Include="Class\Lang.cs" />
<Compile Include="CtlAuto.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="CtlAuto.Designer.cs">
<DependentUpon>CtlAuto.cs</DependentUpon>
</Compile>
<Compile Include="CtlPos.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="CtlPos.Designer.cs">
<DependentUpon>CtlPos.cs</DependentUpon>
</Compile>
<Compile Include="Class\CParser.cs" />
<Compile Include="Class\EnumData.cs" />
<Compile Include="Class\CResult.cs" />
<Compile Include="DataSet1.cs">
<DependentUpon>DataSet1.xsd</DependentUpon>
</Compile>
<Compile Include="DataSet1.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>DataSet1.xsd</DependentUpon>
</Compile>
<Compile Include="Device\CFlag.cs" />
<Compile Include="Device\Xbee _OLD.cs" />
<Compile Include="Device\Xbee.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Device\Socket.cs" />
<Compile Include="Dialog\fCounter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fCounter.Designer.cs">
<DependentUpon>fCounter.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fUpdateForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fUpdateForm.Designer.cs">
<DependentUpon>fUpdateForm.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fLog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fLog.Designer.cs">
<DependentUpon>fLog.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fJobSelect.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fJobSelect.Designer.cs">
<DependentUpon>fJobSelect.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fSystem.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fSystem.Designer.cs">
<DependentUpon>fSystem.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\DriveDetector.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fVolume.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fVolume.Designer.cs">
<DependentUpon>fVolume.cs</DependentUpon>
</Compile>
<Compile Include="MessageWindow\fMessageWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MessageWindow\fMessageWindow.Designer.cs">
<DependentUpon>fMessageWindow.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fTouchKey.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fTouchKey.Designer.cs">
<DependentUpon>fTouchKey.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fTouchKeyFull.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fTouchKeyFull.Designer.cs">
<DependentUpon>fTouchKeyFull.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fTouchNumDot.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fTouchNumDot.Designer.cs">
<DependentUpon>fTouchNumDot.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fPassword.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fPassword.Designer.cs">
<DependentUpon>fPassword.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fErrorException.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fErrorException.Designer.cs">
<DependentUpon>fErrorException.cs</DependentUpon>
</Compile>
<Compile Include="fMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="fMain.Designer.cs">
<DependentUpon>fMain.cs</DependentUpon>
</Compile>
<Compile Include="Manager\DataBaseManager.cs" />
<Compile Include="MessageWindow\MessageWindow.cs" />
<Compile Include="MessageWindow\CMessageData.cs" />
<Compile Include="MethodExtentions.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="PUB.cs" />
<Compile Include="CSetting.cs" />
<Compile Include="StateMachine\Display\GetErrorMessage.cs" />
<Compile Include="StateMachine\Step\_SM_RUN_CHGOFF.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_GOCHARGECHECK.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_GOCHARGE.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_READY.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_RESET.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_GOHOME.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_GOUP.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_GODOWN.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_SYNC.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_POSCHK.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_INIT.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\_DIO.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\_Flag.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_STEP_CLOSE.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\_BMS.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\_AGV.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\_SPS.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\_Loop.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\_TMDisplay.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\DisplayTextHandler.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Util.cs" />
<Compile Include="Util_FG.cs" />
<Compile Include="ViewForm\fBms.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ViewForm\fBms.Designer.cs">
<DependentUpon>fBms.cs</DependentUpon>
</Compile>
<Compile Include="ViewForm\fAuto.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ViewForm\fAuto.Designer.cs">
<DependentUpon>fAuto.cs</DependentUpon>
</Compile>
<Compile Include="ViewForm\fAgv.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ViewForm\fAgv.Designer.cs">
<DependentUpon>fAgv.cs</DependentUpon>
</Compile>
<Compile Include="ViewForm\fFlag.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ViewForm\fFlag.Designer.cs">
<DependentUpon>fFlag.cs</DependentUpon>
</Compile>
<Compile Include="ViewForm\fIO.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ViewForm\fIO.Designer.cs">
<DependentUpon>fIO.cs</DependentUpon>
</Compile>
<Compile Include="fSetup.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="fSetup.Designer.cs">
<DependentUpon>fSetup.cs</DependentUpon>
</Compile>
<Compile Include="ViewForm\fManual.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ViewForm\fManual.Designer.cs">
<DependentUpon>fManual.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="Dialog\fCounter.resx">
<DependentUpon>fCounter.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fUpdateForm.resx">
<DependentUpon>fUpdateForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fLog.resx">
<DependentUpon>fLog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fJobSelect.resx">
<DependentUpon>fJobSelect.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fSystem.resx">
<DependentUpon>fSystem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fVolume.resx">
<DependentUpon>fVolume.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MessageWindow\fMessageWindow.resx">
<DependentUpon>fMessageWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fTouchKey.resx">
<DependentUpon>fTouchKey.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fTouchKeyFull.resx">
<DependentUpon>fTouchKeyFull.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fTouchNumDot.resx">
<DependentUpon>fTouchNumDot.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fPassword.resx">
<DependentUpon>fPassword.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fErrorException.resx">
<DependentUpon>fErrorException.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="fMain.resx">
<DependentUpon>fMain.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="ViewForm\fBms.resx">
<DependentUpon>fBms.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ViewForm\fAuto.resx">
<DependentUpon>fAuto.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ViewForm\fAgv.resx">
<DependentUpon>fAgv.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ViewForm\fFlag.resx">
<DependentUpon>fFlag.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ViewForm\fIO.resx">
<DependentUpon>fIO.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="fSetup.resx">
<DependentUpon>fSetup.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ViewForm\fManual.resx">
<DependentUpon>fManual.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
<None Include="DataSet1.xsc">
<DependentUpon>DataSet1.xsd</DependentUpon>
</None>
<None Include="DataSet1.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>DataSet1.Designer.cs</LastGenOutput>
</None>
<None Include="DataSet1.xss">
<DependentUpon>DataSet1.xsd</DependentUpon>
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
<PackageReference Include="System.IO.Compression.ZipFile" Version="4.3.0" />
<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>
<ItemGroup>
<Content Include="ReadMe.txt" />
<Content Include="icons8-layers-30.ico" />
<Content Include="icons8-split-64.ico" />
<None Include="Resources\ChargeH.png" />
<None Include="Resources\icons8-charge-empty-battery-96.png" />
<None Include="Resources\icons8-automatic-gearbox-warning-80.png" />
<None Include="Resources\icons8-speed-80.png" />
<None Include="Resources\icons8-charged-battery-80.png" />
<None Include="Resources\icons8-checked-radio-button-48.png" />
<None Include="Resources\icons8-save-40.png" />
<None Include="Resources\icons8-unavailable-40.png" />
<None Include="Resources\icons8-new-40.png" />
<None Include="Resources\icons8-running-40.png" />
<None Include="Resources\icons8-no-running-40.png" />
<None Include="Resources\icons8-exercise-40.png" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4%28x86 및 x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
<Visible>False</Visible>
<ProductName>Windows Installer 4.5</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Protocol\enigprotocol\ENIGProtocol.csproj">
<Project>{16bd025d-cb0f-4a4b-a452-8fe629f02f0c}</Project>
<Name>ENIGProtocol</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\AGVControl\agvControl.csproj">
<Project>{8cb883c0-99c3-4dd4-b017-f9b92010a806}</Project>
<Name>agvControl</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\AGV\NARUMI.csproj">
<Project>{8bae0eac-3d25-402f-9a65-2ba1ecfe28b7}</Project>
<Name>NARUMI</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\BMS\BMS.csproj">
<Project>{7a94c30c-6772-4f71-bf9c-0df071a1bc70}</Project>
<Name>BMS</Name>
</ProjectReference>
<ProjectReference Include="..\StateMachine\StateMachine.csproj">
<Project>{bbc9bccf-6262-4355-9cc2-37ff678ac499}</Project>
<Name>StateMachine</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\arCtl\arControl.csproj">
<Project>{f31c242c-1b15-4518-9733-48558499fe4b}</Project>
<Name>arControl</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\arFrameControl\arFrameControl.csproj">
<Project>{a16c9667-5241-4313-888e-548375f85d29}</Project>
<Name>arFrameControl</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\CommData\CommData.csproj">
<Project>{14e8c9a5-013e-49ba-b435-efefc77dd623}</Project>
<Name>CommData</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\CommUtil\arCommUtil.csproj">
<Project>{14e8c9a5-013e-49ba-b435-ffffff7dd623}</Project>
<Name>arCommUtil</Name>
</ProjectReference>
<ProjectReference Include="..\SubProject\ProPLC\PLC.Net45.csproj">
<Project>{476c8e64-7b6b-4554-aca2-04302715750f}</Project>
<Name>PLC.Net45</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>rem xcopy "$(TargetDir)*.exe" "\\192.168.1.80\Amkor\AGV2" /Y
rem xcopy "$(TargetDir)*.dll" "\\192.168.1.80\Amkor\AGV2" /Y</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<RootNamespace>Project</RootNamespace>
<AssemblyName>Amkor</AssemblyName>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<ApplicationIcon>icons8-split-64.ico</ApplicationIcon>
<Platforms>x64</Platforms>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<NoWarn>IDE1006</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\..\..\..\..\Amkor\AGV4\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>..\..\..\ManualMapEditor\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutputPath>..\..\..\..\Amkor\OTP2DReading\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
<PackageReference Include="System.Runtime.Remoting" Version="4.0.2" />
<PackageReference Include="System.Security.Cryptography" Version="8.0.0" />
<PackageReference Include="System.Web" Version="4.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\StateMachine\StateMachine.csproj" />
<ProjectReference Include="..\SubProject\AGV\NARUMI.csproj" />
<ProjectReference Include="..\SubProject\AGVControl\agvControl.csproj" />
<ProjectReference Include="..\SubProject\arCtl\arControl.csproj" />
<ProjectReference Include="..\SubProject\arFrameControl\arFrameControl.csproj" />
<ProjectReference Include="..\SubProject\BMS\BMS.csproj" />
<ProjectReference Include="..\SubProject\CommData\CommData.csproj" />
<ProjectReference Include="..\SubProject\CommUtil\arCommUtil.csproj" />
<ProjectReference Include="..\SubProject\MSSQLCommand\MSSQLCommand.csproj" />
<ProjectReference Include="..\SubProject\Patch\SWPatch.csproj" />
<ProjectReference Include="..\SubProject\ProPLC\PLC.Net45.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="icons8-split-64.ico">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -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; }

View File

@@ -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
{

View File

@@ -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;
/// <summary>
/// ============================================================================

View File

@@ -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;
}
/// <summary>
/// 지그비장치에 데이터를 전송합니다
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
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);
}
/// <summary>
/// 이동완료 신호 전송
/// </summary>
/// <param name="tag">목적지태그값</param>
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);
}
/// <summary>
/// 신규 RFID태그값이 읽혔다면 이명령을 통해서 전송한다
/// </summary>
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);
}
/// <summary>
/// AGV상태를 Xbee 로 전송한다
/// </summary>
@@ -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
}
}
/// <summary>
/// 지그비장치에 데이터를 전송합니다
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
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);
}
}
}

View File

@@ -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);
}

View File

@@ -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)

View File

@@ -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);
}
}
}

View File

@@ -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;
}

View File

@@ -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
/// <summary>
/// 시스템로그
/// </summary>
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
/// <summary>
/// 상태머신
/// </summary>
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)

View File

@@ -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();

View File

@@ -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")]

View File

@@ -8,11 +8,11 @@
// </auto-generated>
//------------------------------------------------------------------------------
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"]));
}
}
}
}

View File

@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Project.Properties" GeneratedClassName="Settings">
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AGV4.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="css" Type="System.String" Scope="User">
@@ -7,5 +7,13 @@
asdfasdfasdf
asdf</Value>
</Setting>
<Setting Name="CS" Type="(Connection string)" Scope="Application">
<DesignTimeValue Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
&lt;ConnectionString&gt;Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Info=True;User ID=eeadm;Password=uJnU8a8q&amp;amp;DJ+ug-D;Encrypt=False;TrustServerCertificate=True&lt;/ConnectionString&gt;
&lt;ProviderName&gt;System.Data.SqlClient&lt;/ProviderName&gt;
&lt;/SerializableConnectionString&gt;</DesignTimeValue>
<Value Profile="(Default)">Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Info=True;User ID=eeadm;Password=uJnU8a8q&amp;DJ+ug-D;Encrypt=False;TrustServerCertificate=True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,8 @@
{
"profiles": {
"AGV4": {
"commandName": "Project",
"workingDirectory": "D:\\Amkor\\AGV4"
}
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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
{

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Media;
namespace Project
{

View File

@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using AR;
using COMM;
using static Project.StateMachine;
using Project.StateMachine;
namespace Project
{

View File

@@ -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;

View File

@@ -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;

View File

@@ -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
{

View File

@@ -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

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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}");
//}
}
}

View File

@@ -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));

View File

@@ -7,7 +7,7 @@ using System.Text;
using AR;
using arCtl;
using COMM;
using static Project.StateMachine;
using Project.StateMachine;
namespace Project
{

View File

@@ -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
/// </summary>
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)
{

View File

@@ -32,7 +32,6 @@ namespace Project.ViewForm
}
bool tmrun = false;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();

View File

@@ -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;

View File

@@ -60,7 +60,6 @@ namespace Project.ViewForm
}
bool tmrun = false;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();

View File

@@ -88,7 +88,6 @@ namespace Project.ViewForm
}
bool tmrun = false;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();

View File

@@ -23,42 +23,32 @@ 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<Boolean> fgValueM = new List<bool>();
//List<Boolean> fgValueS = new List<bool>();
////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;

View File

@@ -2,10 +2,22 @@
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="AGV4.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Project.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<connectionStrings>
<add name="AGV4.Properties.Settings.CS" connectionString="Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Info=True;User ID=eeadm;Password=uJnU8a8q&amp;DJ+ug-D;Encrypt=False;TrustServerCertificate=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<userSettings>
<AGV4.Properties.Settings>
<setting name="css" serializeAs="String">
<value>asdfasdfasdf
asdfasdfasdf
asdf</value>
</setting>
</AGV4.Properties.Settings>
<Project.Properties.Settings>
<setting name="css" serializeAs="String">
<value>asdfasdfasdf

View File

@@ -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<string, int> FlagMap = new Dictionary<string, int>();
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;

View File

@@ -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;
}

4
Cs_HMI/Project/run.bat Normal file
View File

@@ -0,0 +1,4 @@
echo "Building..."
rem dotnet build
echo "Running..."
dotnet run --project .\Project\AGV4.csproj

View File

@@ -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
{
Up,
Down,
}
public enum EMsgOpt : byte
{
NORMAL,
STEPCHANGE,
ERROR,
}
/// <summary>
/// 000~020 : System Define
/// 020~255 : User Define
/// </summary>
public enum eSMStep : byte
{
NOTSET = 0,
INIT,
SYNC,
IDLE,
RUN,
FINISH,
PAUSE,
ERROR,
RESET,
EMERGENCY,
CLEAR,
CLOSING,
CLOSEWAIT,
CLOSED,
}
/// <summary>
/// RUN중일 때 사용되는 세부 시퀀스
/// </summary>
public enum ERunStep : byte
{
public enum eGoDir
{
Up,
Down,
}
public enum EMsgOpt : byte
{
NORMAL,
STEPCHANGE,
ERROR,
}
/// <summary>
/// 000~020 : System Define
/// 020~255 : User Define
/// </summary>
public enum eSMStep : byte
{
NOTSET = 0,
INIT,
SYNC,
IDLE,
RUN,
FINISH,
PAUSE,
ERROR,
RESET,
EMERGENCY,
CLEAR,
CLOSING,
CLOSEWAIT,
CLOSED,
}
/// <summary>
/// RUN중일 때 사용되는 세부 시퀀스
/// 자동모드 대기상태
/// </summary>
public enum ERunStep : byte
{
READY = 0,
/// <summary>
/// 자동모드 대기상태
/// </summary>
READY=0,
/// <summary>
/// 홈(QC)로 이동합니다
/// </summary>
GOHOME,
/// <summary>
/// 홈(QC)로 이동합니다
/// </summary>
GOHOME,
/// <summary>
/// 충전을 해제 함
/// </summary>
CHARGEOFF,
/// <summary>
/// 충전을 해제 함
/// </summary>
CHARGEOFF,
/// <summary>
/// 충전이동
/// </summary>
GOCHARGE,
/// <summary>
/// 충전이동
/// </summary>
GOCHARGE,
/// <summary>
/// 충전중
/// </summary>
CHARGECHECK =50,
/// <summary>
/// 충전중
/// </summary>
CHARGECHECK = 50,
/// <summary>
/// 상차이동
/// </summary>
GOUP,
/// <summary>
/// 상차이동
/// </summary>
GOUP,
/// <summary>
/// 하차이동
/// </summary>
GODOWN,
}
/// <summary>
/// 하차이동
/// </summary>
GODOWN,
}
}

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Project
namespace Project.StateMachine
{
public partial class StateMachine
{

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Project
namespace Project.StateMachine
{
public partial class StateMachine : IDisposable
{

View File

@@ -7,7 +7,7 @@
<ProjectGuid>{BBC9BCCF-6262-4355-9CC2-37FF678AC499}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>StateMachine</RootNamespace>
<RootNamespace>Project.StateMachine</RootNamespace>
<AssemblyName>StateMachine</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>

View File

@@ -62,7 +62,6 @@ namespace arDev
Errlog = new Queue();
MinRecvLength = 4;
VAR.Init(128);
}

View File

@@ -12,7 +12,6 @@ namespace MSSQLCommand
/// </summary>
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!";

View File

@@ -95,10 +95,6 @@
<Project>{14e8c9a5-013e-49ba-b435-efefc77dd623}</Project>
<Name>CommData</Name>
</ProjectReference>
<ProjectReference Include="..\..\SubProject\ProPLC\PLC.Net45.csproj">
<Project>{476c8e64-7b6b-4554-aca2-04302715750f}</Project>
<Name>PLC.Net45</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

2
Cs_HMI/run.bat Normal file
View File

@@ -0,0 +1,2 @@
dotnet build
dotnet run --project .\Project\AGV4.csproj