Browse Source

first commit

HuiZhou
fajiao 4 years ago
parent
commit
40879f8207
  1. 43
      AutoWeightServer.sln
  2. 116
      AutoWeightServer/App.config
  3. 438
      AutoWeightServer/AutoWeightServer.csproj
  4. 434
      AutoWeightServer/AutoWeightServer.csproj.bak
  5. 381
      AutoWeightServer/Center/DeviceCenter.cs
  6. 202
      AutoWeightServer/Center/LocalAttrCenter.cs
  7. 259
      AutoWeightServer/Center/ServiceCenter.cs
  8. 86
      AutoWeightServer/Center/UiExtendCenter.cs
  9. 7
      AutoWeightServer/Center/VariableCenter.cs
  10. 231
      AutoWeightServer/IfManager/FingerPrint/FingerPrintManager.cs
  11. 71
      AutoWeightServer/IfManager/FingerPrint/FingerPrintParam.cs
  12. 294
      AutoWeightServer/IfManager/FingerPrint/TesoLiveSDK.cs
  13. 225
      AutoWeightServer/IfManager/LedZK/LedZKManager.cs
  14. 966
      AutoWeightServer/IfManager/LedZK/LedZKSDK.cs
  15. 35
      AutoWeightServer/IfManager/Light/ILightRelay.cs
  16. 187
      AutoWeightServer/IfManager/Light/LightManager.cs
  17. 65
      AutoWeightServer/IfManager/Light/LightRelay.cs
  18. 21
      AutoWeightServer/IfManager/Scales/IScales.cs
  19. 61
      AutoWeightServer/IfManager/Scales/Scales.cs
  20. 48
      AutoWeightServer/IfManager/Scales/ScalesDefault.cs
  21. 85
      AutoWeightServer/IfManager/Scales/ScalesManager.cs
  22. 58
      AutoWeightServer/IfManager/Scales/ScalesZhuHai.cs
  23. 93
      AutoWeightServer/IfManager/Speech/SpeakHelper.cs
  24. 74
      AutoWeightServer/IfManager/Speech/SpeakManager.cs
  25. 136
      AutoWeightServer/IfManager/YkPos/YkPosManager.cs
  26. 169
      AutoWeightServer/IfManager/YkPos/YkPosSDK.cs
  27. BIN
      AutoWeightServer/Img/Thumbs.db
  28. BIN
      AutoWeightServer/Img/logo.bmp
  29. 68
      AutoWeightServer/Model/Config/BaseConfig.cs
  30. 78
      AutoWeightServer/Model/Config/ServerConfig.cs
  31. 29
      AutoWeightServer/Model/Config/VoiceConfig.cs
  32. 40
      AutoWeightServer/Model/EventArgsEx/PlateEventArgs.cs
  33. 27
      AutoWeightServer/Model/EventArgsEx/ScaleEventArgs.cs
  34. 36
      AutoWeightServer/Model/State/BillState.cs
  35. 13
      AutoWeightServer/Model/State/CarState.cs
  36. 16
      AutoWeightServer/Model/Type/PhotoType.cs
  37. 83
      AutoWeightServer/Program.cs
  38. 35
      AutoWeightServer/Properties/AssemblyInfo.cs
  39. 403
      AutoWeightServer/Properties/Resources.Designer.cs
  40. 311
      AutoWeightServer/Properties/Resources.resx
  41. 26
      AutoWeightServer/Properties/Settings.Designer.cs
  42. 5
      AutoWeightServer/Properties/Settings.settings
  43. 69
      AutoWeightServer/Properties/app.manifest
  44. BIN
      AutoWeightServer/Resources/Loading.gif
  45. BIN
      AutoWeightServer/Resources/Loading_80.gif
  46. BIN
      AutoWeightServer/Resources/Thumbs.db
  47. BIN
      AutoWeightServer/Resources/logo.bmp
  48. BIN
      AutoWeightServer/Resources/max1.png
  49. BIN
      AutoWeightServer/Resources/max2.png
  50. BIN
      AutoWeightServer/Resources/min.png
  51. BIN
      AutoWeightServer/Resources/ok32.png
  52. BIN
      AutoWeightServer/Resources/ok64.png
  53. BIN
      AutoWeightServer/Resources/top1.png
  54. BIN
      AutoWeightServer/Resources/top2.png
  55. BIN
      AutoWeightServer/Resources/关闭.png
  56. BIN
      AutoWeightServer/Resources/删除32.png
  57. BIN
      AutoWeightServer/Resources/删除64.png
  58. BIN
      AutoWeightServer/Resources/打印 (3).png
  59. BIN
      AutoWeightServer/Resources/指纹.png
  60. BIN
      AutoWeightServer/Resources/摄像头红色64.png
  61. BIN
      AutoWeightServer/Resources/摄像头绿色64.png
  62. BIN
      AutoWeightServer/Resources/标题.png
  63. BIN
      AutoWeightServer/Resources/签字 (3).png
  64. BIN
      AutoWeightServer/Resources/签字.png
  65. BIN
      AutoWeightServer/Resources/红灯警示.png
  66. BIN
      AutoWeightServer/Resources/红灯警示60.png
  67. BIN
      AutoWeightServer/Resources/红灯闪烁60.gif
  68. BIN
      AutoWeightServer/Resources/绿灯警示.png
  69. BIN
      AutoWeightServer/Resources/绿灯警示60.png
  70. BIN
      AutoWeightServer/Resources/绿灯闪烁60.gif
  71. BIN
      AutoWeightServer/Resources/航天.png
  72. BIN
      AutoWeightServer/Resources/重置.png
  73. 2402
      AutoWeightServer/SDK/VzClientSDK.cs
  74. 90
      AutoWeightServer/SDK/Win32API.cs
  75. BIN
      AutoWeightServer/Thumbs.db
  76. 48
      AutoWeightServer/UI/Base/FrmBase.Designer.cs
  77. 71
      AutoWeightServer/UI/Base/FrmBase.cs
  78. 120
      AutoWeightServer/UI/Base/FrmBase.resx
  79. 48
      AutoWeightServer/UI/Base/FrmModalBase.Designer.cs
  80. 36
      AutoWeightServer/UI/Base/FrmModalBase.cs
  81. 120
      AutoWeightServer/UI/Base/FrmModalBase.resx
  82. 61
      AutoWeightServer/UI/Base/FrmServerBase.Designer.cs
  83. 102
      AutoWeightServer/UI/Base/FrmServerBase.cs
  84. 200
      AutoWeightServer/UI/Base/FrmServerBase.resx
  85. 230
      AutoWeightServer/UI/FrmBill.Designer.cs
  86. 69
      AutoWeightServer/UI/FrmBill.cs
  87. 562
      AutoWeightServer/UI/FrmBill.resx
  88. 832
      AutoWeightServer/UI/FrmMainServer.Designer.cs
  89. 1131
      AutoWeightServer/UI/FrmMainServer.cs
  90. 534
      AutoWeightServer/UI/FrmMainServer.resx
  91. 139
      AutoWeightServer/UI/FrmPwdVerify.Designer.cs
  92. 87
      AutoWeightServer/UI/FrmPwdVerify.cs
  93. 517
      AutoWeightServer/UI/FrmPwdVerify.resx
  94. 98
      AutoWeightServer/UI/FrmSign.Designer.cs
  95. 86
      AutoWeightServer/UI/FrmSign.cs
  96. 517
      AutoWeightServer/UI/FrmSign.resx
  97. 608
      AutoWeightServer/UI/UC/UCCarIn.Designer.cs
  98. 514
      AutoWeightServer/UI/UC/UCCarIn.cs
  99. 120
      AutoWeightServer/UI/UC/UCCarIn.resx
  100. 478
      AutoWeightServer/UI/UC/UCCarIn2.Designer.cs

43
AutoWeightServer.sln

@ -0,0 +1,43 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30717.126
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoWeightServer", "AutoWeightServer\AutoWeightServer.csproj", "{889FEA56-1927-40F8-B7EC-D6A10EF65429}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.Entity", "EC.Entity\EC.Entity.csproj", "{D2A884B9-132F-470B-B36F-8C6723C19A7E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.Service", "EC.Service\EC.Service.csproj", "{5050AE00-54F5-42EF-86CA-5962784403CC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.Utils", "EC.Utils\EC.Utils.csproj", "{8EDAE882-B40E-493C-8858-450411335D4B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{889FEA56-1927-40F8-B7EC-D6A10EF65429}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{889FEA56-1927-40F8-B7EC-D6A10EF65429}.Debug|Any CPU.Build.0 = Debug|Any CPU
{889FEA56-1927-40F8-B7EC-D6A10EF65429}.Release|Any CPU.ActiveCfg = Release|Any CPU
{889FEA56-1927-40F8-B7EC-D6A10EF65429}.Release|Any CPU.Build.0 = Release|Any CPU
{D2A884B9-132F-470B-B36F-8C6723C19A7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2A884B9-132F-470B-B36F-8C6723C19A7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D2A884B9-132F-470B-B36F-8C6723C19A7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D2A884B9-132F-470B-B36F-8C6723C19A7E}.Release|Any CPU.Build.0 = Release|Any CPU
{5050AE00-54F5-42EF-86CA-5962784403CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5050AE00-54F5-42EF-86CA-5962784403CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5050AE00-54F5-42EF-86CA-5962784403CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5050AE00-54F5-42EF-86CA-5962784403CC}.Release|Any CPU.Build.0 = Release|Any CPU
{8EDAE882-B40E-493C-8858-450411335D4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EDAE882-B40E-493C-8858-450411335D4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EDAE882-B40E-493C-8858-450411335D4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDAE882-B40E-493C-8858-450411335D4B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D0835D34-0AC0-4AA1-A510-F09AD0BD2CBC}
EndGlobalSection
EndGlobal

116
AutoWeightServer/App.config

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<dataConfiguration defaultDatabase="BaseDb" />
<connectionStrings>
<!--<add name="ConnectionString" connectionString="Data Source=39.105.6.170; Initial Catalog=HFMesDB3;Persist Security Info=True;User ID=sa;Password=qwe123$$" providerName="System.Data.SqlClient" />-->
<!--<add name="BaseDb" connectionString="Data Source=127.0.0.1;port=3306;pooling=true;max pool size=50; min pool size=5;Initial Catalog=autoweight;user id=root;password=2LBd74KoapPCnZR9;charset=utf8" providerName="MySql.Data.MySqlClient" />-->
<add name="BaseDb" connectionString="Data Source=192.168.1.200;port=3308;pooling=true;max pool size=50; min pool size=5;Initial Catalog=autoweight;user id=root;password=root;charset=utf8" providerName="MySql.Data.MySqlClient" />
<!--<add name="AccessConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=C:\Works\Self\Pos\MyPos\MyPos\bin\Debug\DB\MyPos.mdb" />-->
</connectionStrings>
<appSettings>
<!--时间均为毫秒,按秒使用需换算,1秒=1000毫秒-->
<!--站点编号-->
<add key="SITE_Name" value="珠海1号站点" />
<!--入场前相机IP-->
<add key="CAMERA_ADDRESS1" value="192.168.1.81" />
<!--入场后相机IP-->
<add key="CAMERA_ADDRESS2" value="192.168.1.82" />
<!--出前相机IP-->
<add key="CAMERA_ADDRESS3" value="192.168.1.83" />
<!--出后相机IP-->
<add key="CAMERA_ADDRESS4" value="192.168.1.84" />
<add key="CAMERA_SOCKET_PORT" value="80" />
<add key="CAMERA_USERNAME" value="admin" />
<add key="CAMERA_PASSWORD" value="admin" />
<add key="AutoDetectInterval" value="6000" />
<!--称重-->
<add key="WT_COM" value="COM3" />
<add key="WT_BaudRate" value="9600" />
<add key="WT_ReceivedBytesThreshold" value="32" />
<add key="WT_Diff" value="0.01" />
<add key="WT_Interval" value="1000" />
<add key="WT_LenLimit" value="10" />
<add key="WT_DiscardInBuffer_Flag" value="1" />
<add key="WT_Transmit_Flag" value="0" />
<add key="WT_Transmit_Com" value="COM5" />
<!--指示灯继电器-->
<add key="Light_Relay_COM" value="COM4" />
<add key="Light_Relay_BaudRate" value="9600" />
<add key="Light_Interval" value="8000" />
<add key="Light_Blink" value="300" />
<!--Led控制-->
<add key="Led_Ip" value="192.168.1.85" />
<add key="Led_Port" value="5005" />
<add key="BoardThread_Interval" value="5000" />
<add key="Board_Type" value="1" />
<!--提示跑马灯-->
<add key="ScrollText_Interval" value="300" />
<add key="ScrollText_Gap" value="15" />
<!--超时检测-->
<add key="InTimeOut" value="600" />
<add key="OutTimeOut" value="600" />
<!--seconds 300s = 5min-->
<add key="Bill_Interval" value="300" />
<!--其它-->
<add key="SavePhoto_Day" value="90" />
<add key="IsPretreatPlate" value="1" />
<add key="ShowDebug" value="1" />
<add key="ShowTrailer" value="1" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<log4net>
<!--定义输出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<encoding value="UTF-8" />
<!--定义文件存放位置-->
<file value="log4j\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy\\MM\\yyyy-MM-dd'.txt'" />
<staticLogFileName value="false" />
<param name="MaxSizeRollBackups" value="100" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="【日志级别】%-5level 【记录时间】%date 【线程编号】[%thread]【执行时间】[%r]毫秒 【当前的类】%logger 属性[%property{NDC}] %n【日志描述】%message %n %n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<!--文件形式记录日志-->
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.12.0" newVersion="6.9.12.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>

438
AutoWeightServer/AutoWeightServer.csproj

@ -0,0 +1,438 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{889FEA56-1927-40F8-B7EC-D6A10EF65429}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EC.AutoWeightServer</RootNamespace>
<AssemblyName>AutoWeightServer</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>C:\Users\admin\Downloads\test\</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>
<AutorunEnabled>true</AutorunEnabled>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CodeAnalysisRuleSet>ManagedMinimumRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisIgnoreGeneratedCode>true</CodeAnalysisIgnoreGeneratedCode>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>title.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup>
<ManifestCertificateThumbprint>6C781F694AF53A12595BDA47852379AAC470125F</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>AutoWeightServer_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup>
<LangVersion>latestMajor</LangVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v20.2, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v20.2.Core, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v20.2.Core, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v20.2.Export, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v20.2.Core, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Sparkline.v20.2.Core, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Data.Desktop.v20.2, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v20.2, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v20.2, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraGrid.v20.2, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraLayout.v20.2, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v20.2, Version=20.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="EC.Data">
<HintPath>..\dll\EC.Data.dll</HintPath>
</Reference>
<Reference Include="EC.DataAccess, Version=2030.12.5.2, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\EC.DataAccess.dll</HintPath>
</Reference>
<Reference Include="EC.Util, Version=2019.12.8.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\EC.Util.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>..\dll\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=e44a2bc38ed2c13c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.EnterpriseLibrary.Common.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.EnterpriseLibrary.Data">
<HintPath>..\dll\Microsoft.Practices.EnterpriseLibrary.Data.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ObjectBuilder, Version=1.0.51206.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.ObjectBuilder.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ObjectBuilder2, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.ObjectBuilder2.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ServiceLocation">
<HintPath>..\dll\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.Unity.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.Unity.Configuration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="MySql.Data.Entity.EF6, Version=7.0.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\MySql.Data.Entity.EF6.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data.Entity" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.Data.OracleClient" />
<Reference Include="System.Design" />
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Remoting" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Speech" />
<Reference Include="System.Threading.Tasks.Extensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Program Files (x86)\DevExpress 14.1\Components\Bin\Framework\System.Windows.Interactivity.dll</HintPath>
</Reference>
<Reference Include="System.Xaml" />
<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" />
</ItemGroup>
<ItemGroup>
<Compile Include="Center\ServiceCenter.cs" />
<Compile Include="Center\LocalAttrCenter.cs" />
<Compile Include="Center\UiExtendCenter.cs" />
<Compile Include="Center\DeviceCenter.cs" />
<Compile Include="IfManager\FingerPrint\FingerPrintManager.cs" />
<Compile Include="IfManager\FingerPrint\TesoLiveSDK.cs" />
<Compile Include="IfManager\FingerPrint\FingerPrintParam.cs" />
<Compile Include="IfManager\LedZK\LedZKManager.cs" />
<Compile Include="IfManager\LedZK\LedZKSDK.cs" />
<Compile Include="IfManager\Light\ILightRelay.cs" />
<Compile Include="IfManager\Light\LightManager.cs" />
<Compile Include="IfManager\Light\LightRelay.cs" />
<Compile Include="IfManager\Scales\Scales.cs" />
<Compile Include="IfManager\Scales\ScalesZhuHai.cs" />
<Compile Include="IfManager\Speech\SpeakHelper.cs" />
<Compile Include="IfManager\YkPos\YkPosManager.cs" />
<Compile Include="IfManager\YkPos\YkPosSDK.cs" />
<Compile Include="Model\Config\VoiceConfig.cs" />
<Compile Include="Model\State\BillState.cs" />
<Compile Include="Model\State\CarState.cs" />
<Compile Include="Model\Type\PhotoType.cs" />
<Compile Include="UI\Base\FrmBase.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Base\FrmBase.Designer.cs">
<DependentUpon>FrmBase.cs</DependentUpon>
</Compile>
<Compile Include="UI\Base\FrmModalBase.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Base\FrmModalBase.Designer.cs">
<DependentUpon>FrmModalBase.cs</DependentUpon>
</Compile>
<Compile Include="UI\Base\FrmServerBase.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Base\FrmServerBase.Designer.cs">
<DependentUpon>FrmServerBase.cs</DependentUpon>
</Compile>
<Compile Include="Model\Config\BaseConfig.cs" />
<Compile Include="Model\Config\ServerConfig.cs" />
<Compile Include="Model\EventArgsEx\ScaleEventArgs.cs" />
<Compile Include="IfManager\Scales\IScales.cs" />
<Compile Include="IfManager\Scales\ScalesDefault.cs" />
<Compile Include="IfManager\Scales\ScalesManager.cs" />
<Compile Include="SDK\VzClientSDK.cs" />
<Compile Include="SDK\Win32API.cs" />
<Compile Include="IfManager\Speech\SpeakManager.cs" />
<Compile Include="Model\EventArgsEx\PlateEventArgs.cs" />
<Compile Include="UI\FrmBill.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmBill.Designer.cs">
<DependentUpon>FrmBill.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCCarIn.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCCarIn.Designer.cs">
<DependentUpon>UCCarIn.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCCarOut.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCCarOut.Designer.cs">
<DependentUpon>UCCarOut.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCLicensePlate.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCLicensePlate.Designer.cs">
<DependentUpon>UCLicensePlate.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCWelcome.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCWelcome.Designer.cs">
<DependentUpon>UCWelcome.cs</DependentUpon>
</Compile>
<Compile Include="UI\FrmMainServer.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmMainServer.Designer.cs">
<DependentUpon>FrmMainServer.cs</DependentUpon>
</Compile>
<Compile Include="UI\FrmPwdVerify.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmPwdVerify.Designer.cs">
<DependentUpon>FrmPwdVerify.cs</DependentUpon>
</Compile>
<Compile Include="UI\FrmSign.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmSign.Designer.cs">
<DependentUpon>FrmSign.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="UI\Base\FrmBase.resx">
<DependentUpon>FrmBase.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Base\FrmModalBase.resx">
<DependentUpon>FrmModalBase.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Base\FrmServerBase.resx">
<DependentUpon>FrmServerBase.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmBill.resx">
<DependentUpon>FrmBill.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmSign.resx">
<DependentUpon>FrmSign.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCCarIn.resx">
<DependentUpon>UCCarIn.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCCarOut.resx">
<DependentUpon>UCCarOut.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCLicensePlate.resx">
<DependentUpon>UCLicensePlate.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCWelcome.resx">
<DependentUpon>UCWelcome.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmMainServer.resx">
<DependentUpon>FrmMainServer.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmPwdVerify.resx">
<DependentUpon>FrmPwdVerify.cs</DependentUpon>
</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>
<None Include="App.config">
<SubType>Designer</SubType>
</None>
<None Include="AutoWeightServer_TemporaryKey.pfx" />
<None Include="packages.config" />
<None Include="Properties\app.manifest" />
<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>
<None Include="Voice.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Resources\绿灯警示60.png" />
<None Include="Resources\红灯警示60.png" />
<None Include="Resources\绿灯警示.png" />
<None Include="Resources\红灯警示.png" />
<None Include="Resources\标题.png" />
<None Include="Resources\绿灯闪烁60.gif" />
<None Include="Resources\红灯闪烁60.gif" />
<None Include="Resources\ok32.png" />
<None Include="Resources\ok64.png" />
<None Include="Resources\摄像头绿色64.png" />
<None Include="Resources\摄像头红色64.png" />
<None Include="Resources\删除64.png" />
<None Include="Resources\删除32.png" />
<None Include="Resources\打印 %283%29.png" />
<None Include="Resources\签字 %283%29.png" />
<None Include="Resources\签字.png" />
<None Include="Resources\关闭.png" />
<None Include="Resources\航天.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EC.Entity\EC.Entity.csproj">
<Project>{d2a884b9-132f-470b-b36f-8c6723c19a7e}</Project>
<Name>EC.Entity</Name>
</ProjectReference>
<ProjectReference Include="..\EC.Service\EC.Service.csproj">
<Project>{5050ae00-54f5-42ef-86ca-5962784403cc}</Project>
<Name>EC.Service</Name>
</ProjectReference>
<ProjectReference Include="..\EC.Utils\EC.Utils.csproj">
<Project>{8edae882-b40e-493c-8858-450411335d4b}</Project>
<Name>EC.Utils</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="Resources\Loading.gif" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Loading_80.gif" />
</ItemGroup>
<ItemGroup>
<COMReference Include="PRINTOCXLib">
<Guid>{730AE5F9-600F-4E53-A011-4724B722E52E}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\top1.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\top2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\max1.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\max2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\min.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo.bmp" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="Img\logo.bmp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="Resources\重置.png" />
<None Include="title.ico" />
<None Include="Resources\指纹.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

434
AutoWeightServer/AutoWeightServer.csproj.bak

@ -0,0 +1,434 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{889FEA56-1927-40F8-B7EC-D6A10EF65429}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EC.AutoWeightServer</RootNamespace>
<AssemblyName>AutoWeightServer</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>C:\Users\admin\Downloads\test\</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>
<AutorunEnabled>true</AutorunEnabled>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>title.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup>
<ManifestCertificateThumbprint>6C781F694AF53A12595BDA47852379AAC470125F</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>AutoWeightServer_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Sparkline.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraGrid.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraLayout.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="EC.Data">
<HintPath>..\dll\EC.Data.dll</HintPath>
</Reference>
<Reference Include="EC.DataAccess, Version=2030.12.5.2, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\EC.DataAccess.dll</HintPath>
</Reference>
<Reference Include="EC.Util, Version=2019.12.8.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\EC.Util.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>..\dll\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=e44a2bc38ed2c13c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.EnterpriseLibrary.Common.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.EnterpriseLibrary.Data">
<HintPath>..\dll\Microsoft.Practices.EnterpriseLibrary.Data.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ObjectBuilder, Version=1.0.51206.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.ObjectBuilder.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ObjectBuilder2, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.ObjectBuilder2.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ServiceLocation">
<HintPath>..\dll\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.Unity.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Microsoft.Practices.Unity.Configuration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="MySql.Data, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.6.9.12\lib\net45\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="MySql.Data.Entity.EF6, Version=7.0.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\MySql.Data.Entity.EF6.dll</HintPath>
</Reference>
<Reference Include="MySqlConnector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d33d3e53aa5f8c92, processorArchitecture=MSIL">
<HintPath>..\packages\MySqlConnector.1.2.0\lib\net45\MySqlConnector.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard1.1\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data.Entity" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.Data.OracleClient" />
<Reference Include="System.Design" />
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.Memory, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.0\lib\netstandard1.1\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Remoting" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Speech" />
<Reference Include="System.Threading.Tasks.Extensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Program Files (x86)\DevExpress 14.1\Components\Bin\Framework\System.Windows.Interactivity.dll</HintPath>
</Reference>
<Reference Include="System.Xaml" />
<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" />
</ItemGroup>
<ItemGroup>
<Compile Include="IfManager\FingerPrint\FingerPrintManager.cs" />
<Compile Include="IfManager\FingerPrint\TesoLiveSDK.cs" />
<Compile Include="IfManager\FingerPrint\FingerPrintParam.cs" />
<Compile Include="IfManager\Light\ILightRelay.cs" />
<Compile Include="IfManager\Light\LightManager.cs" />
<Compile Include="IfManager\Light\LightRelay.cs" />
<Compile Include="IfManager\Scales\Scales.cs" />
<Compile Include="IfManager\Scales\ScalesZhuHai.cs" />
<Compile Include="IfManager\Speech\SpeakHelper.cs" />
<Compile Include="IfManager\YkPos\YkPosManager.cs" />
<Compile Include="IfManager\YkPos\YkPosSDK.cs" />
<Compile Include="Model\State\BillState.cs" />
<Compile Include="Model\State\CarState.cs" />
<Compile Include="Model\Type\PhotoType.cs" />
<Compile Include="UI\Base\FrmBase.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Base\FrmBase.Designer.cs">
<DependentUpon>FrmBase.cs</DependentUpon>
</Compile>
<Compile Include="UI\Base\FrmModalBase.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Base\FrmModalBase.Designer.cs">
<DependentUpon>FrmModalBase.cs</DependentUpon>
</Compile>
<Compile Include="UI\Base\FrmServerBase.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Base\FrmServerBase.Designer.cs">
<DependentUpon>FrmServerBase.cs</DependentUpon>
</Compile>
<Compile Include="Model\Config\BaseConfig.cs" />
<Compile Include="Model\Config\ServerConfig.cs" />
<Compile Include="Model\EventArgsEx\ScaleEventArgs.cs" />
<Compile Include="IfManager\Scales\IScales.cs" />
<Compile Include="IfManager\Scales\ScalesDefault.cs" />
<Compile Include="IfManager\Scales\ScalesManager.cs" />
<Compile Include="SDK\VzClientSDK.cs" />
<Compile Include="SDK\Win32API.cs" />
<Compile Include="IfManager\Speech\SpeakManager.cs" />
<Compile Include="Model\EventArgsEx\PlateEventArgs.cs" />
<Compile Include="UI\FrmBill.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmBill.Designer.cs">
<DependentUpon>FrmBill.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCCarIn.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCCarIn.Designer.cs">
<DependentUpon>UCCarIn.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCCarOut.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCCarOut.Designer.cs">
<DependentUpon>UCCarOut.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCLicensePlate.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCLicensePlate.Designer.cs">
<DependentUpon>UCLicensePlate.cs</DependentUpon>
</Compile>
<Compile Include="UI\UC\UCWelcome.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\UC\UCWelcome.Designer.cs">
<DependentUpon>UCWelcome.cs</DependentUpon>
</Compile>
<Compile Include="UI\FrmMainServer.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmMainServer.Designer.cs">
<DependentUpon>FrmMainServer.cs</DependentUpon>
</Compile>
<Compile Include="UI\FrmPwdVerify.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmPwdVerify.Designer.cs">
<DependentUpon>FrmPwdVerify.cs</DependentUpon>
</Compile>
<Compile Include="UI\FrmSign.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FrmSign.Designer.cs">
<DependentUpon>FrmSign.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="UI\Base\FrmBase.resx">
<DependentUpon>FrmBase.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Base\FrmModalBase.resx">
<DependentUpon>FrmModalBase.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Base\FrmServerBase.resx">
<DependentUpon>FrmServerBase.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmBill.resx">
<DependentUpon>FrmBill.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmSign.resx">
<DependentUpon>FrmSign.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCCarIn.resx">
<DependentUpon>UCCarIn.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCCarOut.resx">
<DependentUpon>UCCarOut.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCLicensePlate.resx">
<DependentUpon>UCLicensePlate.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\UC\UCWelcome.resx">
<DependentUpon>UCWelcome.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmMainServer.resx">
<DependentUpon>FrmMainServer.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FrmPwdVerify.resx">
<DependentUpon>FrmPwdVerify.cs</DependentUpon>
</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>
<None Include="App.config">
<SubType>Designer</SubType>
</None>
<None Include="AutoWeightServer_TemporaryKey.pfx" />
<None Include="packages.config" />
<None Include="Properties\app.manifest" />
<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>
</ItemGroup>
<ItemGroup>
<None Include="Resources\绿灯警示60.png" />
<None Include="Resources\红灯警示60.png" />
<None Include="Resources\绿灯警示.png" />
<None Include="Resources\红灯警示.png" />
<None Include="Resources\标题.png" />
<None Include="Resources\绿灯闪烁60.gif" />
<None Include="Resources\红灯闪烁60.gif" />
<None Include="Resources\ok32.png" />
<None Include="Resources\ok64.png" />
<None Include="Resources\摄像头绿色64.png" />
<None Include="Resources\摄像头红色64.png" />
<None Include="Resources\删除64.png" />
<None Include="Resources\删除32.png" />
<None Include="Resources\打印 %283%29.png" />
<None Include="Resources\签字 %283%29.png" />
<None Include="Resources\签字.png" />
<None Include="Resources\关闭.png" />
<None Include="Resources\航天.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EC.Entity\EC.Entity.csproj">
<Project>{d2a884b9-132f-470b-b36f-8c6723c19a7e}</Project>
<Name>EC.Entity</Name>
</ProjectReference>
<ProjectReference Include="..\EC.Service\EC.Service.csproj">
<Project>{5050ae00-54f5-42ef-86ca-5962784403cc}</Project>
<Name>EC.Service</Name>
</ProjectReference>
<ProjectReference Include="..\EC.Utils\EC.Utils.csproj">
<Project>{8edae882-b40e-493c-8858-450411335d4b}</Project>
<Name>EC.Utils</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="Resources\Loading.gif" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Loading_80.gif" />
</ItemGroup>
<ItemGroup>
<COMReference Include="PRINTOCXLib">
<Guid>{730AE5F9-600F-4E53-A011-4724B722E52E}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\top1.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\top2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\max1.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\max2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\min.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo.bmp" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="Img\logo.bmp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="Resources\重置.png" />
<None Include="title.ico" />
<None Include="Resources\指纹.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

381
AutoWeightServer/Center/DeviceCenter.cs

@ -0,0 +1,381 @@
using EC.AutoWeightServer.IfManager.FingerPrint;
using EC.AutoWeightServer.IfManager.LedZK;
using EC.AutoWeightServer.IfManager.Light;
using EC.AutoWeightServer.IfManager.Scales;
using EC.AutoWeightServer.IfManager.YkPos;
using EC.AutoWeightServer.Model.Config;
using EC.AutoWeightServer.UI;
using EC.AutoWeightServer.UI.UC;
using EC.Entity.Transport;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace EC.AutoWeightServer.Center
{
public class DeviceCenter
{
private FrmMainServer _mainServer { get; set; }
internal UCLicensePlate PlateManager1 { get; set; }
internal UCLicensePlate PlateManager2 { get; set; }
internal UCLicensePlate PlateManager3 { get; set; }
internal UCLicensePlate PlateManager4 { get; set; }
/// <summary>
/// 称重管理
/// </summary>
internal ScalesManager ScalesManager { get; set; }
/// <summary>
/// 灯光控制
/// </summary>
internal LightManager LightManager { get; set; }
/// <summary>
/// 指纹识别
/// </summary>
internal FingerPrintManager FPManager { get; set; }
/// <summary>
/// Led控制
/// </summary>
internal LedZKManager LedZKManager { get; set; }
public DeviceCenter()
{
}
public DeviceCenter(FrmMainServer mainServer)
{
_mainServer = mainServer;
PlateManager1 = mainServer.ucLicensePlate1;
PlateManager2 = mainServer.ucLicensePlate2;
PlateManager3 = mainServer.ucLicensePlate3;
PlateManager4 = mainServer.ucLicensePlate4;
}
#region Gather
public void OpenDevices()
{
OpenCameraServer();
OpenWeightServer();
OpenLightServer();
OpenLedServer();
OpenFingerPrintServer();
OpenYkPosServer();
}
public void CloseDevices()
{
//CloseCameraServer();
//CloseWeightServer();
//CloseLightServer();
//CloseFingerPrintServer();
//CloseYkPosServer();
//CloseLedServer();
}
public void CheckDevicesConnect()
{
var msgList = new List<string>();
if (!PlateManager1.IsDeviceConnected())
msgList.Add("1号摄像头未连接");
if (!PlateManager2.IsDeviceConnected())
msgList.Add("2号摄像头未连接");
if (!PlateManager3.IsDeviceConnected())
msgList.Add("3号摄像头未连接");
if (!PlateManager4.IsDeviceConnected())
msgList.Add("4号摄像头未连接");
if (ScalesManager == null || !ScalesManager.IsOpen())
msgList.Add("地磅接口未连接");
if (LightManager == null || !LightManager.IsOpen())
msgList.Add("灯光接口未连接");
if (FPManager == null || !FPManager.IsConnected())
msgList.Add("指纹接口未连接");
if (LedZKManager == null || !LedZKManager.IsConnected())
msgList.Add("Led屏未连接");
if (!YkPosManager.IsConnected())
{
msgList.Add("打印接口未连接");
}
else
{
if (YkPosManager.IsPaperExhaust())
msgList.Add("打印接口纸尽");
//if (YkPosManager.IsPaperWillExhaust())
// msgList.Add("打印接口纸将尽");
}
var msg = string.Join("\n", msgList.ToArray());
if (!string.IsNullOrEmpty(msg))
UiExtendCenter.ShowErrorMsgBox(msg);
}
#endregion Gather
#region CameraServer
private void OpenCameraServer()
{
var address1 = ServerConfig.CameraAddress1;
var address2 = ServerConfig.CameraAddress2;
var address3 = ServerConfig.CameraAddress3;
var address4 = ServerConfig.CameraAddress4;
var port = ServerConfig.CameraSocketPort;
var username = ServerConfig.CameraUsername;
var password = ServerConfig.CameraPassword;
try
{
PlateManager1.InitForm(address1, port, username, password);
var enableOpen = PlateManager1.OpenDevice();
if (enableOpen)
FileUnit.Log(address1 + "打开成功 相机1");
else
FileUnit.Log(address1 + "打开失败 相机1");
PlateManager2.InitForm(address2, port, username, password);
enableOpen = PlateManager2.OpenDevice();
if (enableOpen)
FileUnit.Log(address2 + "打开成功 相机2");
else
FileUnit.Log(address2 + "打开失败 相机2");
PlateManager3.InitForm(address3, port, username, password);
enableOpen = PlateManager3.OpenDevice();
if (enableOpen)
FileUnit.Log(address3 + "打开成功 相机3");
else
FileUnit.Log(address3 + "打开失败 相机3");
PlateManager4.InitForm(address4, port, username, password);
enableOpen = PlateManager4.OpenDevice();
if (enableOpen)
FileUnit.Log(address4 + "打开成功 相机4");
else
FileUnit.Log(address4 + "打开失败 相机4");
}
catch (Exception ex)
{
LogUnit.Error(ex.Message);
}
}
private void CloseCameraServer()
{
PlateManager1.CloseForm();
PlateManager2.CloseForm();
PlateManager3.CloseForm();
PlateManager4.CloseForm();
}
/// <summary>
/// 通过2号摄像头(入场后摄像头)拍摄照片,并返回照片路径
/// </summary>
/// <param name="license"></param>
/// <returns></returns>
internal string GetInPicture2(string license)
{
return PlateManager2.GetPlatePic(license);
}
/// <summary>
/// 通过4号摄像头(出场后摄像头)拍摄照片,并返回照片路径
/// </summary>
/// <param name="license"></param>
/// <returns></returns>
internal string GetOutPicture2(string license)
{
return PlateManager4.GetPlatePic(license);
}
#endregion CameraServer
#region ScalesManager
public void OpenWeightServer()
{
var com = ServerConfig.WtCom;
var rate = ServerConfig.WtBaudRate;
var receivedBytesThreshold = ServerConfig.WtReceivedBytesThreshold;
ScalesManager = new ScalesManager(com, rate, receivedBytesThreshold);
ScalesManager.StartServer();
}
public void CloseWeightServer()
{
ScalesManager?.StopServer();
ScalesManager = null;
}
#endregion ScalesManager
#region LightManager
public void OpenLightServer()
{
var com = ServerConfig.LightRelayCom;
var rate = ServerConfig.LightRelayBaudRate;
LightManager = new LightManager(com, rate);
LightManager.StartServer();
}
public void CloseLightServer()
{
LightManager?.StopServer();
LightManager = null;
}
#endregion LightManager
#region LedZKManager
public void OpenLedServer()
{
var ip = ServerConfig.LedIp;
var port = (ushort)ServerConfig.LedPort;
LedZKManager = new LedZKManager(ip, port);
LedZKManager.StartServer();
}
public void CloseLedServer()
{
LedZKManager?.StopServer();
LedZKManager = null;
}
#endregion LedZKManager
#region FingerPrintManager
public void OpenFingerPrintServer()
{
FPManager = new FingerPrintManager();
FPManager.StartServer();
FPManager.SetVerBoxAble(true);//设置验证窗体开启
FPManager.SetVerTime(30 * 1000);//设置认证窗口超时时间
}
public void CloseFingerPrintServer()
{
FPManager?.StopServer();
FPManager = null;
}
/// <summary>
/// 获取特征指纹
/// </summary>
/// <returns></returns>
public string GetVerFingerPrint()
{
var fp = string.Empty;
var stat = FPManager.GetVerFingerPrint(ref fp);
return stat ? fp : string.Empty;
}
/// <summary>
/// 比对指纹
/// </summary>
/// <param name="regFp"></param>
/// <param name="verFp"></param>
/// <returns></returns>
public bool MatchFingerPrint(string regFp, string verFp)
{
return FPManager.MatchFingerPrint(regFp, verFp);
}
#endregion FingerPrintManager
#region YkPosManager
public void OpenYkPosServer()
{
YkPosManager.OpenDevice();
}
public void CloseYkPosServer()
{
YkPosManager.CloseDevice();
}
/// <summary>
/// 打印运单
/// </summary>
/// <param name="billEntity"></param>
public void PrintBill(TransportBillEntity billEntity)
{
if (!YkPosManager.IsConnected() || YkPosManager.IsPaperExhaust())
{
var msg = "打印接口纸尽,请联系管理人员";
_mainServer?.SetScrollLabelText(msg);
_mainServer?.ShowRecvMessage(msg);
return;
}
if (billEntity == null)
return;
YkPosManager.InitPrinter();
var bmpPath = Path.Combine(Directory.GetCurrentDirectory(), Path.Combine("Img", "logo.bmp"));
YkPosManager.SetAlign(1);//居中
YkPosManager.PrintRasterBmp(new StringBuilder(bmpPath));//打印图片
//YkPosManager.InitPrinter();//重置
//YkPosManager.SetAlign(1);//居中
YkPosManager.SetEmphasized(1);//字体加粗
//YkPosManager.SetCharSize(1,1);//字体放大
YkPosManager.PrintStr(new StringBuilder($"{_mainServer.LocalAttrCenter.Company.F_FullName}\n"));//打印公司名
YkPosManager.InitPrinter();//重置
YkPosManager.SetAlign(1);//居中
YkPosManager.PrintStr(new StringBuilder("========================================\n"));//打印分隔符
//YkPosManager.InitPrinter();//重置
YkPosManager.SetAlign(0);//居左
YkPosManager.SetLeftMargin(8 * 8, 0);//设置左边距
var content = new StringBuilder();
content.Append($"场地:\t{billEntity.SiteName}\n");
content.Append($"运单号:\t{billEntity.SerialNumber}\n");
content.Append($"供应商:\t{billEntity.SupplierName}\n");
content.Append($"运输车:\t{billEntity.LicensePlate}\n");
content.Append($"挂车:\t{billEntity.TrailerPlate}\n");
content.Append($"运输员:\t{billEntity.DriverName}\n");
content.Append($"押运员:\t{billEntity.Driver2Name}\n");
content.Append($"料号:\t{billEntity.MaterialNo}\n");
YkPosManager.PrintStr(content);//打印内容
YkPosManager.InitPrinter();//重置
YkPosManager.SetAlign(1);//居中
YkPosManager.PrintStr(new StringBuilder("----------------------------------------\n"));//打印分隔符
//YkPosManager.InitPrinter();//重置
YkPosManager.SetAlign(0);//居左
YkPosManager.SetLeftMargin(8 * 8, 0);//设置左边距
content = new StringBuilder();
content.Append($"运单重量:\t{billEntity.BillWeight}吨\n");
content.Append($"入场重量:\t{billEntity.InWeight}吨\n");
content.Append($"出场重量:\t{billEntity.OutWeight}吨\n");
content.Append($"实际重量:\t{billEntity.NetWeight}吨\n");
content.Append($"达标率:\t{billEntity.StandardRate}%\n");
content.Append($"入场时间:\t{billEntity.InStartTime:yyyy/MM/dd HH:mm:ss}\n");
content.Append($"出场时间:\t{billEntity.OutFinishTime:yyyy/MM/dd HH:mm:ss}\n");
//content.Append($"运单状态:\t{BillStateExt.GetBillStateDesc(billEntity.State)}\n");
YkPosManager.PrintStr(content);//打印内容
YkPosManager.InitPrinter();//重置
YkPosManager.SetAlign(1);//居中
YkPosManager.PrintStr(new StringBuilder("========================================\n"));
//YkPosManager.InitPrinter();//重置
YkPosManager.SetAlign(2);//居右
//YkPosManager.PrintStr(new StringBuilder($"管理员:{user?.F_RealName}\n"));
YkPosManager.PrintStr(new StringBuilder($"出票时间:{DateTime.Now:yyyy/MM/dd HH:mm:ss}\n"));//打印页脚
YkPosManager.FeedPaper();//走纸,留空隙
YkPosManager.CutPaper();//切纸
}
#endregion YkPosManager
}
}

202
AutoWeightServer/Center/LocalAttrCenter.cs

@ -0,0 +1,202 @@
using EC.AutoWeightServer.Model.Config;
using EC.AutoWeightServer.Model.State;
using EC.Entity.Organization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace EC.AutoWeightServer.Center
{
public class LocalAttrCenter
{
public CompanyEntity Company { get; set; }
public UserEntity User { get; set; }
public SiteEntity Site { get; set; }
#region Gather
/// <summary>
/// 检测服务端配置
/// </summary>
public void CheckSiteConfig()
{
Site = ServiceCenter.SiteService.GetSiteByName(ServerConfig.SiteName);
if (Site == null)
{
UiExtendCenter.ShowErrorMsgBox("站点认证失败!");
Environment.Exit(1);
}
//User = UiExtendCenter.LoginUser();
Company = ServiceCenter.CompanyService.SelectEntityByWhere($"F_CompanyId='{Site.CompanyId}'");
}
#endregion Gather
#region CarState
private CarState CarState { get; set; } = CarState.Empty;
private readonly object _lockCarStateObj = new object();
/// <summary>
/// 锁读 CarState
/// </summary>
/// <returns></returns>
internal CarState GetCarState()
{
lock (_lockCarStateObj)
{
return CarState;
}
}
/// <summary>
/// 锁写 CarState
/// </summary>
/// <param name="state"></param>
internal void SetCarState(CarState state)
{
lock (_lockCarStateObj)
{
CarState = state;
}
}
#endregion CarState
#region WeightList
private readonly List<decimal> _weightList = new List<decimal>();
private readonly object _lockWeightObj = new object();
private readonly int _lenLimit = ServerConfig.WtLenLimit; //用于判断的长度
private bool IsWeightListEmpty()
{
return _weightList.Count <= 0;
}
private bool IsWeightListFull()
{
return _weightList.Count >= _lenLimit;
}
/// <summary>
/// 清理 WeightList
/// </summary>
private void ClearWeightList()
{
_weightList.Clear();
}
/// <summary>
/// 获取平均重量
/// </summary>
/// <returns></returns>
private decimal GetAvgWeight()
{
return !IsWeightListEmpty() ? _weightList.Average() : 0;
}
/// <summary>
/// 添加 Weight
/// </summary>
/// <param name="weight"></param>
public void AppendWeight(decimal weight)
{
lock (_lockWeightObj)
{
while (IsWeightListFull())
{
_weightList.RemoveAt(0);
}
_weightList.Add(weight);
}
}
/// <summary>
/// 获取稳定重量
/// </summary>
/// <param name="weight"></param>
/// <returns></returns>
public decimal? GetStableWeight()
{
lock (_lockWeightObj)
{
if (!IsWeightListFull())
return null;
var lastWeight = _weightList.Last();
var avgWeight = GetAvgWeight();
if (avgWeight <= 0)
return null;
var diff = Math.Abs(lastWeight - avgWeight) / avgWeight;
return diff <= ServerConfig.WtDiff ? (decimal?)avgWeight : null;
}
}
/// <summary>
/// 通过自动计重判断油车是否进入
/// </summary>
/// <returns></returns>
public bool IsCarInDelayWeight()
{
lock (_lockWeightObj)
{
if (!IsWeightListFull())
return false;
var frontAvgWeight = _weightList.Take(_lenLimit / 2).Average();
return frontAvgWeight > 0;
}
}
/// <summary>
/// 通过自动计重判断油车是否离开
/// </summary>
/// <returns></returns>
public bool IsCarOutDelayWeight()
{
lock (_lockWeightObj)
{
if (!IsWeightListFull())
return false;
var backAvgWeight = _weightList.Skip(_lenLimit / 2).Average();
return backAvgWeight <= 0;
}
}
#endregion WeightList
#region ControlLightState
private bool _lightState;
private readonly ReaderWriterLockSlim _lightLock = new ReaderWriterLockSlim();
public void SetLightState(bool state)
{
lock (_lightLock)
{
_lightState = state;
}
}
public bool IsLightOn()
{
lock (_lightLock)
{
return Equals(_lightState, true);
}
}
public bool IsLightOff()
{
lock (_lightLock)
{
return Equals(_lightState, false);
}
}
#endregion ControlLightState
}
}

259
AutoWeightServer/Center/ServiceCenter.cs

@ -0,0 +1,259 @@
using EC.Service.Organization;
using EC.Service.Transport;
using System;
using System.Collections.Generic;
namespace EC.AutoWeightServer.Center
{
public class ServiceCenter
{
private static CompanyService _companyService;
private static UserService _userService;
private static SiteService _siteService;
private static SupplierService _supplierService;
private static TruckService _truckService;
private static TrailerService _trailerService;
private static DriverService _driverService;
private static AuthService _authService;
private static IniService _iniService;
private static MonthPlanService _monthPlanService;
private static TransportBillService _billService;
private static PhotoService _photoService;
private static readonly Dictionary<Type, object> LockDict = new Dictionary<Type, object>();
private static readonly object LockDictObj = new object();
private static object GetLockDictObj(Type type)
{
if (!LockDict.ContainsKey(type))
{
lock (LockDictObj)
{
if (!LockDict.ContainsKey(type))
{
LockDict.Add(type, new object());
}
}
}
return LockDict[type];
}
public static CompanyService CompanyService
{
get
{
{
lock (GetLockDictObj(typeof(CompanyService)))
{
if (_companyService == null)
{
_companyService = new CompanyService();
}
}
}
return _companyService;
}
}
public static UserService UserService
{
get
{
if (_userService == null)
{
lock (GetLockDictObj(typeof(UserService)))
{
if (_userService == null)
{
_userService = new UserService();
}
}
}
return _userService;
}
}
public static SiteService SiteService
{
get
{
if (_siteService == null)
{
lock (GetLockDictObj(typeof(CompanyService)))
{
if (_siteService == null)
{
_siteService = new SiteService();
}
}
}
return _siteService;
}
}
public static SupplierService SupplierService
{
get
{
if (_supplierService == null)
{
lock (GetLockDictObj(typeof(SupplierService)))
{
if (_supplierService == null)
{
_supplierService = new SupplierService();
}
}
}
return _supplierService;
}
}
public static DriverService DriverService
{
get
{
if (_driverService == null)
{
lock (GetLockDictObj(typeof(DriverService)))
{
if (_driverService == null)
{
_driverService = new DriverService();
}
}
}
return _driverService;
}
}
public static TruckService TruckService
{
get
{
if (_truckService == null)
{
lock (GetLockDictObj(typeof(TruckService)))
{
if (_truckService == null)
{
_truckService = new TruckService();
}
}
}
return _truckService;
}
}
public static TrailerService TrailerService
{
get
{
if (_trailerService == null)
{
lock (GetLockDictObj(typeof(TrailerService)))
{
if (_trailerService == null)
{
_trailerService = new TrailerService();
}
}
}
return _trailerService;
}
}
public static AuthService AuthService
{
get
{
if (_authService == null)
{
lock (GetLockDictObj(typeof(AuthService)))
{
if (_authService == null)
{
_authService = new AuthService();
}
}
}
return _authService;
}
}
public static IniService IniService
{
get
{
if (_iniService == null)
{
lock (GetLockDictObj(typeof(IniService)))
{
if (_iniService == null)
{
_iniService = new IniService();
}
}
}
return _iniService;
}
}
public static MonthPlanService MonthPlanService
{
get
{
if (_monthPlanService == null)
{
lock (GetLockDictObj(typeof(MonthPlanService)))
{
if (_monthPlanService == null)
{
_monthPlanService = new MonthPlanService();
}
}
}
return _monthPlanService;
}
}
public static TransportBillService BillService
{
get
{
if (_billService == null)
{
lock (GetLockDictObj(typeof(TransportBillService)))
{
if (_billService == null)
{
_billService = new TransportBillService();
}
}
}
return _billService;
}
}
public static PhotoService PhotoService
{
get
{
if (_photoService == null)
{
lock (GetLockDictObj(typeof(PhotoService)))
{
if (_photoService == null)
{
_photoService = new PhotoService();
}
}
}
return _photoService;
}
}
}
}

86
AutoWeightServer/Center/UiExtendCenter.cs

@ -0,0 +1,86 @@
using EC.AutoWeightServer.UI;
using EC.Entity.Organization;
using System;
using System.Windows.Forms;
namespace EC.AutoWeightServer.Center
{
public class UiExtendCenter
{
public static UserEntity LoginUser()
{
var frmLogin = new FrmPwdVerify()
{
StartPosition = FormStartPosition.CenterScreen,
TopMost = true
};
var ret = frmLogin.ShowDialog();
if (ret != DialogResult.Yes)
Environment.Exit(1);
return frmLogin.user;
}
public static bool VerifyUser(UserEntity tempUser)
{
var frmLogin = new FrmPwdVerify()
{
StartPosition = FormStartPosition.CenterScreen,
TopMost = true,
ShowInTaskbar = false
};
if (tempUser != null)
frmLogin.LockAccount(tempUser);
var ret = frmLogin.ShowDialog();
return ret == DialogResult.Yes;
}
public static void ShowBillFrame(FrmMainServer mainServer)
{
var frm = new FrmBill(mainServer)
{
StartPosition = FormStartPosition.CenterScreen,
TopMost = true,
ShowInTaskbar = false
};
frm.ShowDialog();
}
#region MessageBox
/// <summary>
/// 信息提示框
/// </summary>
/// <param name="msg"></param>
public static void ShowMsgBox(string msg)
{
MessageBox.Show(msg);
}
public static DialogResult ShowConfirmBox(string msg)
{
var ret = MessageBox.Show(msg, @"确认",
MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
return ret;
}
/// <summary>
/// 警告提示框
/// </summary>
/// <param name="msg"></param>
public static void ShowWarnMsgBox(string msg)
{
MessageBox.Show(msg, @"警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
/// <summary>
/// 错误提示框
/// </summary>
/// <param name="msg"></param>
public static void ShowErrorMsgBox(string msg)
{
MessageBox.Show(msg, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endregion MessageBox
}
}

7
AutoWeightServer/Center/VariableCenter.cs

@ -0,0 +1,7 @@
namespace EC.AutoWeightServer.Center
{
public class VariableCenter
{
}
}

231
AutoWeightServer/IfManager/FingerPrint/FingerPrintManager.cs

@ -0,0 +1,231 @@
using System.Text;
namespace EC.AutoWeightServer.IfManager.FingerPrint
{
/// <summary>
/// 暂时只测试了 USB 接口
/// </summary>
public class FingerPrintManager
{
//连接参数
private readonly FingerPrintParam _fpParam;
//通讯句柄
private int _handle;
//返回码
private int _ret;
public FingerPrintManager()
{
_fpParam = new FpUsbParam();
}
public FingerPrintManager(FingerPrintParam fpParam)
{
_fpParam = fpParam;
}
#region Start & Stop Server
/// <summary>
/// 开启服务
/// </summary>
/// <returns></returns>
public bool StartServer()
{
_ret = TesoLiveSDK.TcCreateHDL(_fpParam.Port, _fpParam.NPort, _fpParam.NRidx, _fpParam.NSped);
_handle = _ret;
return _ret >= 0;
}
/// <summary>
/// 停止服务
/// </summary>
/// <returns></returns>
public bool StopServer()
{
if (!IsConnected())
return true;
_ret = TesoLiveSDK.TcDeleteHDL(_handle);
if (_ret < 0)
return false;
_handle = -1;
return true;
}
#endregion Start & Stop Server
#region Tool Methods
/// <summary>
/// 获取设备内核号
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public bool GetDevKerNel(ref string data)
{
if (!IsConnected())
return false;
var builder = new StringBuilder();
_ret = TesoLiveSDK.TcGetDevVsin(_handle, builder);
data = _ret >= 0 ? builder.ToString() : string.Empty;
return _ret >= 0;
}
/// <summary>
/// 获取设备序列号
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public bool GetDevSn(ref string data)
{
if (!IsConnected())
return false;
var builder = new StringBuilder();
_ret = TesoLiveSDK.TcReadDevSn(_handle, builder);
data = _ret >= 0 ? builder.ToString() : string.Empty;
return _ret >= 0;
}
/// <summary>
/// 注册窗体默认开启
/// </summary>
/// <param name="able"></param>
/// <returns></returns>
public bool SetRegBoxAble(bool able)
{
if (!IsConnected())
return false;
var nIdx = 16;//#define T_SHOWREG 16 弹出注册窗体
var nVal = able ? 1 : 0;
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, nVal, null);
return _ret >= 0;
}
/// <summary>
/// 认证窗体默认关闭
/// </summary>
/// <param name="able"></param>
/// <returns></returns>
public bool SetVerBoxAble(bool able)
{
if (!IsConnected())
return false;
var nIdx = 17;//#define T_SHOWVER 17 弹出认证窗体
var nVal = able ? 1 : 0;
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, nVal, null);
return _ret >= 0;
}
/// <summary>
/// 控制设备上的 LED 闪灯和 BUZZER 蜂鸣,声光同时提示
/// </summary>
/// <param name="mode">0=短嘀,1=长嘀,2=嘀嘀</param>
/// <returns></returns>
public bool SetBeepLight(int mode)
{
if (!IsConnected())
return false;
mode %= 3;
_ret = TesoLiveSDK.TcBeepLight(_handle, mode);
return _ret >= 0;
}
/// <summary>
/// 设置注册窗口等待时间
/// </summary>
/// <param name="msTime">超时量默认 30000</param>
/// <returns></returns>
public bool SetRegTime(int msTime)
{
if (!IsConnected())
return false;
var nIdx = 6;//#define T_REGTMOT 6 注册 ms 超时量=30000
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, msTime, null);
return _ret >= 0;
}
/// <summary>
/// 设置认证窗口等待时间
/// </summary>
/// <param name="msTime">超时量默认 18000</param>
/// <returns></returns>
public bool SetVerTime(int msTime)
{
if (!IsConnected())
return false;
var nIdx = 7;//#define T_VERTMOT 7 认证 ms 超时量=18000
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, msTime, null);
return _ret >= 0;
}
/// <summary>
/// 获取指纹模板
/// </summary>
/// <param name="regFp"></param>
/// <returns></returns>
public bool GetRegFingerPrint(ref string regFp)
{
if (!IsConnected())
return false;
var builder = new byte[513];
_ret = TesoLiveSDK.TcDoTemplet(_handle, builder);
regFp = Encoding.ASCII.GetString(builder).Trim('\0');
return _ret >= 0;
}
/// <summary>
/// 获取指纹特征
/// </summary>
/// <param name="verFp"></param>
/// <returns></returns>
public bool GetVerFingerPrint(ref string verFp)
{
if (!IsConnected())
return false;
var builder = new byte[513];
_ret = TesoLiveSDK.TcDoFeature(_handle, builder);
verFp = Encoding.ASCII.GetString(builder).Trim('\0');
return _ret >= 0;
}
/// <summary>
/// 对比指纹模板和特征
/// </summary>
/// <param name="regFp"></param>
/// <param name="verFp"></param>
/// <returns></returns>
public bool MatchFingerPrint(string regFp, string verFp)
{
if (!IsConnected())
return false;
if (string.IsNullOrEmpty(regFp) || string.IsNullOrEmpty(verFp))
return false;
_ret = TesoLiveSDK.TcSafeMatch(_handle, verFp, regFp);
return _ret >= 0;
}
/// <summary>
/// 判断设备是否连接
/// </summary>
/// <returns></returns>
public bool IsConnected()
{
var builder = new StringBuilder();
_ret = TesoLiveSDK.TcReadDevSn(_handle, builder);
return _ret >= 0;
}
/// <summary>
/// 返回函数运行返回码
/// </summary>
/// <returns>返回码</returns>
public int GetResultCode()
{
return _ret;
}
#endregion Tool Methods
}
}

71
AutoWeightServer/IfManager/FingerPrint/FingerPrintParam.cs

@ -0,0 +1,71 @@
namespace EC.AutoWeightServer.IfManager.FingerPrint
{
/// <summary>
/// 基础连接参数
/// </summary>
public class FingerPrintParam
{
/// <summary>
/// 协议号(USB=0,COM=2)
/// </summary>
public int NPort { get; set; }
/// <summary>
/// 端口号 通讯端口号(USB=0,COM=[1, 255])
/// </summary>
public int Port { get; set; }
/// <summary>
/// 波特率索引号(波特率级别,默认给 3,即 9600,如表 1 所示)
/// </summary>
public int NRidx { get; set; }
/// <summary>
/// 串口是否提速(USB=0,COM=2)
/// </summary>
public int NSped { get; set; }
public bool IsUsb()
{
return NPort.Equals(0);
}
public bool IsCom()
{
return NPort.Equals(2);
}
public int GetPortType()
{
return NPort.Equals(0) ? 0 : 1;
}
}
/// <summary>
/// USB 连接参数
/// </summary>
public class FpUsbParam : FingerPrintParam
{
public FpUsbParam()
{
NPort = 0;
Port = 0;
NRidx = 3;
NSped = 0;
}
}
/// <summary>
/// Com 连接参数
/// </summary>
public class FpComParam : FingerPrintParam
{
public FpComParam()
{
NPort = 2;
Port = 1;
NRidx = 3;
NSped = 2;
}
}
}

294
AutoWeightServer/IfManager/FingerPrint/TesoLiveSDK.cs

@ -0,0 +1,294 @@
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace EC.AutoWeightServer.IfManager.FingerPrint
{
/// <summary>
/// <para>指纹动态库有两套独立的对外接口,一套是简单接口,一套是复杂接口;</para>
/// <para>简单接口以函数名 FPI 开始,调用接口较少,开发者不用关心底层调用,直接调用对外接口即可,使用非常简单。但是这种方式相呆板,不能够进行配置。</para>
/// <para>复杂接口以函数名 Tc 开始,调用接口较多,需要自己对指纹设备或者算法进行控制,当然,也可以使用默认值。复杂接口可以非常灵活的使用,可以对一些功能进行配置,例如,是否显示对话框,配置超时时间等功能。</para>
/// </summary>
public class TesoLiveSDK
{
#region FPI(No Test)
/// <summary>
/// 获得注册指纹模板。驱动 USB 指纹设备时,可以获得图像
/// </summary>
/// <param name="nPort">端口号,0=USB,1=COM1,2=COM2,3=COM3...</param>
/// <param name="pRegBuf">输出的 B64 模板缓冲,最大 513 字节(含'\0'结束符)</param>
/// <param name="pnRegLen">返回注册指纹模板实际长度(不含'\0'结束符)</param>
/// <param name="pszErrMsg">返回出错时字符串信息,最大 64 字节(含'\0'结束符)</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int FPIGetTemplate(int nPort, byte[] pRegBuf, ref int pnRegLen, byte[] pszErrMsg);
//public static extern int FPIGetTemplate(int nPort, ref string pRegBuf, ref int pnRegLen, ref string pszErrMsg);
//int FPIGetTemplate(int nPort, char* pRegBuf, int* pnRegLen, char* pszErrMsg);
/// <summary>
/// 获得验证用的指纹特征;驱动 USB 指纹设备时,可以获得图像
/// </summary>
/// <param name="nPort">端口号,0=USB,1=COM1,2=COM2,3=COM3...</param>
/// <param name="pVerBuf">输出的 B64 特征缓冲,最大 513 字节(含'\0'结束符)</param>
/// <param name="pnVerLen">返回验证指纹特征实际长度(不含'\0'结束符)</param>
/// <param name="pszErrMsg">返回出错时字符串信息,最大 64 字节(含'\0'结束符)</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int FPIGetFeature(int nPort, ref byte pVerBuf, ref int pnVerLen, ref byte pszErrMsg);
//int FPIGetFeature(int nPort, char* pVerBuf, int* pnVerLen, char* pszErrMsg);
/// <summary>
/// 比对采集时得到的模板和特征数据,可指定安全级
/// </summary>
/// <param name="pRegBuf">输入的 B64 模板数据,最大 513 字节(含'\0'结束符)</param>
/// <param name="pVerBuf">输入的 B64 特征数据,最大 513 字节(含'\0'结束符)</param>
/// <param name="nLevel">全级别,数字[1, 5],默认为 3 级别</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int FPIMatch(string pRegBuf, string pVerBuf, int nLevel = 3);
//int FPIMatch(const char* pRegBuf, const char* pVerBuf,int nLevel);
/// <summary>
/// 取得指纹图像
/// </summary>
/// <param name="nImageIdx">要取得指纹图像的索引数字[1, 3]</param>
/// <returns>成功时:返回B64编码纯数据区图像,失败时:返回NULL</returns>
[DllImport("TesoLive.dll")]
public static extern string FPIGetImageData(int nImageIdx);
//char* FPIGetImageData(int nImageIdx);
/// <summary>
/// 通过前期采集的一幅指纹图象数据,产生验证用特征数据
/// </summary>
/// <param name="pImg">B64 编码图像,请参见 FPIGetImageData 函数中的说明</param>
/// <param name="pVerBuf">输出的B64特征缓冲,最大513字节(含'\0'结束符)</param>
/// <param name="pnVerLen">返回验证指纹特征实际长度(不含'\0'结束符)</param>
/// <param name="pszErrMsg">返回出错时字符串信息,最大 64 字节(含'\0'结束符)</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int FPIGetFeatureByImg(string pImg, ref byte pVerBuf, ref int pnVerLen, ref byte pszErrMsg);
//int FPIGetFeatureByImg(const char* pImg,char* pVerBuf, int* pnVerLen,char* pszErrMsg);
/// <summary>
/// 通过前期采集的三幅指纹图象数据,产生注册用模版数据
/// </summary>
/// <param name="pImg1">B64 编码图像 1,请参见 FPIGetImageData 函数中的说明</param>
/// <param name="pImg2">B64 编码图像 2,请参见 FPIGetImageData 函数中的说明</param>
/// <param name="pImg3">B64 编码图像 3,请参见 FPIGetImageData 函数中的说明</param>
/// <param name="pRegBuf">输出的B64模板缓冲,最大513字节(含'\0'结束符)</param>
/// <param name="pnRegLen">返回注册指纹模板实际长度(不含'\0'结束符)</param>
/// <param name="pszErrMsg">返回出错时字符串信息,最大 64 字节(含'\0'结束符)</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int FPIGetTemplateByImg(string pImg1, string pImg2, string pImg3, ref byte pRegBuf, ref int pnRegLen, ref byte pszErrMsg);
//int FPIGetTemplateByImg(const char* pImg1, const char* pImg2, const char* pImg3, char* pRegBuf, int* pnRegLen,char* pszErrMsg);
#endregion FPI(No Test)
#region Tc(Test)
/// <summary>
/// 创建通讯句柄,并初始化环境
/// </summary>
/// <param name="port">通讯端口号(USB=0,COM=[1, 255])</param>
/// <param name="nPort">协议号(USB=0,COM=2)</param>
/// <param name="nRidx">索引号(波特率级别,默认给 3,如表 1 所示)</param>
/// <param name="nSped">串口是否提速(如果是 USB 则,该值为 0,如果是串口,则该值为 2)</param>
/// <returns>成功时:返回值大于等于0(句柄),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcCreateHDL(int port, int nPort, int nRidx, int nSped);
//int TcCreateHDL(int Port, int nPort, int nRidx, int nSped);
/// <summary>
/// 释放句柄所占用资源,若设备已连接则会自行断开
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcDeleteHDL(int vHdl);
//int TcDeleteHDL(int vHdl);
/// <summary>
/// 连接设备,等待用户按捺 3 或者 4 次直到超时(超时默认 30 秒),成功后返回模板
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="hTpl">返回的模板数据(最大不会超过 513 字节)</param>
/// <returns>成功时:返回值大于等于0(模板长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcDoTemplet(int vHdl, byte[] hTpl);
//int TcDoTemplet(int vHdl, void* hTpl);
/// <summary>
/// 连接设备,等待用户按捺一次直到超时(默认超时 18 秒),成功后返回特征
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="hFea">返回的特征数据(最大不会超过 513 字节)</param>
/// <returns>成功时:返回值大于等于0(特征长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcDoFeature(int vHdl, byte[] hFea);
//int TcDoFeature(int vHdl, void* hFea);
/// <summary>
/// 基于安全级别,比对给定的特征和模板,判断它俩是否匹配
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄(一般传 0 值即可)</param>
/// <param name="hFea">指纹特征数据</param>
/// <param name="hTpl">指纹模板数据</param>
/// <param name="nLvl">安全等级[1-5]</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcSafeMatch(int vHdl, string hFea, string hTpl, int nLvl = 3);
//int TcSafeMatch(int vHdl, const void* hFea,const void* hTpl, int nLvl);
/// <summary>
/// 配置是否弹出对话框,采集指纹特征超时时间等
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="nRead">操作方向(0=设定新值,1=读取配置值)</param>
/// <param name="nIdx">准备要操作的功能代码(详见配置参数宏定义说明)</param>
/// <param name="nVal">要配置的新值(详见配置参数宏定义说明)</param>
/// <param name="hVoid">固定 NULL</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcExtnEntry(int vHdl, int nRead, int nIdx, int nVal, string hVoid);
//int TcExtnEntry(int vHdl, int nRead, int nIdx, int nVal, void* hVoid);
/// <summary>
/// 控制设备上的 LED 闪灯和 BUZZER 蜂鸣,声光同时提示
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="nMode">方式:0=短嘀,1=长嘀,2=嘀嘀</param>
/// <returns>成功时:返回值大于等于0,失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcBeepLight(int vHdl, int nMode);
//int TcBeepLight(int vHdl, int nMode);
/// <summary>
/// 获取设备的 32 字节的 SN 产品序列号+1 字节'\0'
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="chSn">返回的 SN 字符串(建议提供 64 个字节缓存)</param>
/// <returns>成功时:返回值大于等于0( SN 的长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcReadDevSn(int vHdl, StringBuilder chSn);
//int TcReadDevSn(int vHdl, char* chSn);
/// <summary>
/// 获取内核版本
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="devSn">返回的 SN 字符串(建议提供 64 个字节缓存)</param>
/// <returns>成功时:返回值大于等于0( SN 的长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcGetDevVsin(int vHdl, StringBuilder devSn);
#endregion Tc(Test)
#region Tc(No Test)
/// <summary>
/// 读取 Win32 的标准 BMP 文件到内存里
/// </summary>
/// <param name="chFile">要读取的来源 BMP 文件的路径</param>
/// <param name="hFpr">要写入的目标内存缓存区</param>
/// <param name="nStyle">固定为 3</param>
/// <returns>成功时:返回值大于等于0(编码后图像长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcLoadFrBmp(string chFile, IntPtr hFpr, int nStyle);
//int TcLoadFrBmp(const char* chFile, void* hFpr, int nStyle);
/// <summary>
/// 指定句柄内五个图像缓冲区中的一个,获取图像数据区数据;
/// 在调用此函数前,一定要先调用 TcDoTemplet 或者 TcDoFeature。否则调用失败
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="nIdx">图像缓冲号[0, 4],特征区号 128+[0, 4]</param>
/// <param name="hFpr">返回图像或特征数据区数据,如果是图像建议大小 90K 空间大小</param>
/// <returns>成功时:返回值大于等于0(图像/特征数据长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcGetImgDat(int vHdl, int nIdx, IntPtr hFpr);
//int TcGetImgDat(int vHdl, int nIdx, void* hFpr);
/// <summary>
/// 另存指纹图像为 Win32 的标准 BMP 文件格式
/// </summary>
/// <param name="chFile">要保存的目标 BMP 文件,已存在则覆盖</param>
/// <param name="hFpr">由 TcGetImgDat 获取的,将要保存的图像数据</param>
/// <returns>成功时:返回值大于等于0(保存的 BMP 文件字节大小),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcSaveAsBmp(string chFile, IntPtr hFpr);
//int TcSaveAsBmp(const char* chFile, const void* hFpr);
/// <summary>
/// 由给定的一枚指纹图像,提取出一枚指纹特征
/// </summary>
/// <param name="vHdl">TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="hFpr">由 TcGetImgDat 或者 TcLoadFrBmp 的一枚图像数据</param>
/// <param name="hFea">指纹特征数据(最大 513 字节,非定长)</param>
/// <returns>成功时:返回值大于等于0(特征长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcFeaFrmImg(int vHdl, IntPtr hFpr, StringBuilder hFea);
//int TcFeaFrmImg(int vHdl, const void* hFpr, void* hFea);
/// <summary>
/// 由给定的四枚指纹 BMP 图像(或特征),合成出一枚指纹模板
/// </summary>
/// <param name="vHdl">由 TcCreateHDL 获取的上下文控制句柄</param>
/// <param name="hFp0">由 TcGetImgDat 或者 TcLoadFrBmp 获取的四枚图像数据</param>
/// <param name="hFp1"></param>
/// <param name="hFp2"></param>
/// <param name="hFp3">其中第四枚图像可以传入 NULL</param>
/// <param name="hTpl">指纹模板数据(最大 513 字节,非定长)</param>
/// <returns>成功时:返回值大于等于0(模板长度),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcTplFrmImg(int vHdl, IntPtr hFp0, IntPtr hFp1, IntPtr hFp2, IntPtr hFp3, StringBuilder hTpl);
//int TcTplFrmImg(int vHdl, const void* hFp0, const void* hFp1, const void* hFp2, const void* hFp3, void* hTpl);
/// <summary>
/// 给定端口区间,速率,返回首个设备所在的端口号
/// </summary>
/// <param name="nBgn">要搜索的目标端口区间[],0 为 USB,>=1 为 COM</param>
/// <param name="nEnd"></param>
/// <param name="nRidx">串口波特率索引号[0, 7],对应为[1200, 115200]</param>
/// <param name="nMask">默认 0</param>
/// <param name="chFix">BP 盒的前后缀字串儿,可为 NULL,默认用'|'分隔</param>
/// <returns>成功时:返回值大于等于0(0 为 USB,>=1 为 COM,1-com1,2-com2…),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcWhereAreu(int nBgn, int nEnd, int nRidx, int nMask, string chFix);
//int TcWhereAreu(int nBgn, int nEnd, int nRidx, int nMask, const char* chFix);
/// <summary>
/// 判断是否有手指按捺(仅限于 USB 设备使用)
/// </summary>
/// <param name="vHdl">TcCreateHDL 获取的上下文控制句柄</param>
/// <returns>成功时:返回值大于等于0(有手指按捺),失败时:返回值小于0(详见函数返回码说明)</returns>
[DllImport("TesoLive.dll")]
public static extern int TcChkPressed(int vHdl);
//int TcChkPressed(int vHdl);
#endregion Tc(No Test)
}
}

225
AutoWeightServer/IfManager/LedZK/LedZKManager.cs

@ -0,0 +1,225 @@
using System.Text;
namespace EC.AutoWeightServer.IfManager.LedZK
{
public class LedZKManager
{
private byte[] _ip;
private ushort _port;
private uint _handle;
private byte _width;
private byte _height;
public LedZKManager()
{
_ip = Encoding.Default.GetBytes("192.168.0.199");
_port = 5005;
}
public LedZKManager(string ip, ushort port)
{
_ip = Encoding.Default.GetBytes(ip);
_port = port;
}
#region Start & Stop Server
/// <summary>
/// 开启服务
/// </summary>
/// <returns></returns>
public void StartServer()
{
//初始化动态库
LedZKSDK.InitSdk(2, 2);
_handle = LedZKSDK.CreateClient(_ip, _port, LedZKSDK.bx_5k_card_type.BX_6K1, 3, 1, null);
ReadScreen();
}
/// <summary>
/// 停止服务
/// </summary>
/// <returns></returns>
public void StopServer()
{
LedZKSDK.Destroy(_handle);
//释放动态库
LedZKSDK.ReleaseSdk();
}
#endregion Start & Stop Server
#region Util Methods
/// <summary>
/// 4x6 或 5x8
/// \C1代表红色,\C2代表绿色,\C3代表黄色
/// </summary>
/// <param name="areaId"></param>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="text"></param>
/// <param name="singleLine">0x01:单行,0x02:多行</param>
/// <param name="newLine">0x01:手动换行,0x02:自动换行</param>
/// <param name="speed"></param>
/// <returns></returns>
public int SendDynamicArea(byte areaId, ushort x, ushort y, ushort width, ushort height, string text,
byte singleLine, byte newLine, byte speed)
{
var outText = Encoding.Default.GetBytes(text);
var header = new LedZKSDK.bx_5k_area_header
{
DynamicAreaLoc = areaId,
AreaType = 0x00,
AreaX = x,
AreaWidth = width,
AreaY = y,
AreaHeight = height,
RunMode = 0,
Timeout = 2,
SingleLine = singleLine,
NewLine = newLine,
Lines_sizes = 0,
DisplayMode = 0x01,
Speed = speed,
StayTime = (byte)(35 * 2),
Reserved1 = 0,
Reserved2 = 0,
Reserved3 = 0,
ExitMode = 0x00,
DataLen = outText.Length
};
return LedZKSDK.SCREEN_SendDynamicArea(_handle, header, (ushort)outText.Length, outText);
}
/// <summary>
/// 4x6 或 5x8
/// \C1代表红色,\C2代表绿色,\C3代表黄色
/// </summary>
/// </summary>
/// <param name="areaId"></param>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="text"></param>
/// <param name="singleLine">0x01:单行,0x02:多行</param>
/// <param name="newLine">0x01:手动换行,0x02:自动换行</param>
/// <param name="speed"></param>
/// <returns></returns>
public int SendDynamicMoveArea(byte areaId, ushort x, ushort y, ushort width, ushort height, string text,
byte singleLine, byte newLine, byte speed)
{
var outText = Encoding.Default.GetBytes(text);
var header = new LedZKSDK.bx_5k_area_header
{
DynamicAreaLoc = areaId,
AreaType = 0x00,
AreaX = x,
AreaWidth = width,
AreaY = y,
AreaHeight = height,
RunMode = 0,
Timeout = 2,
SingleLine = singleLine,
NewLine = newLine,
Lines_sizes = 0,
DisplayMode = 0x03,
Speed = speed,
StayTime = (byte)(35 * 2),
Reserved1 = 0,
Reserved2 = 0,
Reserved3 = 0,
ExitMode = 0x00,
DataLen = outText.Length
};
return LedZKSDK.SCREEN_SendDynamicArea(_handle, header, (ushort)outText.Length, outText);
}
public int DelDynamicArea(byte areaId)
{
return LedZKSDK.SCREEN_DelDynamicArea(_handle, areaId);
}
#endregion Util Methods
#region Common Methods
public int ReadScreen()
{
var status = new byte[24];
ushort len = 0;
var ret = LedZKSDK.CON_ReadScreen(_handle, status, ref len);
_width = status[4];
_height = status[6];
return ret;
}
/// <summary>
///
/// </summary>
/// <param name="lightValue">当前亮度,强制调节亮度时有效,亮度值为0-15共16级。亮度值为15时亮度最高</param>
/// <returns></returns>
public int ForceSetBrightness(byte lightValue)
{
lightValue %= 16;
return LedZKSDK.SCREEN_SetBrightness(_handle, 1, lightValue, null);
}
/// <summary>
/// 获取屏号
/// </summary>
/// <param name="screenId"></param>
/// <returns></returns>
public int GetScreenId(ref ushort screenId)
{
return LedZKSDK.CON_ReadScreenID(_handle, ref screenId);
}
/// <summary>
/// 设置屏号
/// </summary>
/// <param name="screenid"></param>
/// <returns></returns>
public int SetScreenId(ushort screenid)
{
return LedZKSDK.CON_SetScreenID(_handle, screenid);
}
/// <summary>
/// 强制开机
/// </summary>
/// <returns></returns>
public int ForceTurnOn()
{
return LedZKSDK.SCREEN_ForceOnOff(_handle, 1);
}
/// <summary>
/// 强制关机
/// </summary>
/// <returns></returns>
public int ForceTurnOff()
{
return LedZKSDK.SCREEN_ForceOnOff(_handle, 2);
}
/// <summary>
/// 若ping命令执行成功,说明与控制卡通信成功
/// </summary>
/// <returns></returns>
public int Ping()
{
return LedZKSDK.CON_PING(_handle); ;
}
public bool IsConnected()
{
return Ping() == 0;
}
#endregion Common Methods
}
}

966
AutoWeightServer/IfManager/LedZK/LedZKSDK.cs

@ -0,0 +1,966 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
namespace EC.AutoWeightServer.IfManager.LedZK
{
public class LedZKSDK
{
#region
public class bx5k_err
{
public const int ERR_NO = 0; //No Error
public const int ERR_OUTOFGROUP = 1; //Command Group Error
public const int ERR_NOCMD = 2; //Command Not Found
public const int ERR_BUSY = 3; //The Controller is busy now
public const int ERR_MEMORYVOLUME = 4; //Out of the Memory Volume
public const int ERR_CHECKSUM = 5; //CRC16 Checksum Error
public const int ERR_FILENOTEXIST = 6; //File Not Exist
public const int ERR_FLASH = 7;//Flash Access Error
public const int ERR_FILE_DOWNLOAD = 8; //File Download Error
public const int ERR_FILE_NAME = 9; //Filename Error
public const int ERR_FILE_TYPE = 10;//File type Error
public const int ERR_FILE_CRC16 = 11;//File CRC16 Error
public const int ERR_FONT_NOT_EXIST = 12;//Font Library Not Exist
public const int ERR_FIRMWARE_TYPE = 13;//Firmware Type Error (Check the controller type)
public const int ERR_DATE_TIME_FORMAT = 14;//Date Time format error
public const int ERR_FILE_EXIST = 15;//File Exist for File overwrite
public const int ERR_FILE_BLOCK_NUM = 16;//File block number error
public const int ERR_COMMUNICATE = 100;//通信失败
public const int ERR_PROTOCOL = 101;//协议数据不正确
public const int ERR_TIMEOUT = 102;//通信超时
public const int ERR_NETCLOSE = 103;//通信断开
public const int ERR_INVALID_HAND = 104;//无效句柄
public const int ERR_PARAMETER = 105;//参数错误
public const int ERR_SHOULDREPEAT = 106;//需要重复上次数据包
public const int ERR_FILE = 107;//无效文件
}
#endregion
//串口停止位
public enum serial_stopbits : byte
{
COM_ONESTOPBIT = 0,
COM_ONE5STOPBITS = 1,
COM_TWOSTOPBITS = 2,
}
//串口校验模式
public enum serial_parity : byte
{
COM_NOPARITY = 0,
COM_ODDPARITY = 1,
COM_EVENPARITY = 2,
COM_MARKPARITY = 3,
COM_SPACEPARITY = 4,
}
//串口数据位
public enum serial_databits : byte
{
COM_4BITS = 4,
COM_5BITS = 5,
COM_6BITS = 6,
COM_7BITS = 7,
COM_8BITS = 8,
}
//控制器类型
public enum bx_5k_card_type : byte
{
BX_5K1 = 0x51,
BX_5K2 = 0x58,
BX_5MK2 = 0x53,
BX_5MK1 = 0x54,
BX_5K1Q_YY = 0x5c,
BX_Any = 0xFE,
BX_6K1 = 0x61,
BX_6K2 = 0x62,
BX_6K3 = 0x63,
BX_6K1_YY = 0x64,
BX_6K2_YY = 0x65,
BX_6K3_YY = 0x66,
BX_6K1_4G = 0x67,
BX_6K2_4G = 0x68,
}
//-------区域格式------
// area header | data |
//---------------------
//节目内区域定义
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct bx_5k_area_header
{
public byte AreaType;
public ushort AreaX;
public ushort AreaY;
public ushort AreaWidth;
public ushort AreaHeight;
public byte DynamicAreaLoc;
public byte Lines_sizes;
public byte RunMode;
public short Timeout;
public byte Reserved1;
public byte Reserved2;
public byte Reserved3;
public byte SingleLine;
public byte NewLine;
public byte DisplayMode;
public byte ExitMode;
public byte Speed;
public byte StayTime;
public int DataLen;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct bx_5k_sound
{
public byte StoreFlag;
public byte SoundPerson;//一个字节
public byte SoundVolum;
public byte SoundSpeed;
public byte SoundDataMode;
public int SoundReplayTimes;
public int SoundReplayDelay;
public byte SoundReservedParaLen;
public int SoundDataLen;
}
[System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
public delegate void CallBackClientClose(uint hand, int err);
//初始化动态库
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern void InitSdk(byte minorVer, byte majorVer);
//释放动态库
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern void ReleaseSdk();
//创建广播通讯模式
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern uint CreateBroadCast(byte[] broad_ip, uint broad_port, bx_5k_card_type card_type, byte[] barcode, byte Option, int mode);
//创建固定IP通讯模式
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern uint CreateClient(byte[] led_ip, uint led_port, bx_5k_card_type card_type, int tmout_sec, int mode, CallBackClientClose pCloseFunc);
//创建TCP Modbus通讯
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern uint CreateTcpModbus(byte[] led_ip, bx_5k_card_type card_type, CallBackClientClose pCloseFunc);
//创建串口通讯
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern uint CreateComClient(byte com, uint baudrate, bx_5k_card_type card_type, int mode, ushort ScreenID);
//创建串口Modbus通讯
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern uint CreateComModbus(byte com, uint baudrate, serial_parity Parity, serial_databits DataBits,
serial_stopbits StopBits, bx_5k_card_type card_type, ushort ScreenID);
//销毁通讯
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern void Destroy(uint dwHand);
//设置通讯超时
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern void SetTimeout(uint dwHand, uint nSec);
//ping
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_PING(uint dwHand);
//复位
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_Reset(uint dwHand);
//
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_ControllerStatus(uint dwHand, byte[] pStatus, ref ushort len);
//查询字库信息
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_CheckCurrentFont(uint dwHand, byte[] fontStatus, ref ushort len);
//回读客户信息
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_CheckCurrentCustomer(uint dwHand, byte[] CustomerStatus, ref ushort len);
//参数回读
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_ReadScreen(uint dwHand, byte[] ScreenStatus, ref ushort len);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_SytemClockCorrect(uint dwHand);
//查询固件状态
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_CheckCurrentFirmware(uint dwHand, byte[] FirmwareName, byte[] FirmwareVersion, byte[] FirmwareDateTime);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_SendFirmWareData(uint dwHand, byte overwrite, byte[] pFileName, byte[] FirmWareData, int FirmWareDataLen, CloseFunc pCloseFunc);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_FirmwareActivate(uint dwHand, byte[] FirmwareName);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_SetScreenID(uint dwHand, ushort newScreenID);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_ReadScreenID(uint dwHand, ref ushort pScreenID);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_ForceOnOff(uint dwHand, byte OnOffFlag);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_TimeTurnOnOff(uint dwHand, byte[] pTimer, int nGroup);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_SetBrightness(uint dwHand, byte BrightnessType, byte CurrentBrightness, byte[] BrightnessValue);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_SetWaitTime(uint dwHand, byte WaitTime);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_LockProgram(uint dwHand, byte LockFlag, byte StoreMode, byte[] ProgramFileName);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_DelDynamicArea(uint dwHand, byte DeleteAreaId);
//动态区
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_SendDynamicArea(uint dwHand, bx_5k_area_header header, ushort TextLen, byte[] AreaText);
//语音
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_SendSound(uint dwHand, bx_5k_sound sound, int TextLen, byte[] AreaText);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_SendSoundDynamicArea(uint dwHand, bx_5k_area_header header, ushort TextLen, byte[] AreaText, byte SoundMode, byte SoundPerson, byte SoundVolume, byte SoundSpeed, int sound_len, byte[] sounddata);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_Test(uint dwHand, byte TestTime);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SCREEN_CancelTimeOnOff(uint dwHand);
#region 设置特殊动态区动态
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_SetSpecialAppDynamic(uint dwHand, ushort AreaX, ushort AreaY, ushort AreaW, ushort AreaH,
byte DataType, byte Pagetotal, byte RunState, ushort Timeout, byte SingleLine, byte Lines_sizes, byte NewLine, ushort StayTime);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_SendPageData(uint dwHand, byte PageNum, ushort PageDataLen, byte[] PageData);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_SendLatticeMessage(uint dwHand, byte BlockFlag, ushort BlockAddr, byte[] BlockData, ushort BlockDataLen);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_DelSpecialAppDynamic(uint dwHand);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_SetIPAddress(uint dwHand, byte ConnnectMode, byte[] ip, byte[] SubnetMask, byte[] Gateway, ushort port,
byte ServerMode, byte[] ServerIPAddress, ushort ServerPort, byte[] ServerAccessPassword, ushort HeartBeatInterval, byte[] NetID);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_SetMACAddress(uint dwHand, byte[] MAC);
//设置特殊动态区动态
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_SetSpecialAppDynamic(int dwHand, ushort AreaX, ushort AreaY, ushort AreaW, ushort AreaH, byte DataType, byte Pagetotal,
byte RunState, ushort Timeout, byte SingleLine, byte Lines_sizes, byte NewLine, ushort StayTime);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_WebSearch(uint dwHand, ref ushort Status, ref ushort Error, byte[] IP,
byte[] SubNetMask, byte[] Gate, ref ushort Port, byte[] Mac, byte[] NetID);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_DelPageData(uint dwHand, byte PageLog);
#endregion
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_Formatting(uint dwHand);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_DeleteFile(uint dwHand, ushort FileNumber, byte[] pFileNameList);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_BeginSendMultiFiles(uint dwHand);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_SendFile(uint dwHand, byte overwrite, byte[] pFilePath);
//发送节目
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_SendFileData(uint dwHand, byte overwrite, byte[] pFileName, ushort DisplayType, byte PlayTimes,
byte[] ProgramLife, byte ProgramWeek, byte ProgramTime, byte[] Period, byte AreaNum, byte[] AreaDataList, int AreaDataListLen);
//添加扫描
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_SendScanData(uint dwHand, byte overwrite, byte[] pFileName, byte[] ScanData, int ScanDataLen);
//添加字库
public delegate void CloseFunc(int total, int sendlen);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_SendFontData(uint dwHand, byte overwrite, byte[] pFileName, byte FontWidth, byte FontHeight,
byte[] LibData, int LibData_len, byte FontEncode, CloseFunc pCloseFunc);
//设置屏参
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_SendScreenData(uint dwHand, byte overwrite, byte[] pFileName, ushort Address, byte Baudrate,
ushort ScreenWith, ushort ScreenHeight, byte Color, byte MirrorMode, byte OE, byte DA, byte RowOrder, byte FreqPar,
byte OEAngle, byte CommTimeout, byte TipLanguage, byte LatticeMode);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_EndSendMultiFiles(uint dwHand);
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int CON_SetDispInfo(uint dwHand, byte DispInfo);
//设置客户信息
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int OFS_SetFontInformation(uint dwHand, byte OverWrite, byte[] ClientMsg);
public delegate void CallBackCon(uint dwHand, string pid);
public delegate void CallBackLedClose(uint dwHand, string pid, int err_code);
//启动gprs服务器
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern bool StartGprsServer(uint port, CallBackCon pCallBackCon, CallBackLedClose pCallBackLedClose);
//关闭gprs服务器
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern void CloseGprsServer();
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern void SetGprsAliveTick(uint dwHand, int time_sec);
//扫描
//返回值:0:发送数据正确;ERR_TIMEOUT:通讯超时;其它:返回错误代码。
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SendAndRecvBuff(uint dwHand, byte cmd_group, byte cmd, byte[] cmd_data, ushort data_len, byte[] recv_data, ref short p_recv_len);
//返回值:0:发送数据正确;ERR_TIMEOUT:通讯超时;其它:返回错误代码。
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int SendBuff(uint dwHand, byte cmd_group, byte cmd, byte[] cmd_data, ushort data_len);
// 网络搜索
[DllImport("Led5kSDK.dll", CharSet = CharSet.Unicode)]
public static extern int BX5MK_WebSearch(uint dwHand, byte[] recv_buff, ushort[] recv_len);
}
public class ItemObject
{
public string Text = "";
public uint Value = 0;//可以多个
public ItemObject(string _text, uint _value)
{
Text = _text;
Value = _value;
}
}
public class Led5kstaticArea
{
public LedZKSDK.bx_5k_area_header header;
public string text;
public byte[] AreaToByteArray()
{
//计算header的大小:结构体bx_5k_area_header的大小
LedZKSDK.bx_5k_area_header tu = new LedZKSDK.bx_5k_area_header();
int hsz = Marshal.SizeOf(tu);
//计算len的大小
text = text.Replace("₩₩F", "\\F");
List<byte[]> Byte_Area = new List<byte[]>();
int Byte_t = 0;
string[] str_Area = text.Split('\\');
int font = 0;
for (int n = 0; n < str_Area.Length; n++)
{
if (n > 0 && str_Area[n].Length > 1)
{
if (str_Area[n].Substring(0, 2).Equals("FK"))
{
font = 1;
if (str_Area[n].Length > 5)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n].Substring(0, 5));
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
string Area_str = str_Area[n].Remove(0, 5);
byte[] Korean = System.Text.Encoding.Unicode.GetBytes(Area_str);
for (int k = 0; k < Korean.Length / 2; k++)
{
byte a = Korean[k * 2];
Korean[k * 2] = Korean[k * 2 + 1];
Korean[k * 2 + 1] = a;
}
Byte_Area.Add(Korean);
Byte_t += Korean.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("Unicode").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
else if (str_Area[n].Substring(0, 2).Equals("FE") || str_Area[n].Substring(0, 2).Equals("FO") || str_Area[n].Substring(0, 2).Equals("WF") || str_Area[n].Substring(0, 2).Equals("WC"))
{
font = 0;
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
else if (str_Area[n].Substring(0, 1).Equals("C") || str_Area[n].Substring(0, 1).Equals("D") || str_Area[n].Substring(0, 1).Equals("B") || str_Area[n].Substring(0, 1).Equals("T"))
{
if (font == 1)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n].Substring(0, 2));
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
string Area_str = str_Area[n].Remove(0, 2);
byte[] Korean = System.Text.Encoding.Unicode.GetBytes(Area_str);
for (int k = 0; k < Korean.Length / 2; k++)
{
byte a = Korean[k * 2];
Korean[k * 2] = Korean[k * 2 + 1];
Korean[k * 2 + 1] = a;
}
Byte_Area.Add(Korean);
Byte_t += Korean.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
else if (str_Area[n].Substring(0, 1).Equals("n"))
{
if (font == 1)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n].Substring(0, 1));
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
string Area_str = str_Area[n].Remove(0, 1);
byte[] Korean = System.Text.Encoding.Unicode.GetBytes(Area_str);
for (int k = 0; k < Korean.Length / 2; k++)
{
byte a = Korean[k * 2];
Korean[k * 2] = Korean[k * 2 + 1];
Korean[k * 2 + 1] = a;
}
Byte_Area.Add(Korean);
Byte_t += Korean.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
else
{
if (font == 1)
{
byte[] Korean = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[Korean.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < Korean.Length; c++)
{
special[c + 1] = Korean[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
}
else
{
if (n > 0)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
else
{
byte[] special = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
}
byte[] tmp = new byte[Byte_t];
int g = 0;
for (int n = 0; n < Byte_Area.Count(); n++)
{
if (n > 0)
{
for (int j = 0; j < Byte_Area[n].Length; j++)
{
tmp[g + j] = Byte_Area[n][j];
}
g += Byte_Area[n].Length;
}
else
{
for (int j = 0; j < Byte_Area[n].Length; j++)
{
tmp[j] = Byte_Area[n][j];
}
g += Byte_Area[n].Length;
}
}
int len = tmp.Length + hsz + 4;
header.DataLen = tmp.Length;
//先copy len
byte[] bt = new byte[len];
//byte[] lenToByte = System.BitConverter.GetBytes(len);
byte[] lenToByte = System.BitConverter.GetBytes(len);
lenToByte.CopyTo(bt, 0);
int index = lenToByte.Length;
//再copy header
//分配结构体大小的内存空间
IntPtr structPtr = Marshal.AllocHGlobal(hsz);
//将结构体拷到分配好的内存空间
Marshal.StructureToPtr(header, structPtr, false);
//从内存空间拷到AreaDataList数组
Marshal.Copy(structPtr, bt, index, hsz);
//释放内存空间
Marshal.FreeHGlobal(structPtr);
//copy text
tmp.CopyTo(bt, index + hsz);
return bt;
}
public int getAreaLen()
{
LedZKSDK.bx_5k_area_header tu = new LedZKSDK.bx_5k_area_header();
int hsz = Marshal.SizeOf(tu);
//再考header
text = text.Replace("₩₩F", "\\F");
List<byte[]> Byte_Area = new List<byte[]>();
int Byte_t = 0;
string[] str_Area = text.Split('\\');
int font = 0;
for (int n = 0; n < str_Area.Length; n++)
{
if (n > 0 && str_Area[n].Length > 1)
{
if (str_Area[n].Substring(0, 2).Equals("FK"))
{
font = 1;
if (str_Area[n].Length > 5)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n].Substring(0, 5));
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
string Area_str = str_Area[n].Remove(0, 5);
byte[] Korean = System.Text.Encoding.Unicode.GetBytes(Area_str);
for (int k = 0; k < Korean.Length / 2; k++)
{
byte a = Korean[k * 2];
Korean[k * 2] = Korean[k * 2 + 1];
Korean[k * 2 + 1] = a;
}
Byte_Area.Add(Korean);
Byte_t += Korean.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("Unicode").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
else if (str_Area[n].Substring(0, 2).Equals("FE") || str_Area[n].Substring(0, 2).Equals("FO") || str_Area[n].Substring(0, 2).Equals("WF") || str_Area[n].Substring(0, 2).Equals("WC"))
{
font = 0;
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
else if (str_Area[n].Substring(0, 1).Equals("C") || str_Area[n].Substring(0, 1).Equals("D") || str_Area[n].Substring(0, 1).Equals("B") || str_Area[n].Substring(0, 1).Equals("T"))
{
if (font == 1)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n].Substring(0, 2));
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
string Area_str = str_Area[n].Remove(0, 2);
byte[] Korean = System.Text.Encoding.Unicode.GetBytes(Area_str);
for (int k = 0; k < Korean.Length / 2; k++)
{
byte a = Korean[k * 2];
Korean[k * 2] = Korean[k * 2 + 1];
Korean[k * 2 + 1] = a;
}
Byte_Area.Add(Korean);
Byte_t += Korean.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
else if (str_Area[n].Substring(0, 1).Equals("n"))
{
if (font == 1)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n].Substring(0, 1));
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
string Area_str = str_Area[n].Remove(0, 1);
byte[] Korean = System.Text.Encoding.Unicode.GetBytes(Area_str);
for (int k = 0; k < Korean.Length / 2; k++)
{
byte a = Korean[k * 2];
Korean[k * 2] = Korean[k * 2 + 1];
Korean[k * 2 + 1] = a;
}
Byte_Area.Add(Korean);
Byte_t += Korean.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
else
{
if (font == 1)
{
byte[] Korean = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[Korean.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < Korean.Length; c++)
{
special[c + 1] = Korean[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
else
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
}
else
{
if (n > 0)
{
byte[] special_1 = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
byte[] special = new byte[special_1.Length + 1];
special[0] = 0x5c;
for (int c = 0; c < special_1.Length; c++)
{
special[c + 1] = special_1[c];
}
Byte_Area.Add(special);
Byte_t += special.Length;
}
else
{
byte[] special = System.Text.Encoding.GetEncoding("GBK").GetBytes(str_Area[n]);
Byte_Area.Add(special);
Byte_t += special.Length;
}
}
}
byte[] tmp = new byte[Byte_t];
int g = 0;
for (int n = 0; n < Byte_Area.Count(); n++)
{
if (n > 0)
{
for (int j = 0; j < Byte_Area[n].Length; j++)
{
tmp[g + j] = Byte_Area[n][j];
}
g += Byte_Area[n].Length;
}
else
{
for (int j = 0; j < Byte_Area[n].Length; j++)
{
tmp[j] = Byte_Area[n][j];
}
g += Byte_Area[n].Length;
}
}
int len = tmp.Length + hsz + 4;
return len;
}
}
public class Led5kProgram
{
public string name;
public bool overwrite;
public ushort DisplayType;
public byte PlayTimes;
public bool IsValidAlways;
public ushort StartYear;
public byte StartMonth;
public byte StartDay;
public ushort EndYear;
public byte EndMonth;
public byte EndDay;
public byte ProgramWeek;
public bool IsPlayOnTime;
public byte StartHour;
public byte StartMinute;
public byte StartSecond;
public byte EndHour;
public byte EndMinute;
public byte EndSecond;
public byte AreaNum;
public List<Led5kstaticArea> m_arealist = new List<Led5kstaticArea>();
#region//转DCB码
public static byte byte2bcd(byte num)
{
int i = num;
return (byte)(i / 10 * 16 + i % 10);
}
public static byte bcd2byte(byte num)
{
int i = num;
return (byte)(i / 16 * 10 + i % 16);
}
public static byte[] short2bcd(ushort num)
{
int i = num;
byte high = (byte)(i / 100);
byte low = (byte)(i % 100);
byte[] tmp = new byte[2];
tmp[0] = byte2bcd(low);
tmp[1] = byte2bcd(high);
return tmp;
}
#endregion
public int SendProgram(uint hand)
{
byte[] ppFileName;
byte[] ProgramLife;
byte PlayPeriodGrpNum;
byte[] Period;
byte[] AreaDataList;
int AreaDataListLen;
int sum = 0;
foreach (Led5kstaticArea s in m_arealist)
{
sum += s.getAreaLen();
}
AreaDataList = new byte[sum];
int index = 0;
foreach (Led5kstaticArea s in m_arealist)
{
byte[] bt = s.AreaToByteArray();
bt.CopyTo(AreaDataList, index);
index += bt.Length;
}
AreaDataListLen = sum;
if (IsValidAlways == true)
{
ProgramLife = new byte[8];
ProgramLife[0] = 0xff;
ProgramLife[1] = 0xff;
ProgramLife[2] = 0xff;
ProgramLife[3] = 0xff;
ProgramLife[4] = 0xff;
ProgramLife[5] = 0xff;
ProgramLife[6] = 0xff;
ProgramLife[7] = 0xff;
}
else
{
ProgramLife = new byte[8];
byte[] tmp = Led5kProgram.short2bcd(StartYear);
ProgramLife[0] = tmp[0];
ProgramLife[1] = tmp[1];
ProgramLife[2] = byte2bcd(StartMonth);
ProgramLife[3] = byte2bcd(StartDay);
byte[] tmp1 = Led5kProgram.short2bcd(EndYear);
ProgramLife[4] = tmp1[0];
ProgramLife[5] = tmp1[1];
ProgramLife[6] = byte2bcd(EndMonth);
ProgramLife[7] = byte2bcd(EndDay);
}
ppFileName = System.Text.Encoding.Default.GetBytes(name);
if (IsPlayOnTime == true)
{
Period = new byte[7];
Period[0] = byte2bcd(StartHour);
Period[1] = byte2bcd(StartMinute);
Period[2] = byte2bcd(StartSecond);
Period[3] = byte2bcd(EndHour);
Period[4] = byte2bcd(EndMinute);
Period[5] = byte2bcd(EndSecond);
Period[6] = 0;
}
else
{
Period = null;
}
PlayPeriodGrpNum = Convert.ToByte(IsPlayOnTime ? 1 : 0);
return LedZKSDK.OFS_SendFileData(hand, 1, ppFileName, DisplayType, PlayTimes, ProgramLife,
ProgramWeek, PlayPeriodGrpNum, Period, AreaNum, AreaDataList, AreaDataListLen);
}
}
}

35
AutoWeightServer/IfManager/Light/ILightRelay.cs

@ -0,0 +1,35 @@
namespace EC.AutoWeightServer.IfManager.Light
{
public interface ILightRelay
{
/// <summary>
/// 连接设备
/// </summary>
/// <returns></returns>
bool StartServer();
/// <summary>
/// 断开设备
/// </summary>
/// <returns></returns>
bool StopServer();
/// <summary>
/// 是否连接设备
/// </summary>
/// <returns></returns>
bool IsOpen();
/// <summary>
/// 发送 Ascii 编码
/// </summary>
/// <param name="text"></param>
bool SendAscii(string text);
/// <summary>
/// 发送 16进制 编码
/// </summary>
/// <param name="text"></param>
bool SendHex(string text);
}
}

187
AutoWeightServer/IfManager/Light/LightManager.cs

@ -0,0 +1,187 @@
using System.Collections.Generic;
namespace EC.AutoWeightServer.IfManager.Light
{
public class LightManager
{
private LightRelay _lightRelay;
private string _comName;
private int _baudRate;
public LightManager()
{
}
public LightManager(string comName, int baudRate)
{
_comName = comName;
_baudRate = baudRate;
}
#region Start & Stop Server
/// <summary>
/// 开启连接
/// </summary>
/// <returns></returns>
public bool StartServer()
{
_lightRelay = new LightRelay(_comName, _baudRate);
var ret = _lightRelay.StartServer();
return ret;
}
/// <summary>
/// 关闭连接
/// </summary>
/// <returns></returns>
public bool StopServer()
{
_lightRelay?.StopServer();
_lightRelay = null;
return true;
}
public bool IsOpen()
{
return _lightRelay?.IsOpen() ?? false;
}
#endregion Start & Stop Server
#region Control Lights Code
//private int num = 0xFF;
/// <summary>
/// 控制所有灯编码,1 为开启所有灯,2 为关闭所有灯
/// </summary>
private readonly List<string> _ctrlAllLightCodeList = new List<string>() { "", "3301140000000048", "3301130000000047" };
/// <summary>
/// 开启某一路灯编码,不互斥,index 互相对应
/// </summary>
private readonly List<string> _openLightCodeList = new List<string>() { "", "3301120000000147", "3301120000000248", "3301120000000349", "330112000000044A" };
/// <summary>
/// 关闭某一路灯编码,不互斥,index 互相对应
/// </summary>
private readonly List<string> _closeLightCodeList = new List<string>() { "", "3301110000000146", "3301110000000247", "3301110000000348", "3301110000000449" };
/// <summary>
/// 互锁编码,控制只有一路灯亮,index 互相对应
/// </summary>
private readonly List<string> _lockLightOnCodeList = new List<string>() { "", "33011500000E045B", "33011500000D045A", "33011500000B0458", "3301150000070454" };
/// <summary>
/// 互锁编码,控制只有一路灯灭,index 互相对应
/// </summary>
private readonly List<string> _lockLightOffCodeList = new List<string>() { "", "330115000001044E", "330115000002044F", "3301150000040451", "3301150000080455" };
#endregion Control Lights Code
#region Control Lights
/// <summary>
/// 开启所有灯
/// </summary>
/// <returns></returns>
public bool OpenAllLight()
{
var code = _ctrlAllLightCodeList[1];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 关闭所有灯
/// </summary>
/// <returns></returns>
public bool CloseAllLight()
{
var code = _ctrlAllLightCodeList[2];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 开启某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool OpenLight(int index)
{
var codeList = _openLightCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 关闭某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool CloseLight(int index)
{
var codeList = _closeLightCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 互斥开某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool LockLightOn(int index)
{
var codeList = _lockLightOnCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 互斥关某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool LockLightOff(int index)
{
var codeList = _lockLightOffCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public bool CombineLight()
{
return true;
}
/// <summary>
/// 判断功能码是否可以使用
/// </summary>
/// <param name="codeList"></param>
/// <param name="index"></param>
/// <returns></returns>
public bool IsIndexValid(List<string> codeList, int index)
{
if (codeList == null)
return false;
if (index < 1 || index > codeList.Count - 1)
return false;
return true;
}
#endregion Control Lights
}
}

65
AutoWeightServer/IfManager/Light/LightRelay.cs

@ -0,0 +1,65 @@
using EC.Utils.SerialPortHelper;
using System;
namespace EC.AutoWeightServer.IfManager.Light
{
public class LightRelay : ILightRelay
{
private ECSerialPort _ecSerialPort;
private readonly string _comName;
private readonly int _baudRate;
public LightRelay(string comName, int baudRate)
{
_comName = comName;
_baudRate = baudRate;
}
public bool StartServer()
{
_ecSerialPort = SerialPortManager.CreateSerialPort(_comName, _baudRate);
try
{
_ecSerialPort.OpenCom();
}
catch (Exception ex)
{
LogUnit.Error(ex.Message);
return false;
}
return true;
}
public bool StopServer()
{
_ecSerialPort?.CloseCom();
_ecSerialPort = null;
return true;
}
public bool IsOpen()
{
if (_ecSerialPort == null)
return false;
if (!_ecSerialPort.IsOpen())
return false;
return true;
}
public bool SendAscii(string text)
{
if (!IsOpen())
return false;
_ecSerialPort.Send(false, text);
return true;
}
public bool SendHex(string text)
{
if (!IsOpen())
return false;
_ecSerialPort.Send(true, text);
return true;
}
}
}

21
AutoWeightServer/IfManager/Scales/IScales.cs

@ -0,0 +1,21 @@
using EC.AutoWeightServer.Model.EventArgsEx;
using System;
namespace EC.AutoWeightServer.IfManager.Scales
{
/// <summary>
/// 秤接口
/// </summary>
public interface IScales
{
bool StartServer();
bool StopServer();
bool IsOpen();
event EventHandler<ScaleEventArgs> OnRecData;
void RecData(object sender, byte[] buf);
}
}

61
AutoWeightServer/IfManager/Scales/Scales.cs

@ -0,0 +1,61 @@
using EC.AutoWeightServer.Model.EventArgsEx;
using EC.Utils.SerialPortHelper;
using System;
namespace EC.AutoWeightServer.IfManager.Scales
{
public class Scales : IScales
{
protected ECSerialPort _port;
protected string ComName;
protected int BaudRate;
protected int ReceivedBytesThreshold;
public Scales()
{
}
public Scales(string comName, int baudRate)
{
this.ComName = comName;
this.BaudRate = baudRate;
}
public Scales(string comName, int baudRate, int receivedBytesThreshold)
{
this.ComName = comName;
this.BaudRate = baudRate;
this.ReceivedBytesThreshold = receivedBytesThreshold;
}
public bool StartServer()
{
_port = SerialPortManager.CreateSerialPort(ComName, BaudRate, ReceivedBytesThreshold);
_port.OnRecData += RecData;
_port.OpenCom();
return true;
}
public bool StopServer()
{
_port?.CloseCom();
_port = null;
return true;
}
public bool IsOpen()
{
if (_port == null)
return false;
if (!_port.IsOpen())
return false;
return true;
}
public virtual event EventHandler<ScaleEventArgs> OnRecData;
public virtual void RecData(object sender, byte[] buf)
{
}
}
}

48
AutoWeightServer/IfManager/Scales/ScalesDefault.cs

@ -0,0 +1,48 @@
using EC.AutoWeightServer.Model.EventArgsEx;
using EC.Utils;
using System;
using System.Text;
using System.Text.RegularExpressions;
namespace EC.AutoWeightServer.IfManager.Scales
{
public class ScalesDefault : Scales
{
public ScalesDefault()
{
}
public ScalesDefault(string comName, int baudRate)
{
this.ComName = comName;
this.BaudRate = baudRate;
}
public override event EventHandler<ScaleEventArgs> OnRecData;
public override void RecData(object sender, byte[] buf)
{
var weightBuf = Encoding.UTF8.GetString(buf);
var weightArgs = weightBuf.Split('\n');
foreach (var weightArg in weightArgs)
{
var args = Regex.Split(weightArg.Trim(), @"\s+", RegexOptions.IgnoreCase);
if (args.Length != 3)
continue;
if (!(args[0].Equals("+") ^ args[0].Equals("-")))
continue;
var weight = CommonUtil.WeightStrToDec(args[0] + args[1]);
var units = args[2];
if (weight <= 0)
continue;
var scaleArgs = new ScaleEventArgs(weight, units);
OnRecData?.Invoke(sender, scaleArgs);
break;
}
}
}
}

85
AutoWeightServer/IfManager/Scales/ScalesManager.cs

@ -0,0 +1,85 @@
using EC.AutoWeightServer.Model.EventArgsEx;
using EC.Utils.SerialPortHelper;
using System;
using EC.AutoWeightServer.Model.Config;
namespace EC.AutoWeightServer.IfManager.Scales
{
public class ScalesManager
{
public Scales Scales;
private string _comName;
private int _baudRate;
private int _receivedBytesThreshold;
private ECSerialPort _transmitPort;
public ScalesManager()
{
}
public ScalesManager(string comName, int baudRate)
{
_comName = comName;
_baudRate = baudRate;
}
public ScalesManager(string comName, int baudRate, int receivedBytesThreshold)
{
_comName = comName;
_baudRate = baudRate;
_receivedBytesThreshold = receivedBytesThreshold;
}
#region Start & Stop
public bool StartServer()
{
//Scales = new ScalesDefault(_comName, _baudRate);
Scales = new ScalesZhuHai(_comName, _baudRate, _receivedBytesThreshold);
Scales.OnRecData += RecData;
if (ServerConfig.WtTransmitFlag > 0)
{
_transmitPort = SerialPortManager.CreateSerialPort(ServerConfig.WtTransmitCom, _baudRate);
((ScalesZhuHai)Scales).OnRecTransmit += RecTransmit;
}
Scales.StartServer();
return true;
}
public bool StopServer()
{
Scales?.StopServer();
Scales = null;
return true;
}
public bool IsOpen()
{
return Scales?.IsOpen() ?? false;
}
#endregion Start & Stop
#region Rec Data
public event EventHandler<decimal> OnRecData;
private readonly object _lockWeightObj = new object();
public void RecData(object sender, ScaleEventArgs scaleArgs)
{
lock (_lockWeightObj)
{
var weight = scaleArgs.Weight;
OnRecData?.Invoke(sender, weight);
}
}
public void RecTransmit(object sender, byte[] buf)
{
_transmitPort?.SendHex(buf);
}
#endregion Rec Data
}
}

58
AutoWeightServer/IfManager/Scales/ScalesZhuHai.cs

@ -0,0 +1,58 @@
using EC.AutoWeightServer.Model.EventArgsEx;
using EC.Utils;
using System;
using System.Text;
using EC.AutoWeightServer.Model.Config;
namespace EC.AutoWeightServer.IfManager.Scales
{
public class ScalesZhuHai : Scales
{
public ScalesZhuHai()
{
}
public ScalesZhuHai(string comName, int baudRate)
{
this.ComName = comName;
this.BaudRate = baudRate;
}
public ScalesZhuHai(string comName, int baudRate, int receivedBytesThreshold)
{
this.ComName = comName;
this.BaudRate = baudRate;
this.ReceivedBytesThreshold = receivedBytesThreshold;
}
public override event EventHandler<ScaleEventArgs> OnRecData;
public event EventHandler<byte[]> OnRecTransmit = null;
public override void RecData(object sender, byte[] buf)
{
OnRecTransmit?.Invoke(sender, buf);
var weightBuf = CommonUtil.Reverse(Encoding.UTF8.GetString(buf).Replace(".", "").Trim());
var weightArgs = weightBuf.Split('=');
foreach (var weightArg in weightArgs)
{
if (string.IsNullOrEmpty(weightArg))
continue;
if (!CommonUtil.IsNumber(weightArg))
continue;
var weight = CommonUtil.WeightStrToDec(weightArg) / 1000;
var unit = "t";
var scaleArgs = new ScaleEventArgs(weight, unit);
OnRecData?.Invoke(sender, scaleArgs);
break;
}
if (ServerConfig.WTDiscardInBufferFlag > 0)
_port.DiscardInBuffer();
}
}
}

93
AutoWeightServer/IfManager/Speech/SpeakHelper.cs

@ -0,0 +1,93 @@
using System.Speech.Synthesis;
namespace EC.AutoWeightServer.IfManager.Speech
{
public class SpeakHelper
{
private static SpeechSynthesizer _curSpeech = new SpeechSynthesizer
{
Volume = 100,//音量 [0, 100]
Rate = 0//语速 [-10, 10]
};
public SpeakHelper()
{
}
#region Start & Stop Server
public static void Open(int volume = 100, int rate = 0)
{
_curSpeech = new SpeechSynthesizer
{
Volume = volume,
Rate = rate
};
}
public static void Close()
{
if (!IsOpen())
return;
_curSpeech.Pause();
_curSpeech.Dispose();
_curSpeech = null;
}
public static bool IsOpen()
{
return _curSpeech != null;
}
/// <summary>
/// 开启连接
/// 音量 [0, 100]
/// 语速 [-10, 10]
/// </summary>
/// <returns></returns>
public static void ReOpen(int volume = 100, int rate = 0)
{
Close();
Open(volume, rate);
}
public static bool CheckState(bool reOpen = false)
{
var state = IsOpen();
if (!state && reOpen)
ReOpen();
return state;
}
public static void SelectVoice(VoiceGender gender, VoiceAge age)
{
if (!CheckState(true))
return;
_curSpeech.SelectVoiceByHints(gender, age);
}
#endregion Start & Stop Server
#region Tool Methods
/// <summary>
/// </summary>
public static void Speak(string text)
{
if (!CheckState(true))
return;
_curSpeech.Speak(text);
}
public static void SpeakAsync(string text, bool cancelAll = true)
{
if (!CheckState(true))
return;
if (cancelAll)
_curSpeech.SpeakAsyncCancelAll();
_curSpeech.SpeakAsync(text);
}
#endregion Tool Methods
}
}

74
AutoWeightServer/IfManager/Speech/SpeakManager.cs

@ -0,0 +1,74 @@
using System.Speech.Synthesis;
namespace EC.AutoWeightServer.IfManager.Speech
{
public class SpeakManager
{
private SpeechSynthesizer _curSpeech;
public SpeakManager()
{
}
#region Start & Stop Server
/// <summary>
/// 开启连接
/// </summary>
/// <returns></returns>
public void StartServer()
{
_curSpeech = new SpeechSynthesizer
{
Volume = 100,//音量 [0, 100]
Rate = 0//语速 [-10, 10]
};
}
public void ReStartServer()
{
StopServer();
StartServer();
}
/// <summary>
/// 关闭连接
/// </summary>
/// <returns></returns>
public void StopServer()
{
if (!IsOpen())
return;
_curSpeech.Pause();
_curSpeech.Dispose();
_curSpeech = null;
}
#endregion Start & Stop Server
#region Tool Methods
/// <summary>
/// </summary>
public void Speak(string text)
{
if (!IsOpen())
return;
_curSpeech.Speak(text);
}
public void SpeakAsync(string text, bool cancelAll = true)
{
if (cancelAll)
_curSpeech.SpeakAsyncCancelAll();
_curSpeech.SpeakAsync(text);
}
public bool IsOpen()
{
return _curSpeech != null;
}
#endregion Tool Methods
}
}

136
AutoWeightServer/IfManager/YkPos/YkPosManager.cs

@ -0,0 +1,136 @@
using System.Text;
namespace EC.AutoWeightServer.IfManager.YkPos
{
internal class YkPosManager
{
private static bool openFlag = false;
public static int OpenDevice()
{
int i;
i = YkPosSDK.OpenDevice();
openFlag = i == 0;
return i;
}
public static int CloseDevice()
{
return YkPosSDK.CloseDevice();
}
public static int InitPrinter()
{
return YkPosSDK.InitPrinter();
}
public static int PrintStr(StringBuilder pstr)
{
return YkPosSDK.PrintStr(pstr);
}
public static bool IsConnected()
{
return openFlag && YkPosSDK.IsConnected() == 1;
}
public static int FeedPaper()
{
return YkPosSDK.FeedPaper();
}
public static int GetStatus(byte n)
{
return YkPosSDK.GetStatus(n);
}
public static int GetPrinterStatus(byte n)
{
return YkPosSDK.GetPrinterStatus(n);
}
public static int PrintRasterBmp(StringBuilder pBmpFile)
{
return YkPosSDK.PrintRasterBmp(pBmpFile);
}
public static int PrintBitmap(StringBuilder pBmpFile)
{
return YkPosSDK.PrintBitmap(pBmpFile);
}
public static int CutPaper()
{
return YkPosSDK.CutPaper();
}
/// <summary>
/// 该接口用于设置打印时的对齐方式
/// n=0 左对齐;n=1 居中;n=2 右对齐
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
public static int SetAlign(int n)
{
return YkPosSDK.SetAlign(n);
}
/// <summary>
/// 该接口用于使能或禁用加重打印模式
/// n=1 使能, n=0 禁用
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
public static int SetEmphasized(int n)
{
return YkPosSDK.SetEmphasized(n);
}
/// <summary>
/// 该接口用于设置打印的左边距
/// 左边距 =(nL + nH x 256) x 0.125 毫米
/// </summary>
/// <param name="nL"></param>
/// <param name="nH"></param>
/// <returns></returns>
public static int SetLeftMargin(int nL, int nH)
{
return YkPosSDK.SetLeftMargin(nL, nH);
}
/// <summary>
/// 该接口用于设置字符放大倍数
/// hsize ,vsize 值与倍数对应关系
/// hsize 水平放大倍数 vsize 垂直放在倍数 ,取值范围 0~7
/// 0-----1 倍(原大小)
/// 7-----8 倍
/// </summary>
/// <param name="hsize"></param>
/// <param name="vsize"></param>
/// <returns></returns>
public static int SetCharSize(int hsize, int vsize)
{
return YkPosSDK.SetCharSize(hsize, vsize);
}
/// <summary>
/// 纸尽
/// </summary>
/// <returns></returns>
public static bool IsPaperExhaust()
{
var nRet4 = YkPosSDK.GetStatus(4);
return (nRet4 & 0x60) > 0;
}
/// <summary>
/// 纸将尽
/// </summary>
/// <returns></returns>
public static bool IsPaperWillExhaust()
{
var nRet4 = YkPosSDK.GetStatus(4);
return (nRet4 & 0x0c) > 0;
}
}
}

169
AutoWeightServer/IfManager/YkPos/YkPosSDK.cs

@ -0,0 +1,169 @@
using System.Runtime.InteropServices;
using System.Text;
namespace EC.AutoWeightServer.IfManager.YkPos
{
internal class YkPosSDK
{
[DllImport("YkPosdll.dll")]
public static extern int YkOpenDevice(int iport, int baud);
[DllImport("YkPosdll.dll")]
private static extern int YkCloseDevice();
[DllImport("YkPosdll.dll")]
private static extern int YkIsConnected();
[DllImport("YkPosdll.dll")]
private static extern int YkInitPrinter();
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, EntryPoint = "YkPrintStr", CallingConvention = CallingConvention.StdCall)]
private static extern int YkPrintStr([MarshalAs(UnmanagedType.LPStr)] StringBuilder pstr);
[DllImport("YkPosdll.dll")]
private static extern int YkFeedPaper();
[DllImport("YkPosdll.dll")]
private static extern int YkGetStatus(byte n);
[DllImport("YkPosdll.dll")]
private static extern int YkGetPrinterStatus(byte n);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, EntryPoint = "YkPrintRasterBmp", CallingConvention = CallingConvention.StdCall)]
private static extern int YkPrintRasterBmp([MarshalAs(UnmanagedType.LPStr)] StringBuilder pBmpFile);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, EntryPoint = "YkPrintBitmap", CallingConvention = CallingConvention.StdCall)]
private static extern int YkPrintBitmap([MarshalAs(UnmanagedType.LPStr)] StringBuilder pBmpFile, int m);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, EntryPoint = "YkPrintBarCode", CallingConvention = CallingConvention.StdCall)]
private static extern int YkPrintBarCode(int m, int n, [MarshalAs(UnmanagedType.LPStr)] StringBuilder barcode);
[DllImport("YkPosdll.dll")]
private static extern int YkCutPaper(int m, int n);
[DllImport("YkPosdll.dll")]
private static extern int YkSetAlign(int n);
[DllImport("YkPosdll.dll")]
private static extern int YkSetEmphasized(int n);
[DllImport("YkPosdll.dll")]
private static extern int YkSetLeftMargin(int nL, int nH);
[DllImport("YkPosdll.dll")]
private static extern int YkSetCharSize(int hsize, int vsize);
public static int OpenDevice()
{
int i;
i = YkOpenDevice(13, 0);
return i;
}
public static int CloseDevice()
{
int i;
i = YkCloseDevice();
return i;
}
public static int IsConnected()
{
int i;
i = YkIsConnected();
return i;
}
public static int InitPrinter()
{
int i;
i = YkInitPrinter();
return i;
}
public static int PrintStr([MarshalAs(UnmanagedType.LPStr)] StringBuilder pstr)
{
int i;
i = YkPrintStr(pstr);
return i;
}
public static int PrintRasterBmp([MarshalAs(UnmanagedType.LPStr)] StringBuilder pBmpFile)
{
int i;
i = YkPrintRasterBmp(pBmpFile);
return i;
}
public static int PrintBitmap([MarshalAs(UnmanagedType.LPStr)] StringBuilder pBmpFile)
{
int i;
i = YkPrintBitmap(pBmpFile, 33);
return i;
}
public static int FeedPaper()
{
int i;
i = YkFeedPaper();
return i;
}
public static int GetStatus(byte n)
{
int i;
i = YkGetStatus(n);
return i;
}
public static int GetPrinterStatus(byte n)
{
int i;
i = YkGetPrinterStatus(n);
return i;
}
public static int PrintBarCode([MarshalAs(UnmanagedType.LPStr)] StringBuilder barcode)
{
int i;
int n = barcode.Length;
i = YkPrintBarCode(72, n, barcode);
return i;
}
public static int CutPaper()
{
int i;
i = YkCutPaper(66, 0);
return i;
}
public static int SetAlign(int n)
{
int i;
i = YkSetAlign(n);
return i;
}
public static int SetEmphasized(int n)
{
int i;
i = YkSetEmphasized(n);
return i;
}
public static int SetLeftMargin(int nL, int nH)
{
int i;
i = YkSetLeftMargin(nL, nH);
return i;
}
public static int SetCharSize(int hsize, int vsize)
{
int i;
i = YkSetCharSize(hsize, vsize);
return i;
}
}
}

BIN
AutoWeightServer/Img/Thumbs.db

Binary file not shown.

BIN
AutoWeightServer/Img/logo.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

68
AutoWeightServer/Model/Config/BaseConfig.cs

@ -0,0 +1,68 @@
using System.Configuration;
namespace EC.AutoWeightServer.Model.Config
{
public class BaseConfig
{
#region App.config (*.exe.config)
public static string GetAppConfig(string key)
{
return ConfigurationManager.AppSettings[key].Trim();
}
public static void SetAppConfig(string key, string value)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings[key].Value = value;
// Save the configuration file.
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings");
}
#endregion App.config (*.exe.config)
#region other.config
/// <summary>
/// 打开指定的配置文件;
/// </summary>
public static Configuration GetConfiguration(string configFile)
{
var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile };
return ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
}
public static string GetConfig(Configuration config, string key)
{
return config.AppSettings.Settings[key].Value.Trim();
}
public static void SetConfig(Configuration config, string key, string value)
{
config.AppSettings.Settings[key].Value = value;
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
}
#endregion other.config
#region Voice.config
private static readonly Configuration VoiceConfig = GetConfiguration("Voice.config");
public static string GetVoiceConfig(string key)
{
return GetConfig(VoiceConfig, key);
}
public static void SetVoiceConfig(string key, string value)
{
SetConfig(VoiceConfig, key, value);
}
#endregion Voice.config
}
}

78
AutoWeightServer/Model/Config/ServerConfig.cs

@ -0,0 +1,78 @@
using System;
namespace EC.AutoWeightServer.Model.Config
{
public class ServerConfig : BaseConfig
{
/// <summary>
/// 站点编号
/// </summary>
public static string SiteName { get; } = GetAppConfig("SITE_Name");
/// <summary>
/// 相机
/// </summary>
public static string CameraAddress1 { get; } = GetAppConfig("CAMERA_ADDRESS1");
public static string CameraAddress2 { get; } = GetAppConfig("CAMERA_ADDRESS2");
public static string CameraAddress3 { get; } = GetAppConfig("CAMERA_ADDRESS3");
public static string CameraAddress4 { get; } = GetAppConfig("CAMERA_ADDRESS4");
public static ushort CameraSocketPort { get; } = (ushort)FormatCom.ToShort(GetAppConfig("CAMERA_SOCKET_PORT"));
public static string CameraUsername { get; } = GetAppConfig("CAMERA_USERNAME");
public static string CameraPassword { get; } = GetAppConfig("CAMERA_PASSWORD");
public static int AutoDetectInterval { get; } = FormatCom.ToInt(GetAppConfig("AutoDetectInterval"));
/// <summary>
/// 称重串口
/// </summary>
public static string WtCom { get; } = GetAppConfig("WT_COM");
public static int WtBaudRate { get; } = FormatCom.ToInt(GetAppConfig("WT_BaudRate"));
public static int WtDiff { get; } = FormatCom.ToInt(GetAppConfig("WT_Diff"));
public static int WtInterval { get; } = FormatCom.ToInt(GetAppConfig("WT_Interval"));
public static int WtLenLimit { get; } = FormatCom.ToInt(GetAppConfig("WT_LenLimit"));
public static int WtReceivedBytesThreshold { get; } = FormatCom.ToInt(GetAppConfig("WT_ReceivedBytesThreshold"));
public static int WTDiscardInBufferFlag { get; } = FormatCom.ToInt(GetAppConfig("WT_DiscardInBuffer_Flag"));
public static int WtTransmitFlag { get; } = FormatCom.ToInt(GetAppConfig("WT_Transmit_Flag"));
public static string WtTransmitCom { get; } = GetAppConfig("WT_Transmit_Com");
/// <summary>
/// 指示灯继电器串口
/// </summary>
public static string LightRelayCom { get; } = GetAppConfig("Light_Relay_COM");
public static int LightRelayBaudRate { get; } = FormatCom.ToInt(GetAppConfig("Light_Relay_BaudRate"));
public static int LightInterval { get; } = FormatCom.ToInt(GetAppConfig("Light_Interval"));
public static int LightBlink { get; } = FormatCom.ToInt(GetAppConfig("Light_Blink"));
/// <summary>
/// Led控制
/// </summary>
public static string LedIp { get; } = GetAppConfig("Led_Ip");
public static short LedPort { get; } = FormatCom.ToShort(GetAppConfig("Led_Port"));
public static int BoardThreadInterval { get; } = FormatCom.ToInt(GetAppConfig("BoardThread_Interval"));
public static int BoardType { get; } = FormatCom.ToInt(GetAppConfig("Board_Type"));
/// <summary>
/// 跑马灯
/// </summary>
public static int ScrollTextInterval { get; } = FormatCom.ToInt(GetAppConfig("ScrollText_Interval"));
public static int ScrollTextGap { get; } = FormatCom.ToInt(GetAppConfig("ScrollText_Gap"));
/// <summary>
/// 超时检测
/// </summary>
public static int InTimeOut { get; } = FormatCom.ToInt(GetAppConfig("InTimeOut"));
public static int OutTimeOut { get; } = FormatCom.ToInt(GetAppConfig("OutTimeOut"));
public static int BillInterval { get; } = FormatCom.ToInt(GetAppConfig("Bill_Interval"));
public static int SavePhotoDay { get; } = FormatCom.ToInt(GetAppConfig("SavePhoto_Day"));
public static int IsPretreatPlate { get; } = FormatCom.ToInt(GetAppConfig("IsPretreatPlate"));
public static int ShowDebug { get; } = FormatCom.ToInt(GetAppConfig("ShowDebug"));
public static int ShowTrailer { get; } = FormatCom.ToInt(GetAppConfig("ShowTrailer"));
}
}

29
AutoWeightServer/Model/Config/VoiceConfig.cs

@ -0,0 +1,29 @@
using System;
namespace EC.AutoWeightServer.Model.Config
{
public class VoiceConfig : BaseConfig
{
public static string InStartHint { get; } = GetVoiceConfig("InStartHint");
public static string InStartHint2 { get; } = GetVoiceConfig("InStartHint2");
public static string InStartHelp { get; } = GetVoiceConfig("InStartHelp");
public static string InStableWeightHelp { get; } = GetVoiceConfig("InStableWeightHelp");
public static string InFinishHint { get; } = GetVoiceConfig("InFinishHint");
public static string InFinishHint2 { get; } = GetVoiceConfig("InFinishHint2");
public static string InFinishHelp { get; } = GetVoiceConfig("InFinishHelp");
public static string OutStartHint { get; } = GetVoiceConfig("OutStartHint");
public static string OutStartHint2 { get; } = GetVoiceConfig("OutStartHint2");
public static string OutStartHelp { get; } = GetVoiceConfig("OutStartHelp");
public static string OutStableWeightHelp { get; } = GetVoiceConfig("OutStableWeightHelp");
public static string OutFinishHint { get; } = GetVoiceConfig("OutFinishHint");
public static string OutFinishHint2 { get; } = GetVoiceConfig("OutFinishHint2");
public static string OutFinishHelp { get; } = GetVoiceConfig("OutFinishHelp");
public static int HintInterval { get; } = FormatCom.ToInt(GetVoiceConfig("HintInterval"));
}
}

40
AutoWeightServer/Model/EventArgsEx/PlateEventArgs.cs

@ -0,0 +1,40 @@
using System;
namespace EC.AutoWeightServer.Model.EventArgsEx
{
public class PlateEventArgs : EventArgs
{
private string plate;
private string plateColor;
private string fileName;
//事件参数重载
public PlateEventArgs(string plate, string plateColor, string fileName = "")//当输入内容为字符
{
this.plate = plate;
this.plateColor = plateColor;
this.fileName = fileName;
}
/// <summary>
/// 车牌
/// </summary>
public string Plate
{
get { return plate; }
}
/// <summary>
/// 车牌颜色
/// </summary>
public string PlateColor
{
get { return plateColor; }
}
public string FileName
{
get { return fileName; }
}
}
}

27
AutoWeightServer/Model/EventArgsEx/ScaleEventArgs.cs

@ -0,0 +1,27 @@
using System;
namespace EC.AutoWeightServer.Model.EventArgsEx
{
/// <summary>
/// 称重事件
/// </summary>
public class ScaleEventArgs : EventArgs
{
/// <summary>
/// 重量
/// </summary>
public decimal Weight { get; }
/// <summary>
/// 重量单位
/// </summary>
public string Units { get; }
//事件参数重载
public ScaleEventArgs(decimal weight, string units = "kg")
{
this.Weight = weight;
this.Units = units;
}
}
}

36
AutoWeightServer/Model/State/BillState.cs

@ -0,0 +1,36 @@
using System.Collections;
namespace EC.AutoWeightServer.Model.State
{
/// <summary>
/// 运单状态
/// InStart(10):进入开始; InWeight(11):进入称重; InFinish(12):进入结束;
/// OutStart(20):离开开始; OutWeight(21):离开称重; OutPrint(22):离开打印小票; OutFinish(23):离开结束;
/// </summary>
public enum BillState
{
Interrupt = 0,
InStart = 10,
InWeight = 11,
InFinish = 12,
OutStart = 20,
OutWeight = 21,
OutPrint = 22,
OutFinish = 23
}
public static class BillStateExt
{
public static string GetBillStateDesc(int state)
{
var table = new Hashtable
{
{(int) BillState.InStart, "入场开始"},
{(int) BillState.InFinish, "入场结束"},
{(int) BillState.OutStart, "出场开始"},
{(int) BillState.OutFinish, "出场结束"}
};
return (string)table[state];
}
}
}

13
AutoWeightServer/Model/State/CarState.cs

@ -0,0 +1,13 @@
namespace EC.AutoWeightServer.Model.State
{
/// <summary>
/// 当前称重状态
/// Empty:空闲; In:进入; Out:离开;
/// </summary>
public enum CarState
{
Empty = 0,
In = 1,
Out = 2
}
}

16
AutoWeightServer/Model/Type/PhotoType.cs

@ -0,0 +1,16 @@
namespace EC.AutoWeightServer.Model.Type
{
/// <summary>
/// 图片类型
/// 0-头像 10-入场前照片 11-入场后照片 20-出场前照片 21-出场后照片 30-签字照片
/// </summary>
public enum PhotoType
{
Head = 0,
InStart = 10,
InFinish = 11,
OutStart = 20,
OutFinish = 21,
Sign = 30
}
}

83
AutoWeightServer/Program.cs

@ -0,0 +1,83 @@
using EC.AutoWeightServer.UI;
using EC.Utils.Storage;
using System;
using System.Data.SqlClient;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace EC.AutoWeightServer
{
internal static class Program
{
private static Mutex _mutex;
/// <summary>
/// 应用程序的主入口点
/// </summary>
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += Application_ThreadException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
// 在应用程序启动时运行的代码
log4net.Config.XmlConfigurator.Configure();
_mutex = new Mutex(false, "FrmServer", out var bCreatedNew);
if (bCreatedNew)
{
LocalStorage.Init();
var frmMainServer = new FrmMainServer { StartPosition = FormStartPosition.CenterScreen };
Application.Run(frmMainServer);
}
else
{
MessageBox.Show("程序已经运行!不能重复运行!");
}
}
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
string str = GetExceptionMsg(e.Exception, e.ToString());
LogUnit.Error("全局异常捕获 CSUI:\r\n" + str);
// logService.WriteDbLog(4, "9", "卷丝-全局异常捕获", "CSUI", false, str);
MessageBox.Show("操作执行异常,可尝试重新执行!\r\n\r\n" + e.Exception.Message, "UIException " + e.Exception.GetType().Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
Environment.Exit(1);
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
LogUnit.Error("全局异常捕获 CSUnUI:\r\n" + str);
// logService.WriteDbLog(4, "9", "卷丝-全局异常捕获", "CSUnUI", false, str);
MessageBox.Show("操作执行异常,程序即将关闭!\r\n\r\n" + (e.ExceptionObject as Exception)?.Message, "UnUIException " + (e.ExceptionObject as Exception)?.GetType().Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
Environment.Exit(1);
}
private static string GetExceptionMsg(Exception ex, string backStr)
{
string num = (ex.GetType().Name != "SqlException") ? "" : " " + (ex as SqlException).Number.ToString();
var builder = new StringBuilder();
builder.AppendLine("【出现时间】:" + DateTime.Now);
if (ex != null)
{
builder.AppendLine("【异常类型】:" + ex.GetType().Name + num);
builder.AppendLine("【异常信息】:" + ex.Message);
builder.AppendLine("【堆栈调用】:" + ex.StackTrace);
}
else
{
builder.AppendLine("【未处理异常】:" + backStr);
}
return builder.ToString();
}
}
}

35
AutoWeightServer/Properties/AssemblyInfo.cs

@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("AutoWeight")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("广东钰诚信息科技有限公司")]
[assembly: AssemblyProduct("AutoWeight")]
[assembly: AssemblyCopyright("广东钰诚信息科技有限公司")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//将 ComVisible 设置为 false 将使此程序集中的类型
//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("3dfef5c8-0b46-4a3d-b102-bf1e39134f3b")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

403
AutoWeightServer/Properties/Resources.Designer.cs

@ -0,0 +1,403 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace EC.AutoWeightServer.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EC.AutoWeightServer.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap comport {
get {
object obj = ResourceManager.GetObject("comport", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap connected {
get {
object obj = ResourceManager.GetObject("connected", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap database {
get {
object obj = ResourceManager.GetObject("database", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Loading {
get {
object obj = ResourceManager.GetObject("Loading", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Loading_80 {
get {
object obj = ResourceManager.GetObject("Loading_80", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap logo {
get {
object obj = ResourceManager.GetObject("logo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap max1 {
get {
object obj = ResourceManager.GetObject("max1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap max2 {
get {
object obj = ResourceManager.GetObject("max2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap min {
get {
object obj = ResourceManager.GetObject("min", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap ok32 {
get {
object obj = ResourceManager.GetObject("ok32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap ok64 {
get {
object obj = ResourceManager.GetObject("ok64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Status {
get {
object obj = ResourceManager.GetObject("Status", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
/// </summary>
internal static System.Drawing.Icon title {
get {
object obj = ResourceManager.GetObject("title", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap top1 {
get {
object obj = ResourceManager.GetObject("top1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap top2 {
get {
object obj = ResourceManager.GetObject("top2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap unconnected {
get {
object obj = ResourceManager.GetObject("unconnected", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("关闭", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 32 {
get {
object obj = ResourceManager.GetObject("删除32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 64 {
get {
object obj = ResourceManager.GetObject("删除64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap __3_ {
get {
object obj = ResourceManager.GetObject("打印 (3)", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("指纹", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 64 {
get {
object obj = ResourceManager.GetObject("摄像头红色64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 绿64 {
get {
object obj = ResourceManager.GetObject("摄像头绿色64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("标题", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("签字", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap __3_ {
get {
object obj = ResourceManager.GetObject("签字 (3)", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("红灯警示", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 60 {
get {
object obj = ResourceManager.GetObject("红灯警示60", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 60 {
get {
object obj = ResourceManager.GetObject("红灯闪烁60", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 绿 {
get {
object obj = ResourceManager.GetObject("绿灯警示", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 绿60 {
get {
object obj = ResourceManager.GetObject("绿灯警示60", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 绿60 {
get {
object obj = ResourceManager.GetObject("绿灯闪烁60", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("航天", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("重置", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

311
AutoWeightServer/Properties/Resources.resx

@ -0,0 +1,311 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="database" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH4wEJAhY5XHVMBwAAA0dJREFU
OE91ku1PU3cUx08XXEIcyZZoXJbMt4uMmT0A/8F0b1iW7I2JBqa4RcGiRAUipRVWaCcwuVD6eNtS+mxb
aAGFlq62thb7hJhZVNymc24zzAG+1WTf/X7dGL7ZST45J+d+z/n9vvde2gyr1Uomk4kcDjs5nS5yuVzk
drtL8Jr37HZ7ScO1/4XBKNLwyCi5vZdoLjJP5+VdZXqd/g2T0bhTFM1vcXjNeq8rumRlXMO1glZHBtFM
pL7QTwcPHpLY7I5K/8Rky1wkIiaSqUTqenopvXDjJw6veW8uHDFxDdd+fqhBouofJJoMTpHPP/FJ9Gp8
Jbd4E7duF1G8cw/Ld1dwZ+V+CV7zHn/GNH9x7aXAxL6J0BRRMDRNXp9fkUovIJMrYCGb/38yOWTyi4wC
pi9fkYfno0RyRTedbeuQu9we5NkNskyQSKURi1/DfCyOaCyBePI60mz41vdFPPj5EW4Xl6HVG2ROl5vo
q+PNVH+k8Wifuv95JBrDNTYcZjk0M4tAcBpXwlFkC0v48eEjPFn9A2trG7iRzT1X9qoaNaM6ombpSbak
qb39nAJK9SAGhFEMa40Y0hhwUaOH0WKHPziD2UgMnkAIYw4PzGMOKPvUZwa+HSI6dfoMNZ2QKoaGNXB6
AhC0Jsi6VTjV1oVjLWfR1NqBDrkSqoFhmMfdSKYzKDCrQ4JGZrHaiKStp6n+cOOXveoLL8Lz35W8B0LT
sLGTDGYb7G4foleTKN69j9+erGJtfQOZbO5Fj7LvqGVs/J+fqf6LIz3tnVsWBC27/ogOg4IWOtEG3yR7
Fy9bsDlwrrNLDqA0v62+4fCIoNHC6d2y0NrOLbShedPC4JaFxZtLUJzvFthsGV9QVvfpZydV3/Sv86/A
LQSnLpeWWe0eeNmp8eQClu/9gF9/X8Wfa+vI5QsbzdIW6eYCSXl5+e6P9+0/0SmT+y4KIwWt3vRYZxSf
mizjz5xe/7OZ2cjTWCL1S3BqJi+KFv+x403SioqKt/ksPXj4mC95hfEaY/eOHTtrKyvfrXtv794D73/w
YcNH1TUNNTW1B6qra+t27XqzhmsY2/lMz9e9LL0U7+zZw5OEwa+2jfHqv/Ca9yRVVVUsbQbR34CdOwv2
Wxf2AAAAAElFTkSuQmCC
</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="打印 (3)" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\打印 (3).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="航天" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\航天.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="摄像头绿色64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\摄像头绿色64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="删除64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\删除64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="签字 (3)" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\签字 (3).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="unconnected" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsOAAALDgFAvuFBAAAAB3RJ
TUUH4wEJACwdRluiwQAAA49JREFUOE9dU21IW2cUvtCxwqqSqhcbTXoNpkVSHIPY4YqNs0n9CmgwogQd
VRQxc0Ergjiqc0ERjIK0QcxkZqzrtqqgaErUfDQfjYlJrI1N1FX7o+g6so3C4lYytu7ZezNB2IHD/Xjf
5znPed7zUv8Pj8dDra2tveXz+URer1e8sbEhDofD4r29PfHOzo44FAqJA4GAeH19/T2yJ+kYdhIWi4Ui
C2lGo9Gl0+l+HR0djY6MjESHh4ejAwMD0Z6enqhGo/l5cHDwudVqvXoMO4mVlRXK7/fTBBTp6OhAZ2cn
2tvb0dLSgvr6eigUChQXF6OpqenIbDbLjmEnwRIQ2bRWqw2zADbr6upQXV2NiooKFBUVIS8vj/2OEQJp
AmAwGKixsbFETk5OUgcHB2d7e3ufymQySKVSFBYWIj8/HyKRCAzDID09HXK5PLa8vCylHA5Hzvz8vHpu
bk6zsLCgWVpa+oQs9I6Pj79sbW1lpaKyshIZGRngcDiJTE5ORnl5+X8EBKwcGhr6s7+/H319fSCV0dXV
BbVajcYbN1BbW4t2jQbnuFycIcAzSUl4+/RplJSUxFZXV2XUzMyMsru7O84C2tra0NzcjIaGBihJz6Wl
pfhQIsHtxkYYSsugvybF7eJr+LSm5p/PtdofTQ8eFCUIiNS4UqkEm1VVVSgrK4OEAC+Lxfis4AM8Ib3v
ZvHwjMfHDo+HyJUrbyxt6omxiQlOgkClUsVZowoKChIO5+TkICsrC43Z2fAJhQjfvImQSoXHpA32/SlR
GMjO/mXq4sWPKWKekhxPnM/ng6bphEkpKSlIJXmHGBciBK8ePsTR4SGef30X8VgMP01N4Qkh+z4z000R
52vIcPzFVhWSzexTIBBASI5LTwgCqal4fFWCl6EQXh0d4YXZjM3cXATT0vAtTbvZOSianZ21k1Zci4uL
TuLsnt1u/2Pm3r3N73Jzf39EVFmaW7Dp9eKHYBB+iwU2uRw+MgvTNO2hyDyf2t3dfWd/f//dSCQyQaZw
m9yF1y6323VXofjNStR49Hqs63TwX7+OdaMRa7duYZl77s0Al3uHIhUTN9DpdF7e2tqyB4PBF+Tf4fb2
9jPT/ftffcHnWx2XLsFNiBzEHw+Rb7tw4e9xLlf/Pk2fPb4BFAWAmp6eTrbZbEKTySRyOhy8L4FTdQwj
NAgEj1bOn4+7GOb1KsPE9QLBNxKG4XyUmUn9C7YyA3J2dIFOAAAAAElFTkSuQmCC
</value>
</data>
<data name="connected" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsOAAALDgFAvuFBAAAAB3RJ
TUUH4wEJACwhaTTeRgAAA3tJREFUOE9tkm1sU1Ucxo8bBLYJUQwxUWIwLNEsBDQdCTFBmVtUEvGDE42g
foAQrFDedNNBKYy1CbNKoAakMi0JWWnX0o6u3t7etnfrLX27W9v19mXQdu1uX9e68KEGMqPk7+mYWQL+
kic5H/7Pk/N/zkGP43a7kdftWuZlAy2eiahggksIInd5QWKmJIincoLJWErAhuIC33joNZ/X+/SibQmb
zYZY5+/PKU1h5qw+N9d3M1/uxZLoCuVuda4susaX9yozlZPXo9N2x+i2RdsSVqsVTYwNr+1Tc7F9v1Vg
n6oCXwyU4ZOfZ2HnxRK09Rfg9TN52HU+9idB2jsWbUvUAiaZ4bUnVKHozgvFBdOO80Vo/74Ab8jysFmS
hXXHeXinj6sSpK0dkQ4G/TQcQzJdckEKYwSVx9XPHlUGIq29ORBgbRRnYUM3D88fycAqYRrQ3ml483S4
arFS7WiU8WzQOyJCDZ0Q6Zi0yOjJHjJ7Mz39unhx96U07LqYgjbpHViBjXXCGagX8VB3JAdvy+NVksI3
MBBjnWJ16q9vbszC1+oSHL5eggOqInyuLMCHihy8J+dhvzIKa07noeFMBZpkc9B47h7s+DVTpeyODqQ1
0Z3CgdT8Z1crsOeXMnx8eRY+wHt3yIuwVZqHlpM8HBsIPuw1cA+/uxmris3Je6eIVFVhmSzY7PbtSHPL
3rlHcXe+44ciNhVgO265Ztx0Kgvru2ZgtXAaupWe+w6KeGAy6i0umuqaCnrbWBfdSlHUaqTFAe/3T81v
FOfglR4eXjw+A88cTMPKA2mo3z8NdVjfXvWATnsDzGbzP9h0R6PRtJIkifAZoaERunNbb3y+6asMLPsy
A0/houpEWag/loflXQVoOFGEo9eCKeOQ+hBBEJ8aDAaBVCpdIZfLH727kRj76F351N8v4F1fOpuD9edK
8PKPFWhW/AHNl+bg1Stz0GOI+SCiaaj9Eb1ejyQSCZLJZI8CSMr+1pDVR2tpjjH5kk4qmEnS4cx9SzDD
DvsTTi3DeUwO9xUnOdJYC3gCO0XWp/xEYzTo38T6vJe9Hnfcfdv1wOUco4Lj/sMJP71mYtSyUjNiW/il
T1ArgmEYRNP0llAoRLMsy+OC8hzHJf1+/4XBwcEmXB7C+/9/wH8AAFKpVKvwUDMuqgUHrhOLxcsDgQAK
h8OLU4+D0L8qzjEg3mdFIAAAAABJRU5ErkJggg==
</value>
</data>
<data name="签字" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\签字.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="摄像头红色64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\摄像头红色64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="删除32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\删除32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Status" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAJOiAACTogED9RIiAAAAB3RJ
TUUH4wEJAy4nsCenqAAAAnBJREFUOE+Nj99L02EYxR/ryky3mDl/ZQlZSLqkTE1wUdZFQmSZP3IXhpWa
YpGVKGqkKV1kdBFddLGrb9MyCCzCmhqitjl1zk0bXYR5U9E/0ek9b/GFiKKHHXh4zuecvV+JvRcrazgu
kiIxkq4UryR/ET0yimWGWQEGpWYiy9Uwm+Np9e8z2uYLjY7FEqMndNi4FS7V4s4bPTJkmWGWE1PzNtXT
HNiOa8Hd6A7vRX+0EIMfnHgYLdfizhs9MmSZ+fUyiameSDYuBbYpcxe6Iw4MRAtwN1oC3/oI/OvPMBh1
qpsqUB4ZssyYBVXjPwvaglnoiuSif6UIDyKnMRLugyfUocv6VWlX2KEZssyYBZVeu9E0l46rizvRGd6D
20tOjK7ex8dvQcx8GsKd1WL0vd+PzuUczZBlxiyoeLPVuOhPxeWFTLSHstETyUPvUgGWv4wredEbPoCb
K3naI0OWGbOgfMxmnPfZ0TKfoZ/IV3SFHAh+HtPizhs9MmSZMQtOvNpi1M0monEuDa3qH64vZKMvUIrV
r9Na3HmjR4YsM2ZB2YuEx65pK+p9SWgKpKHtXS6GlwcwtTasxZ03emTIMmMWHH0e566cjIdryvb93Ewy
Gv3paPbtQIs/U4s7b/TIkGVGFzQuJUq+e5PDObTZdeSJtfbYU1t9tdcevOBLRoM/RYs7b/TIkGWGWRlC
phQbcVI2apGTL21ydjxFDrqt+WdeJ0brZm3qe23gzhs9MmSZYfa3sXSoT1K/2km7FLkTnKfGrOsUd97o
aeZfY2nfIFIhciWSIQWPLKUUd9609z9jvbFR5JBIlTdJi7u+/TEiPwA9AZ0tihLfygAAAABJRU5ErkJg
gg==
</value>
</data>
<data name="comport" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsQAAALEAGtI711AAAAB3RJ
TUUH4wEIFy0J5E+VbQAAAthJREFUOE+1U1tIk2EY/m6j7FLroovsItqltKFSiLpjOseGbooOT2PoMpzD
mCCupQSbhzmP29RtRNMUUbeZCDJEkeZhHlapaOWVIETXRlDw9P5LJciroAc+Xvj+/zm83/d+7F8glUov
1qU4/ygSiZjJZGIWi4VpNBqWmZnJxGIxUygUDADj8/k3zyi/wZGysrKYSqVK/HCPx0uuqqpSGGprzUS8
Ew6FmEAguCoUCu/q9fomu90euXATSyQJ4snxMcvJyUl9bDBYuzo6Dpzd3ac+rxcul+tzbU2NXafTBYi4
Ojc3F4tGo+ssIyMjKT09/VZaWtr1RzJZKrlZnQ7H0Vw4jPXVVbxdWcHU5CS8IyPw+3zoaG//6ff7D4LB
4EZra+so02q189TjSXV1dcRYX/9xcmICUSKtR6OIra1he3MT8e1tLC0u4qXfD0oESgK1Wj1NyVOY0+lE
IBDACDl4KWpfby/Gx8awwZFjMcS3tvAhHsfB3h4O9/fhHR7Gk7o6lJaWtlA7jFVUVJDAKCgWhoaG4KOY
nJjH7UZkYQHvd3awv7uLd1Snp6bwoq0NpoYGaMvKnlMSxgoLCzE7G8by0jLGx8cx5PFgYGAAg4OD6Orq
wgg5ckJ2mw1NZjNamptRUV7+tbi4WEaVMaWyAP29bQi88uDNbAgzMzNwk3tvT09CgBOjWUAlJdXrdFz0
eYlEInX197P7fD6XQNnR7bB8Ggs46JA64XY50O1w4GljI0LBIDo7O2EmZ5lU+iU/P98qEgqT8/LyWG5u
buL6mfWZiZFiqrFeb+3rsR55h23Q6SphMBiwGInARtFJ4Ft2dnaJSqlkHLlALj8bPcKDh1lMXaRiP77v
MJlMdlurLX6tUBQcatSaCPV/2kw9G43GMR6Pd+V86P4Ct8kJFZEQX5B5jd7ADZr7pJKSEgUdslkul6dw
838p+U+cO3CLe0g1dE00aImHxNX/AMZ+AUpQk2Vh/qLqAAAAAElFTkSuQmCC
</value>
</data>
<data name="关闭" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\关闭.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ok64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ok64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ok32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ok32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="红灯闪烁60" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\红灯闪烁60.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="绿灯闪烁60" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\绿灯闪烁60.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="标题" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\标题.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="红灯警示" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\红灯警示.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="绿灯警示" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\绿灯警示.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="红灯警示60" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\红灯警示60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="绿灯警示60" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\绿灯警示60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Loading.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Loading_80" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Loading_80.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="max1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\max1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="max2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\max2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="top1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\top1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="top2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\top2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="min" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\min.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\logo.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="指纹" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\指纹.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="title" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\title.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="重置" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\重置.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

26
AutoWeightServer/Properties/Settings.Designer.cs

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace EC.AutoWeightServer.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

5
AutoWeightServer/Properties/Settings.settings

@ -0,0 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles />
<Settings />
</SettingsFile>

69
AutoWeightServer/Properties/app.manifest

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
如果想要更改 Windows 用户帐户控制级别,请使用
以下节点之一替换 requestedExecutionLevel 节点。n
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
元素。
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
Windows 版本的列表。取消评论适当的元素,
Windows 将自动选择最兼容的环境。 -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- 指示该应用程序可以感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
选择加入。选择加入此设置的 Windows 窗体应用程序(目标设定为 .NET Framework 4.6 )还应
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。-->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
-->
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

BIN
AutoWeightServer/Resources/Loading.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
AutoWeightServer/Resources/Loading_80.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
AutoWeightServer/Resources/Thumbs.db

Binary file not shown.

BIN
AutoWeightServer/Resources/logo.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
AutoWeightServer/Resources/max1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

BIN
AutoWeightServer/Resources/max2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

BIN
AutoWeightServer/Resources/min.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

BIN
AutoWeightServer/Resources/ok32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
AutoWeightServer/Resources/ok64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
AutoWeightServer/Resources/top1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

BIN
AutoWeightServer/Resources/top2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
AutoWeightServer/Resources/关闭.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
AutoWeightServer/Resources/删除32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

BIN
AutoWeightServer/Resources/删除64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

BIN
AutoWeightServer/Resources/打印 (3).png

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

BIN
AutoWeightServer/Resources/指纹.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
AutoWeightServer/Resources/摄像头红色64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
AutoWeightServer/Resources/摄像头绿色64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
AutoWeightServer/Resources/标题.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
AutoWeightServer/Resources/签字 (3).png

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

BIN
AutoWeightServer/Resources/签字.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
AutoWeightServer/Resources/红灯警示.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
AutoWeightServer/Resources/红灯警示60.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
AutoWeightServer/Resources/红灯闪烁60.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
AutoWeightServer/Resources/绿灯警示.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
AutoWeightServer/Resources/绿灯警示60.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
AutoWeightServer/Resources/绿灯闪烁60.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
AutoWeightServer/Resources/航天.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

BIN
AutoWeightServer/Resources/重置.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

2402
AutoWeightServer/SDK/VzClientSDK.cs

File diff suppressed because it is too large

90
AutoWeightServer/SDK/Win32API.cs

@ -0,0 +1,90 @@
using System;
using System.Runtime.InteropServices;
namespace EC.AutoWeightServer.SDK
{
public class Win32API
{
[DllImport("User32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll", EntryPoint = "FindWindowEx")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
/// <summary>
/// 自定义的结构
/// </summary>
public struct My_lParam
{
public int i;
public string s;
}
/// <summary>
/// 使用COPYDATASTRUCT来传递字符串
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
//消息发送API
[DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(
IntPtr hWnd, // 信息发往的窗口的句柄
int Msg, // 消息ID
int wParam, // 参数1
int lParam //参数2
);
//消息发送API
[DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(
IntPtr hWnd, // 信息发往的窗口的句柄
int Msg, // 消息ID
int wParam, // 参数1
ref My_lParam lParam //参数2
);
//消息发送API
[DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(
IntPtr hWnd, // 信息发往的窗口的句柄
int Msg, // 消息ID
int wParam, // 参数1
ref COPYDATASTRUCT lParam //参数2
);
//消息发送API
[DllImport("User32.dll", EntryPoint = "PostMessage")]
public static extern int PostMessage(
IntPtr hWnd, // 信息发往的窗口的句柄
int Msg, // 消息ID
int wParam, // 参数1
int lParam // 参数2
);
//消息发送API
[DllImport("User32.dll", EntryPoint = "PostMessage")]
public static extern int PostMessage(
IntPtr hWnd, // 信息发往的窗口的句柄
int Msg, // 消息ID
int wParam, // 参数1
ref My_lParam lParam //参数2
);
//异步消息发送API
[DllImport("User32.dll", EntryPoint = "PostMessage")]
public static extern int PostMessage(
IntPtr hWnd, // 信息发往的窗口的句柄
int Msg, // 消息ID
int wParam, // 参数1
ref COPYDATASTRUCT lParam // 参数2
);
}
}

BIN
AutoWeightServer/Thumbs.db

Binary file not shown.

48
AutoWeightServer/UI/Base/FrmBase.Designer.cs

@ -0,0 +1,48 @@
namespace EC.AutoWeightServer.UI.Base
{
partial class FrmBase
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// FrmBase
//
this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(43)))), ((int)(((byte)(96)))));
this.ClientSize = new System.Drawing.Size(1372, 772);
this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
this.Name = "FrmBase";
this.Text = "FrmBase";
this.ResumeLayout(false);
}
#endregion
}
}

71
AutoWeightServer/UI/Base/FrmBase.cs

@ -0,0 +1,71 @@
using System;
using System.Windows.Forms;
namespace EC.AutoWeightServer.UI.Base
{
public partial class FrmBase : Form
{
public FrmBase()
{
InitializeComponent();
}
#region 日志
/// <summary>
/// Debug 日志
/// </summary>
/// <param name="message"></param>
public void LogDebug(string message)
{
LogUnit.Debug(this.GetType(), message);
}
/// <summary>
/// Info 日志
/// </summary>
/// <param name="message"></param>
public void LogInfo(string message)
{
LogUnit.Info(this.GetType(), message);
}
/// <summary>
/// Error 日志
/// </summary>
/// <param name="message"></param>
public void LogError(string message)
{
LogUnit.Error(this.GetType(), message);
}
/// <summary>
/// Debug 日志
/// </summary>
/// <param name="ex"></param>
public void LogDebug(Exception ex)
{
LogUnit.Debug(this.GetType(), ex);
}
/// <summary>
/// Info 日志
/// </summary>
/// <param name="ex"></param>
public void LogInfo(Exception ex)
{
LogUnit.Info(this.GetType(), ex);
}
/// <summary>
/// Error 日志
/// </summary>
/// <param name="ex"></param>
public void LogError(Exception ex)
{
LogUnit.Error(this.GetType(), ex);
}
#endregion 日志
}
}

120
AutoWeightServer/UI/Base/FrmBase.resx

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

48
AutoWeightServer/UI/Base/FrmModalBase.Designer.cs

@ -0,0 +1,48 @@
namespace EC.AutoWeightServer.UI.Base
{
partial class FrmModalBase
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// FrmModalBase
//
this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1600, 900);
this.Margin = new System.Windows.Forms.Padding(12, 12, 12, 12);
this.Name = "FrmModalBase";
this.Text = "FrmModalBase";
this.Load += new System.EventHandler(this.FrmModalBase_Load);
this.ResumeLayout(false);
}
#endregion
}
}

36
AutoWeightServer/UI/Base/FrmModalBase.cs

@ -0,0 +1,36 @@
using System;
using System.Windows.Forms;
namespace EC.AutoWeightServer.UI.Base
{
public partial class FrmModalBase : FrmBase
{
public FrmModalBase()
{
InitializeComponent();
//不限在任务栏
this.ShowInTaskbar = false;
//禁用 右下角拖拉
this.FormBorderStyle = FormBorderStyle.FixedSingle;
//软件中心位置
this.StartPosition = FormStartPosition.CenterParent;
}
public virtual void ShowMesage(string msg)
{
}
public void FinControlChic(Control control)
{
foreach (Control control1 in control.Controls)
{
ShowMesage(control1.Name);
}
}
private void FrmModalBase_Load(object sender, EventArgs e)
{
// FinControlChic(this);
}
}
}

120
AutoWeightServer/UI/Base/FrmModalBase.resx

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

61
AutoWeightServer/UI/Base/FrmServerBase.Designer.cs

@ -0,0 +1,61 @@
namespace EC.AutoWeightServer.UI.Base
{
partial class FrmServerBase
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmServerBase));
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.SuspendLayout();
//
// notifyIcon1
//
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "自动落筒服务程序";
this.notifyIcon1.Visible = true;
this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyicon_MouseClick);
//
// FrmServerBase
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(686, 386);
this.Name = "FrmServerBase";
this.Text = "FrmServerBase";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmServerBase_FormClosing);
this.Load += new System.EventHandler(this.FrmServerBase_Load);
this.SizeChanged += new System.EventHandler(this.FrmServerBase_SizeChanged);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.NotifyIcon notifyIcon1;
}
}

102
AutoWeightServer/UI/Base/FrmServerBase.cs

@ -0,0 +1,102 @@
using System;
using System.Threading;
using System.Windows.Forms;
namespace EC.AutoWeightServer.UI.Base
{
public partial class FrmServerBase : FrmBase
{
private bool EXIT_APP = false;
private const int WM_QUERYENDSESSION = 17; //0x0011
// public delegate void mydelegate(string str,bool isErr);
public FrmServerBase()
{
InitializeComponent();
}
#region 系统
private void FrmServerBase_Load(object sender, EventArgs e)
{
MenuItem menuitem = new MenuItem("退出");
notifyIcon1.ContextMenu = new ContextMenu(new MenuItem[] { menuitem });
menuitem.Click += new EventHandler(Menuitem_Click);
notifyIcon1.MouseClick += new MouseEventHandler(notifyicon_MouseClick);
// Thread.Sleep(2000);
}
private void notifyicon_MouseClick(object sender, MouseEventArgs e)
{
//throw new Exception("The method or operation is not implemented.");
if (this.WindowState == FormWindowState.Minimized)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
else if (this.WindowState == FormWindowState.Normal)
{
this.Activate();
}
}
private void Menuitem_Click(object sender, EventArgs e)
{
//throw new Exception("The method or operation is not implemented.");
StopServer();
Thread.Sleep(1000);
this.Dispose();
Application.Exit();
}
public virtual void StopServer()
{
throw new NotImplementedException();
}
private void FrmServerBase_SizeChanged(object sender, EventArgs e)
{
//如果最小化
if (this.WindowState == FormWindowState.Minimized)
{
HideWindow();
}
}
private void FrmServerBase_FormClosing(object sender, FormClosingEventArgs e)
{
if (!EXIT_APP)
{
e.Cancel = true;
HideWindow();
}
}
private void HideWindow()
{
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
this.Hide();
this.notifyIcon1.ShowBalloonTip(3000, "", "程序后台运行中", ToolTipIcon.Info); //弹出气泡提示
}
protected override void WndProc(ref Message message)
{
switch (message.Msg)
{
case WM_QUERYENDSESSION:
EXIT_APP = true;
break;
}
base.WndProc(ref message);
}
private void testToolStripMenuItem_Click(object sender, EventArgs e)
{
// SOCKET_SERVER.ShowClient();
}
#endregion 系统
}
}

200
AutoWeightServer/UI/Base/FrmServerBase.resx

@ -0,0 +1,200 @@
<?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>
<metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
+P/+P/j/gACAA/4h+MP+P/h//h/4//////8=
</value>
</data>
</root>

230
AutoWeightServer/UI/FrmBill.Designer.cs

@ -0,0 +1,230 @@

namespace EC.AutoWeightServer.UI
{
partial class FrmBill
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmBill));
this.dataGridView = new System.Windows.Forms.DataGridView();
this.SerialNumber = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.SiteName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.SupplierName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.MaterialNo = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.LicensePlate = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.TrailerPlate = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.DriverName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Driver2Name = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.BillWeight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.InWeight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.OutWeight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.NetWeight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.InStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.OutStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.State = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
this.SuspendLayout();
//
// dataGridView
//
this.dataGridView.AllowUserToAddRows = false;
this.dataGridView.AllowUserToDeleteRows = false;
this.dataGridView.AllowUserToResizeColumns = false;
this.dataGridView.AllowUserToResizeRows = false;
this.dataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.SerialNumber,
this.SiteName,
this.SupplierName,
this.MaterialNo,
this.LicensePlate,
this.TrailerPlate,
this.DriverName,
this.Driver2Name,
this.BillWeight,
this.InWeight,
this.OutWeight,
this.NetWeight,
this.InStartTime,
this.OutStartTime,
this.State});
this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView.Location = new System.Drawing.Point(0, 0);
this.dataGridView.Name = "dataGridView";
this.dataGridView.ReadOnly = true;
this.dataGridView.RowHeadersWidth = 47;
this.dataGridView.RowTemplate.Height = 23;
this.dataGridView.Size = new System.Drawing.Size(1382, 556);
this.dataGridView.TabIndex = 0;
this.dataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellContentClick);
//
// SerialNumber
//
this.SerialNumber.HeaderText = "运单号";
this.SerialNumber.MinimumWidth = 6;
this.SerialNumber.Name = "SerialNumber";
this.SerialNumber.ReadOnly = true;
//
// SiteName
//
this.SiteName.HeaderText = "场地";
this.SiteName.MinimumWidth = 6;
this.SiteName.Name = "SiteName";
this.SiteName.ReadOnly = true;
//
// SupplierName
//
this.SupplierName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
this.SupplierName.HeaderText = "供应商";
this.SupplierName.MinimumWidth = 6;
this.SupplierName.Name = "SupplierName";
this.SupplierName.ReadOnly = true;
this.SupplierName.Width = 78;
//
// MaterialNo
//
this.MaterialNo.HeaderText = "料号";
this.MaterialNo.MinimumWidth = 6;
this.MaterialNo.Name = "MaterialNo";
this.MaterialNo.ReadOnly = true;
//
// LicensePlate
//
this.LicensePlate.HeaderText = "运输车";
this.LicensePlate.MinimumWidth = 6;
this.LicensePlate.Name = "LicensePlate";
this.LicensePlate.ReadOnly = true;
//
// TrailerPlate
//
this.TrailerPlate.HeaderText = "挂车";
this.TrailerPlate.MinimumWidth = 6;
this.TrailerPlate.Name = "TrailerPlate";
this.TrailerPlate.ReadOnly = true;
//
// DriverName
//
this.DriverName.HeaderText = "运输员";
this.DriverName.MinimumWidth = 6;
this.DriverName.Name = "DriverName";
this.DriverName.ReadOnly = true;
//
// Driver2Name
//
this.Driver2Name.HeaderText = "押运员";
this.Driver2Name.MinimumWidth = 6;
this.Driver2Name.Name = "Driver2Name";
this.Driver2Name.ReadOnly = true;
//
// BillWeight
//
this.BillWeight.HeaderText = "运单重量";
this.BillWeight.MinimumWidth = 6;
this.BillWeight.Name = "BillWeight";
this.BillWeight.ReadOnly = true;
//
// InWeight
//
this.InWeight.HeaderText = "入场重量";
this.InWeight.MinimumWidth = 6;
this.InWeight.Name = "InWeight";
this.InWeight.ReadOnly = true;
//
// OutWeight
//
this.OutWeight.HeaderText = "出场重量";
this.OutWeight.MinimumWidth = 6;
this.OutWeight.Name = "OutWeight";
this.OutWeight.ReadOnly = true;
//
// NetWeight
//
this.NetWeight.HeaderText = "实际重量";
this.NetWeight.MinimumWidth = 6;
this.NetWeight.Name = "NetWeight";
this.NetWeight.ReadOnly = true;
//
// InStartTime
//
this.InStartTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
this.InStartTime.HeaderText = "入场时间";
this.InStartTime.MinimumWidth = 6;
this.InStartTime.Name = "InStartTime";
this.InStartTime.ReadOnly = true;
this.InStartTime.Width = 92;
//
// OutStartTime
//
this.OutStartTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
this.OutStartTime.HeaderText = "出场时间";
this.OutStartTime.MinimumWidth = 6;
this.OutStartTime.Name = "OutStartTime";
this.OutStartTime.ReadOnly = true;
this.OutStartTime.Width = 92;
//
// State
//
this.State.HeaderText = "状态";
this.State.MinimumWidth = 6;
this.State.Name = "State";
this.State.ReadOnly = true;
//
// FrmBill
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1382, 556);
this.Controls.Add(this.dataGridView);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FrmBill";
this.Text = "当日运单";
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataGridView dataGridView;
private System.Windows.Forms.DataGridViewTextBoxColumn SerialNumber;
private System.Windows.Forms.DataGridViewTextBoxColumn SiteName;
private System.Windows.Forms.DataGridViewTextBoxColumn SupplierName;
private System.Windows.Forms.DataGridViewTextBoxColumn MaterialNo;
private System.Windows.Forms.DataGridViewTextBoxColumn LicensePlate;
private System.Windows.Forms.DataGridViewTextBoxColumn TrailerPlate;
private System.Windows.Forms.DataGridViewTextBoxColumn DriverName;
private System.Windows.Forms.DataGridViewTextBoxColumn Driver2Name;
private System.Windows.Forms.DataGridViewTextBoxColumn BillWeight;
private System.Windows.Forms.DataGridViewTextBoxColumn InWeight;
private System.Windows.Forms.DataGridViewTextBoxColumn OutWeight;
private System.Windows.Forms.DataGridViewTextBoxColumn NetWeight;
private System.Windows.Forms.DataGridViewTextBoxColumn InStartTime;
private System.Windows.Forms.DataGridViewTextBoxColumn OutStartTime;
private System.Windows.Forms.DataGridViewTextBoxColumn State;
}
}

69
AutoWeightServer/UI/FrmBill.cs

@ -0,0 +1,69 @@
using EC.AutoWeightServer.Center;
using EC.AutoWeightServer.Model.State;
using System.Windows.Forms;
namespace EC.AutoWeightServer.UI
{
public partial class FrmBill : Form
{
private FrmMainServer _mainServer;
public FrmBill()
{
InitializeComponent();
BindData();
}
public FrmBill(FrmMainServer server)
{
InitializeComponent();
_mainServer = server;
BindData();
}
public void BindData()
{
var billList = ServiceCenter.BillService.GetTodayBillList();
foreach (var bill in billList)
{
var index = dataGridView.Rows.Add();
var i = 0;
dataGridView.Rows[index].Cells[i++].Value = bill.SerialNumber;
dataGridView.Rows[index].Cells[i++].Value = bill.SiteName;
dataGridView.Rows[index].Cells[i++].Value = bill.SupplierName;
dataGridView.Rows[index].Cells[i++].Value = bill.MaterialNo;
dataGridView.Rows[index].Cells[i++].Value = bill.LicensePlate;
dataGridView.Rows[index].Cells[i++].Value = bill.TrailerPlate;
dataGridView.Rows[index].Cells[i++].Value = bill.DriverName;
dataGridView.Rows[index].Cells[i++].Value = bill.Driver2Name;
dataGridView.Rows[index].Cells[i++].Value = bill.BillWeight;
dataGridView.Rows[index].Cells[i++].Value = bill.InWeight;
dataGridView.Rows[index].Cells[i++].Value = bill.OutWeight;
dataGridView.Rows[index].Cells[i++].Value = bill.NetWeight;
dataGridView.Rows[index].Cells[i++].Value = bill.InStartTime;
dataGridView.Rows[index].Cells[i++].Value = bill.OutStartTime;
dataGridView.Rows[index].Cells[i++].Value = BillStateExt.GetBillStateDesc(bill.State);
}
var btn = new DataGridViewButtonColumn
{
Name = "btnPrint",
HeaderText = "操作",
DefaultCellStyle = { NullValue = "打印" }
};
dataGridView.Columns.Add(btn);
}
private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || dataGridView.CurrentRow == null) return;
if (dataGridView.Columns[e.ColumnIndex].Name == "btnPrint")
{
if (_mainServer == null) return;
var cell = dataGridView.CurrentRow.Cells;
var billEntity = ServiceCenter.BillService.GetBillBySerialNumber(cell[0].Value.ToString());
_mainServer.DeviceCenter.PrintBill(billEntity);
}
}
}
}

562
AutoWeightServer/UI/FrmBill.resx

@ -0,0 +1,562 @@
<?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>
<metadata name="SerialNumber.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SiteName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SupplierName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MaterialNo.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LicensePlate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TrailerPlate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DriverName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Driver2Name.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BillWeight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="InWeight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="OutWeight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="NetWeight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="InStartTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="OutStartTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="State.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAS0sAAAEAIACQWwAAFgAAACgAAABLAAAAlgAAAAEAIAAAAAAAaFsAAMQOAADEDgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADa2PkIwr71IqOd8EJ7dOlsamHnfmlg5oFpYOaBaWDmgW5k53yBeupmr6vyNMvH9hgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPR+A6ble5KXlXlizEl
3bsRA9jdCwDW/woA1v8NANf/DwDX/w8A1/8PANf/DwDX/w8A1/8MANf/CgDW/w0A198ZCtnVPDHfr21l
53qnovA+3976AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACble5KMCTduwoA1t8IANb/CgDW/wwA
1/8OANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/DADW/woA
1v8JANb/DgHX30k/4aG0r/MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFwfYeX1fliRED190HANbfDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DgDX/wsA1v8JANbfIRXay3946mjf3voCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA09H4DmJa5oULANbfCQDW/w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DQDX/wkA1v8PAdffiYPsXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAB1buhyDQDX3wkA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/CQDW3yAU28uinPBEAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAw7/1ICsg3L8HANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8HANbfUknjlwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACBeupmCADW3wwA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CQDW3x8V2su1sfMuAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFa
5YUHANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A1/8OANf/DgDX/w4A1/8OANf/DgDX/w4A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8KANffmpTvTAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTLfrQYA
1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANb/CgDW/wkA1v8IANb/DQDX3xAB2N8VBtnZHA7Z0RwO2dEXCNnXEQLY3Q0A
198KANf/CADW/wgA1v8LANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/BQDV33Vt
6HIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4L9+xCQDW3w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8LANb/CgDX3xUH2NlDOOCncmnodp6Y70jFwfUe09D4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANnW
+QrGwvYeqqbxOoJ66mZLQeGfHRDazwoA1t8JANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wUA
1d96c+lsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgu3rEHANbfDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8LANb/CADW/xIE
19tTSeKXqKPxPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMG+9SJpYOeBHRHazwkA1t8LANb/DgDX/w8A1/8PANf/DwDX/w8A
1/8DANXfe3PpbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVU7ikQcA1t8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DADX/wsA1989Mt+toZrvRt/d
+gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCs8jRQReKbCwDX3woA1v8PANf/DwDX/w8A
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
7k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMROGbDwbX2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAZVvmhQgA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t/d2/kEAAAAAAAAAACWw/hKAGjs3wBs7f8Abe3/AG3t/wBt7f8AZ+zflsP4SgAAAAAAAAAAAAAAAEOz
9p3X7/0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFArY1QoA1v8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t98delqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwjY17Kt8jIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAADgHX3w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BwDW36yn
8TgAAAAAAAAAALXW+ioAaOzfAG3t/wBt7f8Abe3/AG3t/wBn7d93sfZoAAAAAAAAAAAAAAAALqf2sYXN
+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoINu/CgDW3w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8HANbfn5jvSAAAAAAAAAAAAAAAAAAAAAAAAAAA0c74ElVL45UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACqpfE6BgDV3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8HANbfYVjlhwAA
AAAAAAAAAAAAAAFq7d8AbO3/AG3t/wBt7f8Abe3/AGjt30uX8pUAAAAAAAAAAAAAAABXuveJCpny1QAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBG4pkFANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8OANf/BADW39zb+QQAAAAAAAAAAAAAAAAAAAAAAAAAAJ+Z70YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABlXOaDCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8XDdjTAAAAAAAA
AAAAAAAAI3/vvQBq7d8Abe3/AG3t/wBt7f8Aa+3/DHLu0wAAAAAAAAAAAAAAAIfO+lgAj/Pfwub8HgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLj0KAQA1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/CQDW/0tA4Z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMyfcWAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAmF9vJDADX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wQA1t+Zku5OAAAAAAAA
AAByr/VuAGbs3wBt7f8Abe3/AG3t/wBt7f8AZ+zfrdD5MgAAAAAAAAAAyen9FgCR8t8mp/W5AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOi7esQoA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+7tvQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANrX+QgNANffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CwDW/zgt3rMAAAAAAAAAANrq
/AYAau3fAG3t/wBt7f8Abe3/AG3t/wBp7P9KmPKVAAAAAAAAAAAAAAAAKaj1twCS8v+P0vpQAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHw/YcBgDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/woA1v9CNuCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALu29CoHANb/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BQDW37Gr8jQAAAAAAAAAADuP
8aUAaez/AG3t/wBt7f8Abe3/AG3t/wBo7N/O4/wSAAAAAAAAAACZ1vpGAJPy3wCV89/a8P0GAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnXeaDBwDW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8NANffAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAJKL7VQIANb/DwDX/w8A1/8PANf/DwDX/w8A1/8MANb/Kx7dwQAAAAAAAAAAwt37HgBm
7N8Abe3/AG3t/wBt7f8Abe3/AGrt/0KT8p0AAAAAAAAAAAAAAAAImfPXAJXy/yKl9b0AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnGtvFDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANbfsq7zMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHJp6HYJANb/DwDX/w8A1/8PANf/DwDX/w8A1/8FANbfkYntVgAAAAAAAAAASZjylwBp
7P8Abe3/AG3t/wBt7f8Abe3/AGjs38Hc+x4AAAAAAAAAAJPT+kwAk/LfAJTy/2XB+HoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8IANb/iIHrXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAEo+4aELANb/DwDX/w8A1/8PANf/DwDX/w4A1/8RBtfZAAAAAAAAAAAAAAAAAWvt3wBt
7f8Abe3/AG3t/wBt7f8Aa+3/KITwtwAAAAAAAAAAAAAAACio9bcAlvL/AJPy/67e+zIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANHO9xILANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/aV/mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACca28UPANf/DwDX/w8A1/8PANf/DwDX/wgA1v9gVuWJAAAAAAAAAACbxvhEAGjt3wBt
7f8Abe3/AG3t/wBt7f8AaOz/gbf2XgAAAAAAAAAA1+/9CACV8t8Al/L/AJXz/8np/BYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALiz8ywNANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANb/aWDmgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wYA1v+xq/I0AAAAAAAAAAAvh/GxAGrt/wBt
7f8Abe3/AG3t/wBt7f8AaOzfy+H7FAAAAAAAAAAAesn5ZgCU8v8Al/L/AJby/9jv/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/M9xQLANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANf/Z17mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wwB19/f3foCAAAAAAAAAAAAau3fAG3t/wBt
7f8Abe3/AG3t/wBs7f8Mc+3TAAAAAAAAAAAAAAAAKaj1twCW8/8Al/L/Apjz/9Xu/QoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/gXnqZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DADX/y4g3b8AAAAAAAAAAK/T+jAAaOzfAG3t/wBt
7f8Abe3/AG3t/wBr7f85jfGnAAAAAAAAAAAAAAAAA5jz3QCX8v8Al/P/Apjz/9fu/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlF9vJDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8FANb/tK/yMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/CADW/2JY5YcAAAAAAAAAAHq09mYAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9nqPR4AAAAAAAAAADO6/0SAJXy3wCY8/8Al/L/AZbz/9zx/gQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWuaFCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANff3tz5BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADgs37MNANf/DwDX/w8A1/8PANf/BwDV/5CI7VgAAAAAAAAAAE+a8pEAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P+IuvdYAAAAAAAAAACu3/syAJTy/wGY8/8Al/L/AJXy/8zq/RQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAvPQkBwDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wwA1v8wI9y9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGVc5YMJANb/DwDX/w8A1/8PANf/BwDW/7Ks8jQAAAAAAAAAADOL8K0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7P+nzPk4AAAAAAAAAACl2vs6AJPy/wCX8v8Al/L/AJXy/7Ph/CwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDDfrwoA1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+Xj+1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIZ+62IIANb/DwDX/w8A1/8PANf/CQDW/8fC9R4AAAAAAAAAAB1978MAa+3/AG3t/wBt
7f8Abe3/AG3t/wBr7f+21PoqAAAAAAAAAACQ0vpQAJTy/wGY8/8BmPP/AJTy/3XH+GoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7f0KAIA1d8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DQDX/xgL2dUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALKt8jIGANb/DwDX/w8A1/8PANf/CwDX/9vX+QgAAAAAAAAAABZ678kAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f/N4vwSAAAAAAAAAACP0fpQAJXz/wCX8v8Al/L/AJby/ymo9bcAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpA4Z8HANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/BADW35WO7lIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANPQ+BAJANbfDwDX/w8A1/8OANf/EAPY3d3a+QYAAAAAAAAAABR578sAbO3/AG3t/wBt
7f8Abe3/AG3t/wBr7f/F3vsaAAAAAAAAAACl2/s6AJPy/wCX8v8Al/L/AJfy/wGX898AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASCtjVDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8MANf/GxDazwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjv/QgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAZCtnVDgDX/w8A1/8NANf/GArY1QAAAAAAAAAAAAAAABh878cAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f+t0PkyAAAAAAAAAACy4PsuAJTy/wCX8v8Al/L/AJfy/wCU8t+h2fs+AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJxfcaBQDV3w4A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8EANXfx8P2HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJLT+k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABJPuGhCgDW/w8A1/8NANf/GgvZ1QAAAAAAAAAAAAAAACOB8L0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7f+ex/hCAAAAAAAAAADM6v0UAJXy3wCY8/8Al/L/AJfy/wCV8v9BsvafAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkovtVAMA1d8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wEA
1d+Wj+5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6395EAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACSjO1UBgDW/w8A1/8OANf/EQTY29/c+QQAAAAAAAAAADyP8qMAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P96svZmAAAAAAAAAAAAAAAAA5fz3QCX8v8Al/L/AJfy/wCX8v8AlPLf1O79DAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVc5oMIANb/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/AwDV35CK
7VYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArd78MkWz95sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADV0/gMBwDW3w8A1/8PANf/CgDW/93b+QQAAAAAAAAAAFyh9IMAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9Xn/OJAAAAAAAAAAAAAAAAJKX1uwCW8v8Al/L/AJfy/wCX8v8AlfL/P7H2oQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN/d+gIKAtfdDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8LANffjYfsWAAA
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
8t8Al/P/AZjz/wCX8v8AkvLfzOr9FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqIty9iIHrXgAAAAAAAAAAAAAAAAAA
AAAOc+7RAGzt/wBt7f8Abe3/AG3t/wBt7f8AaOzfXqP0gQAAAAAAAAAAAAAAAAAAAABVuveLAJPy3wCX
8v8Al/L/AZjz/wCX8v8BmPP/AZjz/wGY8/8AmPP/AJbz/wCW8t8+sPahndf6Qt7x/QIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc8f0Em9b6RDOs9q0AlfPfAJby/wCX
8v8Al/L/AJfy/wCT8t+m2/s6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADe3PkELyLdvQAAAAAAAAAAAAAAAAAA
AACpzvk2AGXs3wBt7f8Abe3/AG3t/wBt7f8Abe3/AGbs38Hc+x4AAAAAAAAAAAAAAAAAAAAAMar1rwCU
898AmPL/AJfy/wCX8v8Al/L/AZjz/wCX8v8Al/L/AJfy/wCX8v8AlfL/AJTy/waZ89lPt/aRhs76WrPg
/CzN6/0SAAAAAN7x/gIAAAAAAAAAAMjp/Rit3vsyhM36XEm095cAl/LfAJTy/wCW8v8Al/L/AJfy/wCX
8v8Al/L/AJPy34XN+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz8z4FLKu8jIAAAAAAAAAAAAA
AAAAAAAAXaH0gwBn7N8Abe3/AG3t/wBt7f8Abe3/AGvt/w5x7tEAAAAAAAAAAAAAAAAAAAAAAAAAAFG3
948Ak/LfAJfy/wCX8v8Al/L/AZfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AJfy/wCW8v8AlfL/AJXy/wCV
8/8AlvPfAJby3wCX8t8Al/LfAJby3wCW8t8AlfL/AJTy/wCW8/8Al/L/AZfy/wGY8/8Al/L/AJfy/wCW
8v8AlPLfh875WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANLP+BAAAAAAAAAAAAAA
AAAAAAAAAAAAACeC8LkAau3fAG3t/wBt7f8Abe3/AG3t/wBp7d8kgPC7AAAAAAAAAAAAAAAAAAAAAAAA
AABhvvh+AJTz3wCW8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wGY8/8Al/L/AJXy/wGX
89+b1vpEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAHbe3ZAGrt/wBt7f8Abe3/AG3t/wBt7f8AaO3fQJHxnwAAAAAAAAAAAAAAAAAA
AAAAAAAApNr7PACW898AlfL/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8AlPLfKqf0tc7r
/RIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADY6PwID3Pu0QBr7f8Abe3/AG3t/wBt7f8Abe3/AGjt30aU8pkAAAAAAAAAAAAA
AAAAAAAAAAAAANrw/QZau/eFAJXy3wCV8v8Al/L/AJfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCY8v8Al/L/AJTz3w6c89GCzPleAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA2On8CA907tEAau3/AG3t/wBt7f8Abe3/AG3t/wBo7N8jf/C93Ov9BAAA
AAAAAAAAAAAAAAAAAAAAAAAA0ez9DlG4948AlfPfAJTy/wCW8v8Al/L/AJfy/wGY8/8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJXy/wCU8t8JmfPXf8r5YAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANvq/AQ3jPGpAGnt3wBt7f8Abe3/AG3t/wBt7f8Aau3/DnPu0avP
+TQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADS7f0Oh876WDOs9a0Cl/PdAJXz3wCV8v8AlfL/AJXy/wCV
8v8AlvL/AJXy/wCV8v8AlfL/AJTy/wCW898PnvPRTrf2kaDZ+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY6X0fABp7d8Aa+3/AG3t/wBt7f8Abe3/AGvt/wBp
7d9cofSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqNz7OHDE+HBKtfaVOq/2pS2p
9LMnp/S5Mqv1rTuv9aVTufaNfcr5YsLm/B4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALjW+igwh/CvAGjt3wBs7f8Abe3/AG3t/wBt
7f8Aae3fEHXuz46+91IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjL33VBB17s8Aae3fAGvt/wBt
7f8Abe3/AGzt/wBo7N8Mcu3TfrX2Yt7s/QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACex/hCOIzwpwBp
7d8Aaez/AGvt/wBs7f8AbO3/AGnt/wFt7d9GlPKZksD3Tsvh+xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTd
+xx5svVmMYjwrwVw7dsAau3fAGrt/wBn7f8AZez/AGfs/wBq7d8GcO7ZQZPyn2Om9HySwfdOncf4QsHb
+x7d7P0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADK4PsWocn4PoW59lpIlfKXJ4PwuR5+78ErhfC1VJ30i4K39l6ly/k6xt/7GgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD////////////gAAD////////////gXMD////////////gAAD////////////gXMD////////////g
AAD////8AD/////gCAL////AAAH////gAAD///8AAAB////gAAD///gAAAAP///gAAD//+AAAAAH///g
OgD//8AAAAAB///gTwD//wAAAAAA///gcwD//gAAAAAAP//gXAD//AAAAAAAH//gXAD/+AAAAAAAD//g
cgD/8AAAA/AAB//gbwD/4AAA///AA//gdAD/wAAD///4Af/gcAD/gAAf///+AP/gAAD/AAB+AH//gP/g
AAD/AAHwB///4H/gAAD+AAPAH///8D/gAAD8AAcAf////D/gAAD8AB4B//wB/h/gAAD4ADgH/+AAfx/g
AAD4AHAO/8AAH4/gAADwAOAd/wAAD8/gAADwAMA5/wAAB+fgAADwAYBz/gAAA+fgAADgA4Dn/AAAAffg
AADgBwHH+AAAAfvgAADgBgGP+AAAAP/gAADADAOP8AAAAP/gAADADAMP8AAAAP/gAADAGAcf8AAAAH/g
AADAGAYf8AAAAH/gAADAOA4f4AAAAH/gAADAMAwf4AAAAH/gAADAMAwf4AAAAH/gAADAMBwf8AAAAH/g
AADAYBwf8AAAAH/gAADAYBgf8AAAAH/gAADAYBgf8AAAAP/gAADAYBgf+AAAAP/gAADAYBgf+AAAAf/g
AADAYBgf/AAAAf/gAADAYBgf/gAAA/fgAADg4BgP/gAAA/fgAADg4BgP/wAAB/fgAADgYBwH/4AAD+fg
AADgYBwH/4AAH+fgAADwYBwD/8AAP8fg4/nwYBwD/8AA/8/gAAD4cA4B/8AD/4/gTCD4cA4A/4AP/w/g
AAD8cA8AfgB//h/gAAD8eAcAP////B/gAAD+OAeAH///+D/gAAD+PAOAB///4H/gAAD/PAPAAf//gH/g
4vn/ngHgAD/8AP/gAAD/ngDwAALAAf/gXMD/zwD4AAAAA//gAAD/74B8AAAAB//gAAD//8A+AAAAD//g
AAD//8AfAAAAP//gAAD//+AHwAAA///gAAD///AD8AAD///g4/n///wB/wAf///gAAD///4Af//////g
XMD///+AD//////gAAD////gAf/////g4/n////4AAP////gAAD/////gA/////g6Ov////////////g
AAA=
</value>
</data>
</root>

832
AutoWeightServer/UI/FrmMainServer.Designer.cs

@ -0,0 +1,832 @@
namespace EC.AutoWeightServer.UI
{
partial class FrmMainServer
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMainServer));
this.label2 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.labelUserInfo = new System.Windows.Forms.Label();
this.BtnHistory = new System.Windows.Forms.Button();
this.LabelLight = new System.Windows.Forms.Label();
this.panel5 = new System.Windows.Forms.Panel();
this.LabelSite = new System.Windows.Forms.Label();
this.LabelCompany = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.panel4 = new System.Windows.Forms.Panel();
this.label10 = new System.Windows.Forms.Label();
this.LabelWeight = new System.Windows.Forms.Label();
this.LabelPlate = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.BtnReset = new System.Windows.Forms.Button();
this.LabelState = new System.Windows.Forms.Label();
this.panel3 = new System.Windows.Forms.Panel();
this.panel11 = new System.Windows.Forms.Panel();
this.panel9 = new System.Windows.Forms.Panel();
this.btnOut = new System.Windows.Forms.Button();
this.btnIn = new System.Windows.Forms.Button();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.panel6 = new System.Windows.Forms.Panel();
this.lightLabel4 = new System.Windows.Forms.Label();
this.lightLabel3 = new System.Windows.Forms.Label();
this.lightLabel2 = new System.Windows.Forms.Label();
this.lightLabel1 = new System.Windows.Forms.Label();
this.LabelLoading = new System.Windows.Forms.Label();
this.ucWelcome = new EC.AutoWeightServer.UI.UC.UCWelcome();
this.ucCarOut = new EC.AutoWeightServer.UI.UC.UCCarOut();
this.ucCarIn = new EC.AutoWeightServer.UI.UC.UCCarIn();
this.panel2 = new System.Windows.Forms.Panel();
this.btnTop = new System.Windows.Forms.PictureBox();
this.btnMin = new System.Windows.Forms.PictureBox();
this.btnMax = new System.Windows.Forms.PictureBox();
this.btnClose = new System.Windows.Forms.PictureBox();
this.LabelTime = new System.Windows.Forms.Label();
this.panel8 = new System.Windows.Forms.Panel();
this.RcTextBox = new System.Windows.Forms.RichTextBox();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.ucLicensePlate4 = new EC.AutoWeightServer.UI.UC.UCLicensePlate();
this.ucLicensePlate2 = new EC.AutoWeightServer.UI.UC.UCLicensePlate();
this.ucLicensePlate3 = new EC.AutoWeightServer.UI.UC.UCLicensePlate();
this.ucLicensePlate1 = new EC.AutoWeightServer.UI.UC.UCLicensePlate();
this.label14 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.PanelScrollText = new System.Windows.Forms.Panel();
this.LabelScrollText = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
this.panel5.SuspendLayout();
this.panel4.SuspendLayout();
this.panel3.SuspendLayout();
this.panel9.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.panel6.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.btnTop)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnMin)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnMax)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnClose)).BeginInit();
this.panel8.SuspendLayout();
this.PanelScrollText.SuspendLayout();
this.SuspendLayout();
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("微软雅黑", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.label2.Location = new System.Drawing.Point(72, 3);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(373, 51);
this.label2.TabIndex = 2;
this.label2.Text = "汽车衡无人值守系统";
//
// panel1
//
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
this.panel1.Controls.Add(this.labelUserInfo);
this.panel1.Controls.Add(this.BtnHistory);
this.panel1.Controls.Add(this.LabelLight);
this.panel1.Controls.Add(this.panel5);
this.panel1.Controls.Add(this.panel4);
this.panel1.Controls.Add(this.BtnReset);
this.panel1.Controls.Add(this.LabelState);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(1, 72);
this.panel1.Margin = new System.Windows.Forms.Padding(0);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(9, 0, 0, 0);
this.panel1.Size = new System.Drawing.Size(1634, 132);
this.panel1.TabIndex = 5;
//
// labelUserInfo
//
this.labelUserInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelUserInfo.AutoSize = true;
this.labelUserInfo.Font = new System.Drawing.Font("微软雅黑", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.labelUserInfo.ForeColor = System.Drawing.SystemColors.ActiveBorder;
this.labelUserInfo.Location = new System.Drawing.Point(1438, 24);
this.labelUserInfo.Name = "labelUserInfo";
this.labelUserInfo.Size = new System.Drawing.Size(92, 27);
this.labelUserInfo.TabIndex = 33;
this.labelUserInfo.Text = "管理员:";
this.labelUserInfo.Visible = false;
//
// BtnHistory
//
this.BtnHistory.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.BtnHistory.Location = new System.Drawing.Point(1542, 64);
this.BtnHistory.Name = "BtnHistory";
this.BtnHistory.Size = new System.Drawing.Size(79, 45);
this.BtnHistory.TabIndex = 32;
this.BtnHistory.Text = "今日运单";
this.BtnHistory.UseVisualStyleBackColor = true;
this.BtnHistory.Click += new System.EventHandler(this.Btn_History_Click);
//
// LabelLight
//
this.LabelLight.Image = global::EC.AutoWeightServer.Properties.Resources.60;
this.LabelLight.Location = new System.Drawing.Point(73, 24);
this.LabelLight.Name = "LabelLight";
this.LabelLight.Size = new System.Drawing.Size(70, 70);
this.LabelLight.TabIndex = 31;
//
// panel5
//
this.panel5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.panel5.Controls.Add(this.LabelSite);
this.panel5.Controls.Add(this.LabelCompany);
this.panel5.Controls.Add(this.label9);
this.panel5.Controls.Add(this.label4);
this.panel5.Location = new System.Drawing.Point(1071, 24);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(328, 87);
this.panel5.TabIndex = 30;
this.panel5.Visible = false;
//
// LabelSite
//
this.LabelSite.AutoSize = true;
this.LabelSite.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelSite.ForeColor = System.Drawing.SystemColors.ActiveBorder;
this.LabelSite.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.LabelSite.Location = new System.Drawing.Point(93, 48);
this.LabelSite.Name = "LabelSite";
this.LabelSite.Size = new System.Drawing.Size(0, 30);
this.LabelSite.TabIndex = 6;
//
// LabelCompany
//
this.LabelCompany.AutoSize = true;
this.LabelCompany.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelCompany.ForeColor = System.Drawing.SystemColors.ActiveBorder;
this.LabelCompany.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.LabelCompany.Location = new System.Drawing.Point(93, 7);
this.LabelCompany.Name = "LabelCompany";
this.LabelCompany.Size = new System.Drawing.Size(0, 30);
this.LabelCompany.TabIndex = 5;
//
// label9
//
this.label9.AutoSize = true;
this.label9.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label9.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.label9.Location = new System.Drawing.Point(14, 44);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(90, 32);
this.label9.TabIndex = 4;
this.label9.Text = "站点:";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.label4.Location = new System.Drawing.Point(14, 3);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(90, 32);
this.label4.TabIndex = 3;
this.label4.Text = "公司:";
//
// panel4
//
this.panel4.Controls.Add(this.label10);
this.panel4.Controls.Add(this.LabelWeight);
this.panel4.Controls.Add(this.LabelPlate);
this.panel4.Controls.Add(this.label1);
this.panel4.Controls.Add(this.label3);
this.panel4.Location = new System.Drawing.Point(349, 17);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(385, 98);
this.panel4.TabIndex = 29;
//
// label10
//
this.label10.AutoSize = true;
this.label10.Font = new System.Drawing.Font("微软雅黑", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.label10.Location = new System.Drawing.Point(297, 47);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(48, 40);
this.label10.TabIndex = 5;
this.label10.Text = "吨";
//
// LabelWeight
//
this.LabelWeight.Font = new System.Drawing.Font("微软雅黑", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelWeight.ForeColor = System.Drawing.SystemColors.ActiveBorder;
this.LabelWeight.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.LabelWeight.Location = new System.Drawing.Point(125, 47);
this.LabelWeight.Name = "LabelWeight";
this.LabelWeight.Size = new System.Drawing.Size(163, 41);
this.LabelWeight.TabIndex = 4;
this.LabelWeight.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// LabelPlate
//
this.LabelPlate.Font = new System.Drawing.Font("微软雅黑", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelPlate.ForeColor = System.Drawing.SystemColors.ActiveBorder;
this.LabelPlate.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.LabelPlate.Location = new System.Drawing.Point(125, 6);
this.LabelPlate.Name = "LabelPlate";
this.LabelPlate.Size = new System.Drawing.Size(239, 41);
this.LabelPlate.TabIndex = 3;
this.LabelPlate.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.label1.Location = new System.Drawing.Point(22, 6);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(110, 40);
this.label1.TabIndex = 2;
this.label1.Text = "车牌:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("微软雅黑", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.label3.Location = new System.Drawing.Point(22, 47);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(110, 40);
this.label3.TabIndex = 1;
this.label3.Text = "重量:";
//
// BtnReset
//
this.BtnReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.BtnReset.Location = new System.Drawing.Point(1438, 64);
this.BtnReset.Name = "BtnReset";
this.BtnReset.Size = new System.Drawing.Size(78, 45);
this.BtnReset.TabIndex = 28;
this.BtnReset.Text = "重置";
this.BtnReset.UseVisualStyleBackColor = true;
this.BtnReset.Click += new System.EventHandler(this.Btn_Reset_Click);
//
// LabelState
//
this.LabelState.AutoSize = true;
this.LabelState.Font = new System.Drawing.Font("微软雅黑", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
this.LabelState.Location = new System.Drawing.Point(167, 22);
this.LabelState.Name = "LabelState";
this.LabelState.Size = new System.Drawing.Size(140, 71);
this.LabelState.TabIndex = 7;
this.LabelState.Text = "空闲";
//
// panel3
//
this.panel3.Controls.Add(this.panel11);
this.panel3.Controls.Add(this.panel9);
this.panel3.Controls.Add(this.label2);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(3, 3);
this.panel3.Margin = new System.Windows.Forms.Padding(2);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(935, 66);
this.panel3.TabIndex = 1;
//
// panel11
//
this.panel11.BackgroundImage = global::EC.AutoWeightServer.Properties.Resources.;
this.panel11.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.panel11.Location = new System.Drawing.Point(23, 9);
this.panel11.Margin = new System.Windows.Forms.Padding(2);
this.panel11.Name = "panel11";
this.panel11.Size = new System.Drawing.Size(44, 43);
this.panel11.TabIndex = 4;
//
// panel9
//
this.panel9.Controls.Add(this.btnOut);
this.panel9.Controls.Add(this.btnIn);
this.panel9.Location = new System.Drawing.Point(535, 10);
this.panel9.Margin = new System.Windows.Forms.Padding(2);
this.panel9.Name = "panel9";
this.panel9.Size = new System.Drawing.Size(262, 79);
this.panel9.TabIndex = 27;
//
// btnOut
//
this.btnOut.Location = new System.Drawing.Point(159, 8);
this.btnOut.Margin = new System.Windows.Forms.Padding(2);
this.btnOut.Name = "btnOut";
this.btnOut.Size = new System.Drawing.Size(83, 37);
this.btnOut.TabIndex = 27;
this.btnOut.Text = "出库";
this.btnOut.UseVisualStyleBackColor = true;
this.btnOut.Click += new System.EventHandler(this.Btn_Out_Click);
//
// btnIn
//
this.btnIn.Location = new System.Drawing.Point(15, 8);
this.btnIn.Margin = new System.Windows.Forms.Padding(2);
this.btnIn.Name = "btnIn";
this.btnIn.Size = new System.Drawing.Size(83, 37);
this.btnIn.TabIndex = 26;
this.btnIn.Text = "入库";
this.btnIn.UseVisualStyleBackColor = true;
this.btnIn.Click += new System.EventHandler(this.Btn_In_Click);
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single;
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 57.53086F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 42.46914F));
this.tableLayoutPanel1.Controls.Add(this.panel6, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.panel8, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.PanelScrollText, 0, 3);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 70F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 132F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 70F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 23F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1636, 1027);
this.tableLayoutPanel1.TabIndex = 4;
//
// panel6
//
this.panel6.Controls.Add(this.lightLabel4);
this.panel6.Controls.Add(this.lightLabel3);
this.panel6.Controls.Add(this.lightLabel2);
this.panel6.Controls.Add(this.lightLabel1);
this.panel6.Controls.Add(this.LabelLoading);
this.panel6.Controls.Add(this.ucWelcome);
this.panel6.Controls.Add(this.ucCarOut);
this.panel6.Controls.Add(this.ucCarIn);
this.panel6.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel6.Location = new System.Drawing.Point(3, 207);
this.panel6.Margin = new System.Windows.Forms.Padding(2);
this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(935, 746);
this.panel6.TabIndex = 6;
//
// lightLabel4
//
this.lightLabel4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lightLabel4.Image = global::EC.AutoWeightServer.Properties.Resources.60;
this.lightLabel4.Location = new System.Drawing.Point(238, 656);
this.lightLabel4.Name = "lightLabel4";
this.lightLabel4.Size = new System.Drawing.Size(70, 70);
this.lightLabel4.TabIndex = 35;
this.lightLabel4.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// lightLabel3
//
this.lightLabel3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lightLabel3.Image = global::EC.AutoWeightServer.Properties.Resources.60;
this.lightLabel3.Location = new System.Drawing.Point(160, 656);
this.lightLabel3.Name = "lightLabel3";
this.lightLabel3.Size = new System.Drawing.Size(70, 70);
this.lightLabel3.TabIndex = 34;
this.lightLabel3.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// lightLabel2
//
this.lightLabel2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lightLabel2.Image = global::EC.AutoWeightServer.Properties.Resources.60;
this.lightLabel2.Location = new System.Drawing.Point(83, 656);
this.lightLabel2.Name = "lightLabel2";
this.lightLabel2.Size = new System.Drawing.Size(70, 70);
this.lightLabel2.TabIndex = 33;
this.lightLabel2.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// lightLabel1
//
this.lightLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lightLabel1.Image = global::EC.AutoWeightServer.Properties.Resources.60;
this.lightLabel1.Location = new System.Drawing.Point(9, 656);
this.lightLabel1.Name = "lightLabel1";
this.lightLabel1.Size = new System.Drawing.Size(70, 70);
this.lightLabel1.TabIndex = 32;
this.lightLabel1.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// LabelLoading
//
this.LabelLoading.Anchor = System.Windows.Forms.AnchorStyles.None;
this.LabelLoading.BackColor = System.Drawing.Color.Transparent;
this.LabelLoading.ForeColor = System.Drawing.Color.Transparent;
this.LabelLoading.Image = global::EC.AutoWeightServer.Properties.Resources.Loading_80;
this.LabelLoading.Location = new System.Drawing.Point(421, 274);
this.LabelLoading.Name = "LabelLoading";
this.LabelLoading.Size = new System.Drawing.Size(93, 93);
this.LabelLoading.TabIndex = 7;
this.LabelLoading.Visible = false;
//
// ucWelcome
//
this.ucWelcome.Anchor = System.Windows.Forms.AnchorStyles.None;
this.ucWelcome.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(43)))), ((int)(((byte)(96)))));
this.ucWelcome.Cursor = System.Windows.Forms.Cursors.Default;
this.ucWelcome.Location = new System.Drawing.Point(88, 18);
this.ucWelcome.Margin = new System.Windows.Forms.Padding(1);
this.ucWelcome.Name = "ucWelcome";
this.ucWelcome.Size = new System.Drawing.Size(763, 710);
this.ucWelcome.TabIndex = 6;
//
// ucCarOut
//
this.ucCarOut.Anchor = System.Windows.Forms.AnchorStyles.None;
this.ucCarOut.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(43)))), ((int)(((byte)(96)))));
this.ucCarOut.Location = new System.Drawing.Point(88, 18);
this.ucCarOut.Margin = new System.Windows.Forms.Padding(1);
this.ucCarOut.Name = "ucCarOut";
this.ucCarOut.Size = new System.Drawing.Size(763, 710);
this.ucCarOut.TabIndex = 5;
this.ucCarOut.Visible = false;
//
// ucCarIn
//
this.ucCarIn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(43)))), ((int)(((byte)(96)))));
this.ucCarIn.Location = new System.Drawing.Point(88, 18);
this.ucCarIn.Margin = new System.Windows.Forms.Padding(1);
this.ucCarIn.Name = "ucCarIn";
this.ucCarIn.Size = new System.Drawing.Size(763, 712);
this.ucCarIn.TabIndex = 4;
this.ucCarIn.Visible = false;
//
// panel2
//
this.panel2.Controls.Add(this.btnTop);
this.panel2.Controls.Add(this.btnMin);
this.panel2.Controls.Add(this.btnMax);
this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.LabelTime);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(943, 3);
this.panel2.Margin = new System.Windows.Forms.Padding(2);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(690, 66);
this.panel2.TabIndex = 0;
//
// btnTop
//
this.btnTop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnTop.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnTop.Image = global::EC.AutoWeightServer.Properties.Resources.top1;
this.btnTop.Location = new System.Drawing.Point(438, 1);
this.btnTop.Margin = new System.Windows.Forms.Padding(2);
this.btnTop.Name = "btnTop";
this.btnTop.Size = new System.Drawing.Size(47, 47);
this.btnTop.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.btnTop.TabIndex = 5;
this.btnTop.TabStop = false;
this.btnTop.Visible = false;
this.btnTop.Click += new System.EventHandler(this.Btn_Top_Click);
//
// btnMin
//
this.btnMin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnMin.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnMin.Image = ((System.Drawing.Image)(resources.GetObject("btnMin.Image")));
this.btnMin.Location = new System.Drawing.Point(575, 1);
this.btnMin.Margin = new System.Windows.Forms.Padding(2);
this.btnMin.Name = "btnMin";
this.btnMin.Size = new System.Drawing.Size(47, 47);
this.btnMin.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.btnMin.TabIndex = 4;
this.btnMin.TabStop = false;
this.btnMin.Click += new System.EventHandler(this.Btn_Min_Click);
//
// btnMax
//
this.btnMax.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnMax.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnMax.Image = ((System.Drawing.Image)(resources.GetObject("btnMax.Image")));
this.btnMax.Location = new System.Drawing.Point(506, 1);
this.btnMax.Margin = new System.Windows.Forms.Padding(2);
this.btnMax.Name = "btnMax";
this.btnMax.Size = new System.Drawing.Size(47, 47);
this.btnMax.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.btnMax.TabIndex = 3;
this.btnMax.TabStop = false;
this.btnMax.Visible = false;
this.btnMax.Click += new System.EventHandler(this.Btn_Max_Click);
//
// btnClose
//
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnClose.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnClose.Image = global::EC.AutoWeightServer.Properties.Resources.;
this.btnClose.Location = new System.Drawing.Point(641, 1);
this.btnClose.Margin = new System.Windows.Forms.Padding(2);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(47, 47);
this.btnClose.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.btnClose.TabIndex = 2;
this.btnClose.TabStop = false;
this.btnClose.Click += new System.EventHandler(this.Btn_Close_Click);
//
// LabelTime
//
this.LabelTime.AutoSize = true;
this.LabelTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelTime.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.LabelTime.Location = new System.Drawing.Point(17, 21);
this.LabelTime.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.LabelTime.Name = "LabelTime";
this.LabelTime.Size = new System.Drawing.Size(0, 29);
this.LabelTime.TabIndex = 0;
//
// panel8
//
this.panel8.Controls.Add(this.RcTextBox);
this.panel8.Controls.Add(this.label8);
this.panel8.Controls.Add(this.label7);
this.panel8.Controls.Add(this.label6);
this.panel8.Controls.Add(this.label5);
this.panel8.Controls.Add(this.ucLicensePlate4);
this.panel8.Controls.Add(this.ucLicensePlate2);
this.panel8.Controls.Add(this.ucLicensePlate3);
this.panel8.Controls.Add(this.ucLicensePlate1);
this.panel8.Controls.Add(this.label14);
this.panel8.Controls.Add(this.label13);
this.panel8.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel8.Location = new System.Drawing.Point(944, 208);
this.panel8.Name = "panel8";
this.panel8.Size = new System.Drawing.Size(688, 744);
this.panel8.TabIndex = 7;
//
// RcTextBox
//
this.RcTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.RcTextBox.BackColor = System.Drawing.SystemColors.InfoText;
this.RcTextBox.ForeColor = System.Drawing.SystemColors.Window;
this.RcTextBox.Location = new System.Drawing.Point(162, 598);
this.RcTextBox.Name = "RcTextBox";
this.RcTextBox.ReadOnly = true;
this.RcTextBox.Size = new System.Drawing.Size(408, 180);
this.RcTextBox.TabIndex = 12;
this.RcTextBox.Text = "";
//
// label8
//
this.label8.Anchor = System.Windows.Forms.AnchorStyles.None;
this.label8.AutoSize = true;
this.label8.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.ForeColor = System.Drawing.Color.White;
this.label8.Location = new System.Drawing.Point(436, 518);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(175, 25);
this.label8.TabIndex = 11;
this.label8.Text = "4号出场后相机";
//
// label7
//
this.label7.Anchor = System.Windows.Forms.AnchorStyles.None;
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.ForeColor = System.Drawing.Color.White;
this.label7.Location = new System.Drawing.Point(436, 209);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(175, 25);
this.label7.TabIndex = 10;
this.label7.Text = "2号入场后相机";
//
// label6
//
this.label6.Anchor = System.Windows.Forms.AnchorStyles.None;
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.ForeColor = System.Drawing.Color.White;
this.label6.Location = new System.Drawing.Point(112, 518);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(175, 25);
this.label6.TabIndex = 9;
this.label6.Text = "3号出场前相机";
//
// label5
//
this.label5.Anchor = System.Windows.Forms.AnchorStyles.None;
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.ForeColor = System.Drawing.Color.White;
this.label5.Location = new System.Drawing.Point(112, 209);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(175, 25);
this.label5.TabIndex = 8;
this.label5.Text = "1号入场前相机";
//
// ucLicensePlate4
//
this.ucLicensePlate4.Anchor = System.Windows.Forms.AnchorStyles.None;
this.ucLicensePlate4.BackColor = System.Drawing.SystemColors.ActiveBorder;
this.ucLicensePlate4.Location = new System.Drawing.Point(374, 283);
this.ucLicensePlate4.Margin = new System.Windows.Forms.Padding(1);
this.ucLicensePlate4.Name = "ucLicensePlate4";
this.ucLicensePlate4.Size = new System.Drawing.Size(303, 227);
this.ucLicensePlate4.TabIndex = 7;
//
// ucLicensePlate2
//
this.ucLicensePlate2.Anchor = System.Windows.Forms.AnchorStyles.None;
this.ucLicensePlate2.BackColor = System.Drawing.SystemColors.ActiveBorder;
this.ucLicensePlate2.Location = new System.Drawing.Point(374, -25);
this.ucLicensePlate2.Margin = new System.Windows.Forms.Padding(1);
this.ucLicensePlate2.Name = "ucLicensePlate2";
this.ucLicensePlate2.Size = new System.Drawing.Size(303, 227);
this.ucLicensePlate2.TabIndex = 6;
//
// ucLicensePlate3
//
this.ucLicensePlate3.Anchor = System.Windows.Forms.AnchorStyles.None;
this.ucLicensePlate3.BackColor = System.Drawing.SystemColors.ActiveBorder;
this.ucLicensePlate3.Location = new System.Drawing.Point(43, 283);
this.ucLicensePlate3.Margin = new System.Windows.Forms.Padding(1);
this.ucLicensePlate3.Name = "ucLicensePlate3";
this.ucLicensePlate3.Size = new System.Drawing.Size(303, 227);
this.ucLicensePlate3.TabIndex = 5;
//
// ucLicensePlate1
//
this.ucLicensePlate1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.ucLicensePlate1.BackColor = System.Drawing.SystemColors.ActiveBorder;
this.ucLicensePlate1.Location = new System.Drawing.Point(43, -25);
this.ucLicensePlate1.Margin = new System.Windows.Forms.Padding(1);
this.ucLicensePlate1.Name = "ucLicensePlate1";
this.ucLicensePlate1.Size = new System.Drawing.Size(303, 227);
this.ucLicensePlate1.TabIndex = 4;
//
// label14
//
this.label14.Anchor = System.Windows.Forms.AnchorStyles.None;
this.label14.AutoSize = true;
this.label14.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.ForeColor = System.Drawing.Color.White;
this.label14.Location = new System.Drawing.Point(290, 541);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(137, 25);
this.label14.TabIndex = 3;
this.label14.Text = "出场摄像头";
//
// label13
//
this.label13.Anchor = System.Windows.Forms.AnchorStyles.None;
this.label13.AutoSize = true;
this.label13.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label13.ForeColor = System.Drawing.Color.White;
this.label13.Location = new System.Drawing.Point(290, 232);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(137, 25);
this.label13.TabIndex = 2;
this.label13.Text = "入场摄像头";
//
// PanelScrollText
//
this.tableLayoutPanel1.SetColumnSpan(this.PanelScrollText, 2);
this.PanelScrollText.Controls.Add(this.LabelScrollText);
this.PanelScrollText.Dock = System.Windows.Forms.DockStyle.Fill;
this.PanelScrollText.Location = new System.Drawing.Point(4, 959);
this.PanelScrollText.Name = "PanelScrollText";
this.PanelScrollText.Size = new System.Drawing.Size(1628, 64);
this.PanelScrollText.TabIndex = 8;
//
// LabelScrollText
//
this.LabelScrollText.AutoSize = true;
this.LabelScrollText.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelScrollText.ForeColor = System.Drawing.Color.Salmon;
this.LabelScrollText.Location = new System.Drawing.Point(3, 12);
this.LabelScrollText.Name = "LabelScrollText";
this.LabelScrollText.Padding = new System.Windows.Forms.Padding(12, 0, 0, 0);
this.LabelScrollText.Size = new System.Drawing.Size(12, 34);
this.LabelScrollText.TabIndex = 4;
this.LabelScrollText.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FrmMainServer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(43)))), ((int)(((byte)(96)))));
this.ClientSize = new System.Drawing.Size(1636, 1027);
this.Controls.Add(this.tableLayoutPanel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "FrmMainServer";
this.Text = "FrmMainServer";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMainServer_Closing);
this.Load += new System.EventHandler(this.FrmMainServer_Loading);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel5.ResumeLayout(false);
this.panel5.PerformLayout();
this.panel4.ResumeLayout(false);
this.panel4.PerformLayout();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.panel9.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.panel6.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.btnTop)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnMin)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnMax)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnClose)).EndInit();
this.panel8.ResumeLayout(false);
this.panel8.PerformLayout();
this.PanelScrollText.ResumeLayout(false);
this.PanelScrollText.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Panel panel11;
private System.Windows.Forms.Label LabelState;
private UI.UC.UCCarOut ucCarOut;
private UI.UC.UCCarIn ucCarIn;
private UI.UC.UCWelcome ucWelcome;
private System.Windows.Forms.Button BtnReset;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label LabelWeight;
private System.Windows.Forms.Label LabelPlate;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Panel panel5;
private System.Windows.Forms.Label LabelSite;
private System.Windows.Forms.Label LabelCompany;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label LabelLight;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.PictureBox btnClose;
private System.Windows.Forms.Label LabelTime;
private System.Windows.Forms.Panel panel8;
private System.Windows.Forms.RichTextBox RcTextBox;
private System.Windows.Forms.Panel panel9;
private System.Windows.Forms.Button btnOut;
private System.Windows.Forms.Button btnIn;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label5;
internal UC.UCLicensePlate ucLicensePlate4;
internal UC.UCLicensePlate ucLicensePlate2;
internal UC.UCLicensePlate ucLicensePlate3;
internal UC.UCLicensePlate ucLicensePlate1;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Panel PanelScrollText;
private System.Windows.Forms.Label LabelScrollText;
private System.Windows.Forms.Label LabelLoading;
private System.Windows.Forms.Label lightLabel4;
private System.Windows.Forms.Label lightLabel3;
private System.Windows.Forms.Label lightLabel2;
private System.Windows.Forms.Label lightLabel1;
private System.Windows.Forms.PictureBox btnMin;
private System.Windows.Forms.PictureBox btnMax;
private System.Windows.Forms.PictureBox btnTop;
private System.Windows.Forms.Button BtnHistory;
private System.Windows.Forms.Label labelUserInfo;
}
}

1131
AutoWeightServer/UI/FrmMainServer.cs

File diff suppressed because it is too large

534
AutoWeightServer/UI/FrmMainServer.resx

@ -0,0 +1,534 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnMin.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAADlJREFUWEft
zaENwAAMA8Hsv2KGaYlRlbCU3UkPLRcA8NXdz5/lZjeNLsvNbhpdlpvdNLosNwBAVL39a1YQfgUD4AAA
AABJRU5ErkJggg==
</value>
</data>
<data name="btnMax.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAADJJREFUSEtj
GAX0B7dv3/5PDoZqxw2IUoQGRg2Gg1GD4WDUYDgYxgaTg6HaRwHdAAMDAJXquUH0jW7aAAAAAElFTkSu
QmCC
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>40</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAS0sAAAEAIACQWwAAFgAAACgAAABLAAAAlgAAAAEAIAAAAAAAaFsAAMQOAADEDgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADa2PkIwr71IqOd8EJ7dOlsamHnfmlg5oFpYOaBaWDmgW5k53yBeupmr6vyNMvH9hgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPR+A6ble5KXlXlizEl
3bsRA9jdCwDW/woA1v8NANf/DwDX/w8A1/8PANf/DwDX/w8A1/8MANf/CgDW/w0A198ZCtnVPDHfr21l
53qnovA+3976AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACble5KMCTduwoA1t8IANb/CgDW/wwA
1/8OANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/DADW/woA
1v8JANb/DgHX30k/4aG0r/MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFwfYeX1fliRED190HANbfDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DgDX/wsA1v8JANbfIRXay3946mjf3voCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA09H4DmJa5oULANbfCQDW/w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DQDX/wkA1v8PAdffiYPsXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAB1buhyDQDX3wkA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/CQDW3yAU28uinPBEAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAw7/1ICsg3L8HANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8HANbfUknjlwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACBeupmCADW3wwA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CQDW3x8V2su1sfMuAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFa
5YUHANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A1/8OANf/DgDX/w4A1/8OANf/DgDX/w4A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8KANffmpTvTAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTLfrQYA
1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANb/CgDW/wkA1v8IANb/DQDX3xAB2N8VBtnZHA7Z0RwO2dEXCNnXEQLY3Q0A
198KANf/CADW/wgA1v8LANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/BQDV33Vt
6HIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4L9+xCQDW3w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8LANb/CgDX3xUH2NlDOOCncmnodp6Y70jFwfUe09D4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANnW
+QrGwvYeqqbxOoJ66mZLQeGfHRDazwoA1t8JANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wUA
1d96c+lsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgu3rEHANbfDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8LANb/CADW/xIE
19tTSeKXqKPxPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMG+9SJpYOeBHRHazwkA1t8LANb/DgDX/w8A1/8PANf/DwDX/w8A
1/8DANXfe3PpbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVU7ikQcA1t8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DADX/wsA1989Mt+toZrvRt/d
+gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCs8jRQReKbCwDX3woA1v8PANf/DwDX/w8A
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
7k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMROGbDwbX2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAZVvmhQgA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t/d2/kEAAAAAAAAAACWw/hKAGjs3wBs7f8Abe3/AG3t/wBt7f8AZ+zflsP4SgAAAAAAAAAAAAAAAEOz
9p3X7/0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFArY1QoA1v8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t98delqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwjY17Kt8jIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAADgHX3w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BwDW36yn
8TgAAAAAAAAAALXW+ioAaOzfAG3t/wBt7f8Abe3/AG3t/wBn7d93sfZoAAAAAAAAAAAAAAAALqf2sYXN
+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoINu/CgDW3w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8HANbfn5jvSAAAAAAAAAAAAAAAAAAAAAAAAAAA0c74ElVL45UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACqpfE6BgDV3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8HANbfYVjlhwAA
AAAAAAAAAAAAAAFq7d8AbO3/AG3t/wBt7f8Abe3/AGjt30uX8pUAAAAAAAAAAAAAAABXuveJCpny1QAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBG4pkFANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8OANf/BADW39zb+QQAAAAAAAAAAAAAAAAAAAAAAAAAAJ+Z70YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABlXOaDCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8XDdjTAAAAAAAA
AAAAAAAAI3/vvQBq7d8Abe3/AG3t/wBt7f8Aa+3/DHLu0wAAAAAAAAAAAAAAAIfO+lgAj/Pfwub8HgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLj0KAQA1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/CQDW/0tA4Z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMyfcWAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAmF9vJDADX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wQA1t+Zku5OAAAAAAAA
AAByr/VuAGbs3wBt7f8Abe3/AG3t/wBt7f8AZ+zfrdD5MgAAAAAAAAAAyen9FgCR8t8mp/W5AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOi7esQoA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+7tvQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANrX+QgNANffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CwDW/zgt3rMAAAAAAAAAANrq
/AYAau3fAG3t/wBt7f8Abe3/AG3t/wBp7P9KmPKVAAAAAAAAAAAAAAAAKaj1twCS8v+P0vpQAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHw/YcBgDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/woA1v9CNuCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALu29CoHANb/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BQDW37Gr8jQAAAAAAAAAADuP
8aUAaez/AG3t/wBt7f8Abe3/AG3t/wBo7N/O4/wSAAAAAAAAAACZ1vpGAJPy3wCV89/a8P0GAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnXeaDBwDW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8NANffAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAJKL7VQIANb/DwDX/w8A1/8PANf/DwDX/w8A1/8MANb/Kx7dwQAAAAAAAAAAwt37HgBm
7N8Abe3/AG3t/wBt7f8Abe3/AGrt/0KT8p0AAAAAAAAAAAAAAAAImfPXAJXy/yKl9b0AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnGtvFDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANbfsq7zMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHJp6HYJANb/DwDX/w8A1/8PANf/DwDX/w8A1/8FANbfkYntVgAAAAAAAAAASZjylwBp
7P8Abe3/AG3t/wBt7f8Abe3/AGjs38Hc+x4AAAAAAAAAAJPT+kwAk/LfAJTy/2XB+HoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8IANb/iIHrXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAEo+4aELANb/DwDX/w8A1/8PANf/DwDX/w4A1/8RBtfZAAAAAAAAAAAAAAAAAWvt3wBt
7f8Abe3/AG3t/wBt7f8Aa+3/KITwtwAAAAAAAAAAAAAAACio9bcAlvL/AJPy/67e+zIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANHO9xILANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/aV/mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACca28UPANf/DwDX/w8A1/8PANf/DwDX/wgA1v9gVuWJAAAAAAAAAACbxvhEAGjt3wBt
7f8Abe3/AG3t/wBt7f8AaOz/gbf2XgAAAAAAAAAA1+/9CACV8t8Al/L/AJXz/8np/BYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALiz8ywNANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANb/aWDmgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wYA1v+xq/I0AAAAAAAAAAAvh/GxAGrt/wBt
7f8Abe3/AG3t/wBt7f8AaOzfy+H7FAAAAAAAAAAAesn5ZgCU8v8Al/L/AJby/9jv/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/M9xQLANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANf/Z17mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wwB19/f3foCAAAAAAAAAAAAau3fAG3t/wBt
7f8Abe3/AG3t/wBs7f8Mc+3TAAAAAAAAAAAAAAAAKaj1twCW8/8Al/L/Apjz/9Xu/QoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/gXnqZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DADX/y4g3b8AAAAAAAAAAK/T+jAAaOzfAG3t/wBt
7f8Abe3/AG3t/wBr7f85jfGnAAAAAAAAAAAAAAAAA5jz3QCX8v8Al/P/Apjz/9fu/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlF9vJDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8FANb/tK/yMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/CADW/2JY5YcAAAAAAAAAAHq09mYAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9nqPR4AAAAAAAAAADO6/0SAJXy3wCY8/8Al/L/AZbz/9zx/gQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWuaFCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANff3tz5BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADgs37MNANf/DwDX/w8A1/8PANf/BwDV/5CI7VgAAAAAAAAAAE+a8pEAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P+IuvdYAAAAAAAAAACu3/syAJTy/wGY8/8Al/L/AJXy/8zq/RQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAvPQkBwDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wwA1v8wI9y9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGVc5YMJANb/DwDX/w8A1/8PANf/BwDW/7Ks8jQAAAAAAAAAADOL8K0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7P+nzPk4AAAAAAAAAACl2vs6AJPy/wCX8v8Al/L/AJXy/7Ph/CwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDDfrwoA1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+Xj+1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIZ+62IIANb/DwDX/w8A1/8PANf/CQDW/8fC9R4AAAAAAAAAAB1978MAa+3/AG3t/wBt
7f8Abe3/AG3t/wBr7f+21PoqAAAAAAAAAACQ0vpQAJTy/wGY8/8BmPP/AJTy/3XH+GoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7f0KAIA1d8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DQDX/xgL2dUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALKt8jIGANb/DwDX/w8A1/8PANf/CwDX/9vX+QgAAAAAAAAAABZ678kAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f/N4vwSAAAAAAAAAACP0fpQAJXz/wCX8v8Al/L/AJby/ymo9bcAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpA4Z8HANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/BADW35WO7lIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANPQ+BAJANbfDwDX/w8A1/8OANf/EAPY3d3a+QYAAAAAAAAAABR578sAbO3/AG3t/wBt
7f8Abe3/AG3t/wBr7f/F3vsaAAAAAAAAAACl2/s6AJPy/wCX8v8Al/L/AJfy/wGX898AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASCtjVDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8MANf/GxDazwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjv/QgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAZCtnVDgDX/w8A1/8NANf/GArY1QAAAAAAAAAAAAAAABh878cAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f+t0PkyAAAAAAAAAACy4PsuAJTy/wCX8v8Al/L/AJfy/wCU8t+h2fs+AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJxfcaBQDV3w4A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8EANXfx8P2HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJLT+k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABJPuGhCgDW/w8A1/8NANf/GgvZ1QAAAAAAAAAAAAAAACOB8L0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7f+ex/hCAAAAAAAAAADM6v0UAJXy3wCY8/8Al/L/AJfy/wCV8v9BsvafAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkovtVAMA1d8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wEA
1d+Wj+5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6395EAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACSjO1UBgDW/w8A1/8OANf/EQTY29/c+QQAAAAAAAAAADyP8qMAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P96svZmAAAAAAAAAAAAAAAAA5fz3QCX8v8Al/L/AJfy/wCX8v8AlPLf1O79DAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVc5oMIANb/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/AwDV35CK
7VYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArd78MkWz95sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADV0/gMBwDW3w8A1/8PANf/CgDW/93b+QQAAAAAAAAAAFyh9IMAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9Xn/OJAAAAAAAAAAAAAAAAJKX1uwCW8v8Al/L/AJfy/wCX8v8AlfL/P7H2oQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN/d+gIKAtfdDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8LANffjYfsWAAA
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
8t8Al/P/AZjz/wCX8v8AkvLfzOr9FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqIty9iIHrXgAAAAAAAAAAAAAAAAAA
AAAOc+7RAGzt/wBt7f8Abe3/AG3t/wBt7f8AaOzfXqP0gQAAAAAAAAAAAAAAAAAAAABVuveLAJPy3wCX
8v8Al/L/AZjz/wCX8v8BmPP/AZjz/wGY8/8AmPP/AJbz/wCW8t8+sPahndf6Qt7x/QIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc8f0Em9b6RDOs9q0AlfPfAJby/wCX
8v8Al/L/AJfy/wCT8t+m2/s6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADe3PkELyLdvQAAAAAAAAAAAAAAAAAA
AACpzvk2AGXs3wBt7f8Abe3/AG3t/wBt7f8Abe3/AGbs38Hc+x4AAAAAAAAAAAAAAAAAAAAAMar1rwCU
898AmPL/AJfy/wCX8v8Al/L/AZjz/wCX8v8Al/L/AJfy/wCX8v8AlfL/AJTy/waZ89lPt/aRhs76WrPg
/CzN6/0SAAAAAN7x/gIAAAAAAAAAAMjp/Rit3vsyhM36XEm095cAl/LfAJTy/wCW8v8Al/L/AJfy/wCX
8v8Al/L/AJPy34XN+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz8z4FLKu8jIAAAAAAAAAAAAA
AAAAAAAAXaH0gwBn7N8Abe3/AG3t/wBt7f8Abe3/AGvt/w5x7tEAAAAAAAAAAAAAAAAAAAAAAAAAAFG3
948Ak/LfAJfy/wCX8v8Al/L/AZfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AJfy/wCW8v8AlfL/AJXy/wCV
8/8AlvPfAJby3wCX8t8Al/LfAJby3wCW8t8AlfL/AJTy/wCW8/8Al/L/AZfy/wGY8/8Al/L/AJfy/wCW
8v8AlPLfh875WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANLP+BAAAAAAAAAAAAAA
AAAAAAAAAAAAACeC8LkAau3fAG3t/wBt7f8Abe3/AG3t/wBp7d8kgPC7AAAAAAAAAAAAAAAAAAAAAAAA
AABhvvh+AJTz3wCW8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wGY8/8Al/L/AJXy/wGX
89+b1vpEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAHbe3ZAGrt/wBt7f8Abe3/AG3t/wBt7f8AaO3fQJHxnwAAAAAAAAAAAAAAAAAA
AAAAAAAApNr7PACW898AlfL/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8AlPLfKqf0tc7r
/RIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADY6PwID3Pu0QBr7f8Abe3/AG3t/wBt7f8Abe3/AGjt30aU8pkAAAAAAAAAAAAA
AAAAAAAAAAAAANrw/QZau/eFAJXy3wCV8v8Al/L/AJfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCY8v8Al/L/AJTz3w6c89GCzPleAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA2On8CA907tEAau3/AG3t/wBt7f8Abe3/AG3t/wBo7N8jf/C93Ov9BAAA
AAAAAAAAAAAAAAAAAAAAAAAA0ez9DlG4948AlfPfAJTy/wCW8v8Al/L/AJfy/wGY8/8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJXy/wCU8t8JmfPXf8r5YAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANvq/AQ3jPGpAGnt3wBt7f8Abe3/AG3t/wBt7f8Aau3/DnPu0avP
+TQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADS7f0Oh876WDOs9a0Cl/PdAJXz3wCV8v8AlfL/AJXy/wCV
8v8AlvL/AJXy/wCV8v8AlfL/AJTy/wCW898PnvPRTrf2kaDZ+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY6X0fABp7d8Aa+3/AG3t/wBt7f8Abe3/AGvt/wBp
7d9cofSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqNz7OHDE+HBKtfaVOq/2pS2p
9LMnp/S5Mqv1rTuv9aVTufaNfcr5YsLm/B4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALjW+igwh/CvAGjt3wBs7f8Abe3/AG3t/wBt
7f8Aae3fEHXuz46+91IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjL33VBB17s8Aae3fAGvt/wBt
7f8Abe3/AGzt/wBo7N8Mcu3TfrX2Yt7s/QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACex/hCOIzwpwBp
7d8Aaez/AGvt/wBs7f8AbO3/AGnt/wFt7d9GlPKZksD3Tsvh+xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTd
+xx5svVmMYjwrwVw7dsAau3fAGrt/wBn7f8AZez/AGfs/wBq7d8GcO7ZQZPyn2Om9HySwfdOncf4QsHb
+x7d7P0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADK4PsWocn4PoW59lpIlfKXJ4PwuR5+78ErhfC1VJ30i4K39l6ly/k6xt/7GgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD////////////gAAD////////////gXMD////////////gAAD////////////gXMD////////////g
AAD////8AD/////gCAL////AAAH////gAAD///8AAAB////gAAD///gAAAAP///gAAD//+AAAAAH///g
OgD//8AAAAAB///gTwD//wAAAAAA///gcwD//gAAAAAAP//gXAD//AAAAAAAH//gXAD/+AAAAAAAD//g
cgD/8AAAA/AAB//gbwD/4AAA///AA//gdAD/wAAD///4Af/gcAD/gAAf///+AP/gAAD/AAB+AH//gP/g
AAD/AAHwB///4H/gAAD+AAPAH///8D/gAAD8AAcAf////D/gAAD8AB4B//wB/h/gAAD4ADgH/+AAfx/g
AAD4AHAO/8AAH4/gAADwAOAd/wAAD8/gAADwAMA5/wAAB+fgAADwAYBz/gAAA+fgAADgA4Dn/AAAAffg
AADgBwHH+AAAAfvgAADgBgGP+AAAAP/gAADADAOP8AAAAP/gAADADAMP8AAAAP/gAADAGAcf8AAAAH/g
AADAGAYf8AAAAH/gAADAOA4f4AAAAH/gAADAMAwf4AAAAH/gAADAMAwf4AAAAH/gAADAMBwf8AAAAH/g
AADAYBwf8AAAAH/gAADAYBgf8AAAAH/gAADAYBgf8AAAAP/gAADAYBgf+AAAAP/gAADAYBgf+AAAAf/g
AADAYBgf/AAAAf/gAADAYBgf/gAAA/fgAADg4BgP/gAAA/fgAADg4BgP/wAAB/fgAADgYBwH/4AAD+fg
AADgYBwH/4AAH+fgAADwYBwD/8AAP8fg4/nwYBwD/8AA/8/gAAD4cA4B/8AD/4/gTCD4cA4A/4AP/w/g
AAD8cA8AfgB//h/gAAD8eAcAP////B/gAAD+OAeAH///+D/gAAD+PAOAB///4H/gAAD/PAPAAf//gH/g
4vn/ngHgAD/8AP/gAAD/ngDwAALAAf/gXMD/zwD4AAAAA//gAAD/74B8AAAAB//gAAD//8A+AAAAD//g
AAD//8AfAAAAP//gAAD//+AHwAAA///gAAD///AD8AAD///g4/n///wB/wAf///gAAD///4Af//////g
XMD///+AD//////gAAD////gAf/////g4/n////4AAP////gAAD/////gA/////g6Ov////////////g
AAA=
</value>
</data>
</root>

139
AutoWeightServer/UI/FrmPwdVerify.Designer.cs

@ -0,0 +1,139 @@
namespace EC.AutoWeightServer.UI
{
partial class FrmPwdVerify
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmPwdVerify));
this.label1 = new System.Windows.Forms.Label();
this.txtUserName = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.txtPassword = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.AutoEllipsis = true;
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(58, 25);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 14);
this.label1.TabIndex = 0;
this.label1.Text = "账号";
//
// txtUserName
//
this.txtUserName.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtUserName.Location = new System.Drawing.Point(105, 19);
this.txtUserName.MaxLength = 10;
this.txtUserName.Multiline = true;
this.txtUserName.Name = "txtUserName";
this.txtUserName.Size = new System.Drawing.Size(171, 25);
this.txtUserName.TabIndex = 1;
this.txtUserName.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtUserName_KeyPress);
//
// button1
//
this.button1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(105, 114);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(80, 30);
this.button1.TabIndex = 3;
this.button1.Text = "验证";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(58, 70);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(35, 14);
this.label2.TabIndex = 0;
this.label2.Text = "密码";
//
// txtPassword
//
this.txtPassword.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtPassword.Location = new System.Drawing.Point(105, 65);
this.txtPassword.MaxLength = 20;
this.txtPassword.Multiline = true;
this.txtPassword.Name = "txtPassword";
this.txtPassword.PasswordChar = '*';
this.txtPassword.Size = new System.Drawing.Size(171, 25);
this.txtPassword.TabIndex = 2;
this.txtPassword.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtPassword_KeyPress);
//
// button2
//
this.button2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button2.Location = new System.Drawing.Point(196, 114);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(80, 30);
this.button2.TabIndex = 4;
this.button2.Text = "取消";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// FrmPwdVerify
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(344, 162);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.txtPassword);
this.Controls.Add(this.txtUserName);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FrmPwdVerify";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "站点端用户认证";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtPassword;
private System.Windows.Forms.Button button2;
}
}

87
AutoWeightServer/UI/FrmPwdVerify.cs

@ -0,0 +1,87 @@
using EC.AutoWeightServer.Center;
using EC.Entity.Organization;
using System;
using System.Windows.Forms;
namespace EC.AutoWeightServer.UI
{
public partial class FrmPwdVerify : Form
{
private string title;
internal UserEntity user { get; set; }
public FrmPwdVerify()
{
InitializeComponent();
}
public FrmPwdVerify(string title)
{
this.title = title;
InitializeComponent();
}
public void LockAccount(UserEntity tempUser)
{
if (tempUser == null)
return;
txtUserName.Text = tempUser.F_Account;
txtUserName.Enabled = false;
}
#region 监听事件
private void button1_Click(object sender, EventArgs e)
{
var username = txtUserName.Text.Trim();
var password = txtPassword.Text.Trim();
if (string.IsNullOrEmpty(username))
{
MessageBox.Show("用户名不能为空!", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtUserName.Focus();
return;
}
if (string.IsNullOrEmpty(password))
{
MessageBox.Show("密码不能为空!", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtPassword.Focus();
return;
}
if (!ServiceCenter.UserService.CheckLogin(username, password))
{
MessageBox.Show("用户名或密码错误!", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtPassword.Focus();
txtPassword.SelectAll();
return;
}
user = ServiceCenter.UserService.SelectEntityByWhere($"F_Account='{username}'");
DialogResult = DialogResult.Yes;
}
private void button2_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.No;
}
private void txtUserName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')//如果输入的是回车键
{
e.Handled = true;
button1_Click(sender, e);//触发button事件
}
}
private void txtPassword_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')//如果输入的是回车键
{
e.Handled = true;
button1_Click(sender, e);//触发button事件
}
}
#endregion 监听事件
}
}

517
AutoWeightServer/UI/FrmPwdVerify.resx

@ -0,0 +1,517 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAS0sAAAEAIACQWwAAFgAAACgAAABLAAAAlgAAAAEAIAAAAAAAaFsAAMQOAADEDgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADa2PkIwr71IqOd8EJ7dOlsamHnfmlg5oFpYOaBaWDmgW5k53yBeupmr6vyNMvH9hgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPR+A6ble5KXlXlizEl
3bsRA9jdCwDW/woA1v8NANf/DwDX/w8A1/8PANf/DwDX/w8A1/8MANf/CgDW/w0A198ZCtnVPDHfr21l
53qnovA+3976AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACble5KMCTduwoA1t8IANb/CgDW/wwA
1/8OANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/DADW/woA
1v8JANb/DgHX30k/4aG0r/MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFwfYeX1fliRED190HANbfDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DgDX/wsA1v8JANbfIRXay3946mjf3voCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA09H4DmJa5oULANbfCQDW/w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DQDX/wkA1v8PAdffiYPsXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAB1buhyDQDX3wkA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/CQDW3yAU28uinPBEAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAw7/1ICsg3L8HANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8HANbfUknjlwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACBeupmCADW3wwA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CQDW3x8V2su1sfMuAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFa
5YUHANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A1/8OANf/DgDX/w4A1/8OANf/DgDX/w4A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8KANffmpTvTAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTLfrQYA
1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANb/CgDW/wkA1v8IANb/DQDX3xAB2N8VBtnZHA7Z0RwO2dEXCNnXEQLY3Q0A
198KANf/CADW/wgA1v8LANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/BQDV33Vt
6HIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4L9+xCQDW3w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8LANb/CgDX3xUH2NlDOOCncmnodp6Y70jFwfUe09D4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANnW
+QrGwvYeqqbxOoJ66mZLQeGfHRDazwoA1t8JANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wUA
1d96c+lsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgu3rEHANbfDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8LANb/CADW/xIE
19tTSeKXqKPxPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMG+9SJpYOeBHRHazwkA1t8LANb/DgDX/w8A1/8PANf/DwDX/w8A
1/8DANXfe3PpbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVU7ikQcA1t8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DADX/wsA1989Mt+toZrvRt/d
+gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCs8jRQReKbCwDX3woA1v8PANf/DwDX/w8A
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
7k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMROGbDwbX2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAZVvmhQgA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t/d2/kEAAAAAAAAAACWw/hKAGjs3wBs7f8Abe3/AG3t/wBt7f8AZ+zflsP4SgAAAAAAAAAAAAAAAEOz
9p3X7/0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFArY1QoA1v8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t98delqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwjY17Kt8jIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAADgHX3w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BwDW36yn
8TgAAAAAAAAAALXW+ioAaOzfAG3t/wBt7f8Abe3/AG3t/wBn7d93sfZoAAAAAAAAAAAAAAAALqf2sYXN
+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoINu/CgDW3w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8HANbfn5jvSAAAAAAAAAAAAAAAAAAAAAAAAAAA0c74ElVL45UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACqpfE6BgDV3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8HANbfYVjlhwAA
AAAAAAAAAAAAAAFq7d8AbO3/AG3t/wBt7f8Abe3/AGjt30uX8pUAAAAAAAAAAAAAAABXuveJCpny1QAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBG4pkFANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8OANf/BADW39zb+QQAAAAAAAAAAAAAAAAAAAAAAAAAAJ+Z70YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABlXOaDCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8XDdjTAAAAAAAA
AAAAAAAAI3/vvQBq7d8Abe3/AG3t/wBt7f8Aa+3/DHLu0wAAAAAAAAAAAAAAAIfO+lgAj/Pfwub8HgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLj0KAQA1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/CQDW/0tA4Z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMyfcWAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAmF9vJDADX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wQA1t+Zku5OAAAAAAAA
AAByr/VuAGbs3wBt7f8Abe3/AG3t/wBt7f8AZ+zfrdD5MgAAAAAAAAAAyen9FgCR8t8mp/W5AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOi7esQoA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+7tvQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANrX+QgNANffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CwDW/zgt3rMAAAAAAAAAANrq
/AYAau3fAG3t/wBt7f8Abe3/AG3t/wBp7P9KmPKVAAAAAAAAAAAAAAAAKaj1twCS8v+P0vpQAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHw/YcBgDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/woA1v9CNuCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALu29CoHANb/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BQDW37Gr8jQAAAAAAAAAADuP
8aUAaez/AG3t/wBt7f8Abe3/AG3t/wBo7N/O4/wSAAAAAAAAAACZ1vpGAJPy3wCV89/a8P0GAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnXeaDBwDW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8NANffAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAJKL7VQIANb/DwDX/w8A1/8PANf/DwDX/w8A1/8MANb/Kx7dwQAAAAAAAAAAwt37HgBm
7N8Abe3/AG3t/wBt7f8Abe3/AGrt/0KT8p0AAAAAAAAAAAAAAAAImfPXAJXy/yKl9b0AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnGtvFDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANbfsq7zMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHJp6HYJANb/DwDX/w8A1/8PANf/DwDX/w8A1/8FANbfkYntVgAAAAAAAAAASZjylwBp
7P8Abe3/AG3t/wBt7f8Abe3/AGjs38Hc+x4AAAAAAAAAAJPT+kwAk/LfAJTy/2XB+HoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8IANb/iIHrXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAEo+4aELANb/DwDX/w8A1/8PANf/DwDX/w4A1/8RBtfZAAAAAAAAAAAAAAAAAWvt3wBt
7f8Abe3/AG3t/wBt7f8Aa+3/KITwtwAAAAAAAAAAAAAAACio9bcAlvL/AJPy/67e+zIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANHO9xILANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/aV/mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACca28UPANf/DwDX/w8A1/8PANf/DwDX/wgA1v9gVuWJAAAAAAAAAACbxvhEAGjt3wBt
7f8Abe3/AG3t/wBt7f8AaOz/gbf2XgAAAAAAAAAA1+/9CACV8t8Al/L/AJXz/8np/BYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALiz8ywNANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANb/aWDmgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wYA1v+xq/I0AAAAAAAAAAAvh/GxAGrt/wBt
7f8Abe3/AG3t/wBt7f8AaOzfy+H7FAAAAAAAAAAAesn5ZgCU8v8Al/L/AJby/9jv/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/M9xQLANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANf/Z17mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wwB19/f3foCAAAAAAAAAAAAau3fAG3t/wBt
7f8Abe3/AG3t/wBs7f8Mc+3TAAAAAAAAAAAAAAAAKaj1twCW8/8Al/L/Apjz/9Xu/QoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/gXnqZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DADX/y4g3b8AAAAAAAAAAK/T+jAAaOzfAG3t/wBt
7f8Abe3/AG3t/wBr7f85jfGnAAAAAAAAAAAAAAAAA5jz3QCX8v8Al/P/Apjz/9fu/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlF9vJDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8FANb/tK/yMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/CADW/2JY5YcAAAAAAAAAAHq09mYAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9nqPR4AAAAAAAAAADO6/0SAJXy3wCY8/8Al/L/AZbz/9zx/gQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWuaFCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANff3tz5BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADgs37MNANf/DwDX/w8A1/8PANf/BwDV/5CI7VgAAAAAAAAAAE+a8pEAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P+IuvdYAAAAAAAAAACu3/syAJTy/wGY8/8Al/L/AJXy/8zq/RQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAvPQkBwDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wwA1v8wI9y9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGVc5YMJANb/DwDX/w8A1/8PANf/BwDW/7Ks8jQAAAAAAAAAADOL8K0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7P+nzPk4AAAAAAAAAACl2vs6AJPy/wCX8v8Al/L/AJXy/7Ph/CwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDDfrwoA1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+Xj+1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIZ+62IIANb/DwDX/w8A1/8PANf/CQDW/8fC9R4AAAAAAAAAAB1978MAa+3/AG3t/wBt
7f8Abe3/AG3t/wBr7f+21PoqAAAAAAAAAACQ0vpQAJTy/wGY8/8BmPP/AJTy/3XH+GoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7f0KAIA1d8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DQDX/xgL2dUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALKt8jIGANb/DwDX/w8A1/8PANf/CwDX/9vX+QgAAAAAAAAAABZ678kAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f/N4vwSAAAAAAAAAACP0fpQAJXz/wCX8v8Al/L/AJby/ymo9bcAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpA4Z8HANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/BADW35WO7lIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANPQ+BAJANbfDwDX/w8A1/8OANf/EAPY3d3a+QYAAAAAAAAAABR578sAbO3/AG3t/wBt
7f8Abe3/AG3t/wBr7f/F3vsaAAAAAAAAAACl2/s6AJPy/wCX8v8Al/L/AJfy/wGX898AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASCtjVDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8MANf/GxDazwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjv/QgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAZCtnVDgDX/w8A1/8NANf/GArY1QAAAAAAAAAAAAAAABh878cAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f+t0PkyAAAAAAAAAACy4PsuAJTy/wCX8v8Al/L/AJfy/wCU8t+h2fs+AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJxfcaBQDV3w4A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8EANXfx8P2HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJLT+k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABJPuGhCgDW/w8A1/8NANf/GgvZ1QAAAAAAAAAAAAAAACOB8L0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7f+ex/hCAAAAAAAAAADM6v0UAJXy3wCY8/8Al/L/AJfy/wCV8v9BsvafAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkovtVAMA1d8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wEA
1d+Wj+5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6395EAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACSjO1UBgDW/w8A1/8OANf/EQTY29/c+QQAAAAAAAAAADyP8qMAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P96svZmAAAAAAAAAAAAAAAAA5fz3QCX8v8Al/L/AJfy/wCX8v8AlPLf1O79DAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVc5oMIANb/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/AwDV35CK
7VYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArd78MkWz95sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADV0/gMBwDW3w8A1/8PANf/CgDW/93b+QQAAAAAAAAAAFyh9IMAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9Xn/OJAAAAAAAAAAAAAAAAJKX1uwCW8v8Al/L/AJfy/wCX8v8AlfL/P7H2oQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN/d+gIKAtfdDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8LANffjYfsWAAA
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
8t8Al/P/AZjz/wCX8v8AkvLfzOr9FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqIty9iIHrXgAAAAAAAAAAAAAAAAAA
AAAOc+7RAGzt/wBt7f8Abe3/AG3t/wBt7f8AaOzfXqP0gQAAAAAAAAAAAAAAAAAAAABVuveLAJPy3wCX
8v8Al/L/AZjz/wCX8v8BmPP/AZjz/wGY8/8AmPP/AJbz/wCW8t8+sPahndf6Qt7x/QIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc8f0Em9b6RDOs9q0AlfPfAJby/wCX
8v8Al/L/AJfy/wCT8t+m2/s6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADe3PkELyLdvQAAAAAAAAAAAAAAAAAA
AACpzvk2AGXs3wBt7f8Abe3/AG3t/wBt7f8Abe3/AGbs38Hc+x4AAAAAAAAAAAAAAAAAAAAAMar1rwCU
898AmPL/AJfy/wCX8v8Al/L/AZjz/wCX8v8Al/L/AJfy/wCX8v8AlfL/AJTy/waZ89lPt/aRhs76WrPg
/CzN6/0SAAAAAN7x/gIAAAAAAAAAAMjp/Rit3vsyhM36XEm095cAl/LfAJTy/wCW8v8Al/L/AJfy/wCX
8v8Al/L/AJPy34XN+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz8z4FLKu8jIAAAAAAAAAAAAA
AAAAAAAAXaH0gwBn7N8Abe3/AG3t/wBt7f8Abe3/AGvt/w5x7tEAAAAAAAAAAAAAAAAAAAAAAAAAAFG3
948Ak/LfAJfy/wCX8v8Al/L/AZfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AJfy/wCW8v8AlfL/AJXy/wCV
8/8AlvPfAJby3wCX8t8Al/LfAJby3wCW8t8AlfL/AJTy/wCW8/8Al/L/AZfy/wGY8/8Al/L/AJfy/wCW
8v8AlPLfh875WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANLP+BAAAAAAAAAAAAAA
AAAAAAAAAAAAACeC8LkAau3fAG3t/wBt7f8Abe3/AG3t/wBp7d8kgPC7AAAAAAAAAAAAAAAAAAAAAAAA
AABhvvh+AJTz3wCW8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wGY8/8Al/L/AJXy/wGX
89+b1vpEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAHbe3ZAGrt/wBt7f8Abe3/AG3t/wBt7f8AaO3fQJHxnwAAAAAAAAAAAAAAAAAA
AAAAAAAApNr7PACW898AlfL/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8AlPLfKqf0tc7r
/RIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADY6PwID3Pu0QBr7f8Abe3/AG3t/wBt7f8Abe3/AGjt30aU8pkAAAAAAAAAAAAA
AAAAAAAAAAAAANrw/QZau/eFAJXy3wCV8v8Al/L/AJfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCY8v8Al/L/AJTz3w6c89GCzPleAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA2On8CA907tEAau3/AG3t/wBt7f8Abe3/AG3t/wBo7N8jf/C93Ov9BAAA
AAAAAAAAAAAAAAAAAAAAAAAA0ez9DlG4948AlfPfAJTy/wCW8v8Al/L/AJfy/wGY8/8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJXy/wCU8t8JmfPXf8r5YAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANvq/AQ3jPGpAGnt3wBt7f8Abe3/AG3t/wBt7f8Aau3/DnPu0avP
+TQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADS7f0Oh876WDOs9a0Cl/PdAJXz3wCV8v8AlfL/AJXy/wCV
8v8AlvL/AJXy/wCV8v8AlfL/AJTy/wCW898PnvPRTrf2kaDZ+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY6X0fABp7d8Aa+3/AG3t/wBt7f8Abe3/AGvt/wBp
7d9cofSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqNz7OHDE+HBKtfaVOq/2pS2p
9LMnp/S5Mqv1rTuv9aVTufaNfcr5YsLm/B4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALjW+igwh/CvAGjt3wBs7f8Abe3/AG3t/wBt
7f8Aae3fEHXuz46+91IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjL33VBB17s8Aae3fAGvt/wBt
7f8Abe3/AGzt/wBo7N8Mcu3TfrX2Yt7s/QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACex/hCOIzwpwBp
7d8Aaez/AGvt/wBs7f8AbO3/AGnt/wFt7d9GlPKZksD3Tsvh+xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTd
+xx5svVmMYjwrwVw7dsAau3fAGrt/wBn7f8AZez/AGfs/wBq7d8GcO7ZQZPyn2Om9HySwfdOncf4QsHb
+x7d7P0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADK4PsWocn4PoW59lpIlfKXJ4PwuR5+78ErhfC1VJ30i4K39l6ly/k6xt/7GgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD////////////gAAD////////////gXMD////////////gAAD////////////gXMD////////////g
AAD////8AD/////gCAL////AAAH////gAAD///8AAAB////gAAD///gAAAAP///gAAD//+AAAAAH///g
OgD//8AAAAAB///gTwD//wAAAAAA///gcwD//gAAAAAAP//gXAD//AAAAAAAH//gXAD/+AAAAAAAD//g
cgD/8AAAA/AAB//gbwD/4AAA///AA//gdAD/wAAD///4Af/gcAD/gAAf///+AP/gAAD/AAB+AH//gP/g
AAD/AAHwB///4H/gAAD+AAPAH///8D/gAAD8AAcAf////D/gAAD8AB4B//wB/h/gAAD4ADgH/+AAfx/g
AAD4AHAO/8AAH4/gAADwAOAd/wAAD8/gAADwAMA5/wAAB+fgAADwAYBz/gAAA+fgAADgA4Dn/AAAAffg
AADgBwHH+AAAAfvgAADgBgGP+AAAAP/gAADADAOP8AAAAP/gAADADAMP8AAAAP/gAADAGAcf8AAAAH/g
AADAGAYf8AAAAH/gAADAOA4f4AAAAH/gAADAMAwf4AAAAH/gAADAMAwf4AAAAH/gAADAMBwf8AAAAH/g
AADAYBwf8AAAAH/gAADAYBgf8AAAAH/gAADAYBgf8AAAAP/gAADAYBgf+AAAAP/gAADAYBgf+AAAAf/g
AADAYBgf/AAAAf/gAADAYBgf/gAAA/fgAADg4BgP/gAAA/fgAADg4BgP/wAAB/fgAADgYBwH/4AAD+fg
AADgYBwH/4AAH+fgAADwYBwD/8AAP8fg4/nwYBwD/8AA/8/gAAD4cA4B/8AD/4/gTCD4cA4A/4AP/w/g
AAD8cA8AfgB//h/gAAD8eAcAP////B/gAAD+OAeAH///+D/gAAD+PAOAB///4H/gAAD/PAPAAf//gH/g
4vn/ngHgAD/8AP/gAAD/ngDwAALAAf/gXMD/zwD4AAAAA//gAAD/74B8AAAAB//gAAD//8A+AAAAD//g
AAD//8AfAAAAP//gAAD//+AHwAAA///gAAD///AD8AAD///g4/n///wB/wAf///gAAD///4Af//////g
XMD///+AD//////gAAD////gAf/////g4/n////4AAP////gAAD/////gA/////g6Ov////////////g
AAA=
</value>
</data>
</root>

98
AutoWeightServer/UI/FrmSign.Designer.cs

@ -0,0 +1,98 @@
namespace EC.AutoWeightServer.UI
{
partial class FrmSign
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSign));
this.btnClear = new System.Windows.Forms.Button();
this.btnOk = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// btnClear
//
this.btnClear.Location = new System.Drawing.Point(183, 301);
this.btnClear.Margin = new System.Windows.Forms.Padding(2);
this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(64, 25);
this.btnClear.TabIndex = 1;
this.btnClear.Text = "清除";
this.btnClear.UseVisualStyleBackColor = true;
this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
//
// btnOk
//
this.btnOk.Location = new System.Drawing.Point(343, 301);
this.btnOk.Margin = new System.Windows.Forms.Padding(2);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(59, 25);
this.btnOk.TabIndex = 2;
this.btnOk.Text = "完成";
this.btnOk.UseVisualStyleBackColor = true;
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
//
// pictureBox1
//
this.pictureBox1.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.pictureBox1.Location = new System.Drawing.Point(32, 32);
this.pictureBox1.Margin = new System.Windows.Forms.Padding(2);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(526, 250);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
this.pictureBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
this.pictureBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseUp);
//
// FrmSign
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(588, 337);
this.Controls.Add(this.btnOk);
this.Controls.Add(this.btnClear);
this.Controls.Add(this.pictureBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "FrmSign";
this.Text = "签名认证";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Button btnClear;
private System.Windows.Forms.Button btnOk;
}
}

86
AutoWeightServer/UI/FrmSign.cs

@ -0,0 +1,86 @@
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace EC.AutoWeightServer.UI
{
public partial class FrmSign : Form
{
private GraphicsPath mousePath = new GraphicsPath();
//画笔透明度
private int myAlpha = 100;
//画笔颜色对象
private Color myUserColor = new Color();
//画笔宽度
private int myPenWidth = 5;
//签名的图片对象
public Bitmap SavedBitmap;
public bool isSign = false;
public FrmSign()
{
InitializeComponent();
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
try
{
mousePath.AddLine(e.X, e.Y, e.X, e.Y);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
pictureBox1.Invalidate();
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isSign = true;
mousePath.StartFigure();
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
try
{
myUserColor = System.Drawing.Color.Blue;
myAlpha = 255;
Pen CurrentPen = new Pen(Color.FromArgb(myAlpha, myUserColor), myPenWidth);
e.Graphics.DrawPath(CurrentPen, mousePath);
}
catch { }
}
private void btnClear_Click(object sender, EventArgs e)
{
isSign = false;
pictureBox1.CreateGraphics().Clear(Color.White);
mousePath.Reset();
}
private void btnOk_Click(object sender, EventArgs e)
{
SavedBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.DrawToBitmap(SavedBitmap, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
}

517
AutoWeightServer/UI/FrmSign.resx

@ -0,0 +1,517 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAS0sAAAEAIACQWwAAFgAAACgAAABLAAAAlgAAAAEAIAAAAAAAaFsAAMQOAADEDgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADa2PkIwr71IqOd8EJ7dOlsamHnfmlg5oFpYOaBaWDmgW5k53yBeupmr6vyNMvH9hgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPR+A6ble5KXlXlizEl
3bsRA9jdCwDW/woA1v8NANf/DwDX/w8A1/8PANf/DwDX/w8A1/8MANf/CgDW/w0A198ZCtnVPDHfr21l
53qnovA+3976AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACble5KMCTduwoA1t8IANb/CgDW/wwA
1/8OANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/DADW/woA
1v8JANb/DgHX30k/4aG0r/MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFwfYeX1fliRED190HANbfDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DgDX/wsA1v8JANbfIRXay3946mjf3voCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA09H4DmJa5oULANbfCQDW/w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DQDX/wkA1v8PAdffiYPsXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAB1buhyDQDX3wkA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/CQDW3yAU28uinPBEAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAw7/1ICsg3L8HANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8HANbfUknjlwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACBeupmCADW3wwA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CQDW3x8V2su1sfMuAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFa
5YUHANbfDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A1/8OANf/DgDX/w4A1/8OANf/DgDX/w4A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8KANffmpTvTAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTLfrQYA
1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANb/CgDW/wkA1v8IANb/DQDX3xAB2N8VBtnZHA7Z0RwO2dEXCNnXEQLY3Q0A
198KANf/CADW/wgA1v8LANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/BQDV33Vt
6HIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4L9+xCQDW3w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8LANb/CgDX3xUH2NlDOOCncmnodp6Y70jFwfUe09D4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANnW
+QrGwvYeqqbxOoJ66mZLQeGfHRDazwoA1t8JANb/DQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wUA
1d96c+lsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgu3rEHANbfDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8LANb/CADW/xIE
19tTSeKXqKPxPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMG+9SJpYOeBHRHazwkA1t8LANb/DgDX/w8A1/8PANf/DwDX/w8A
1/8DANXfe3PpbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVU7ikQcA1t8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DADX/wsA1989Mt+toZrvRt/d
+gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCs8jRQReKbCwDX3woA1v8PANf/DwDX/w8A
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
7k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMROGbDwbX2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAZVvmhQgA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t/d2/kEAAAAAAAAAACWw/hKAGjs3wBs7f8Abe3/AG3t/wBt7f8AZ+zflsP4SgAAAAAAAAAAAAAAAEOz
9p3X7/0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFArY1QoA1v8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DgDX/wYA
1t98delqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwjY17Kt8jIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAADgHX3w4A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BwDW36yn
8TgAAAAAAAAAALXW+ioAaOzfAG3t/wBt7f8Abe3/AG3t/wBn7d93sfZoAAAAAAAAAAAAAAAALqf2sYXN
+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoINu/CgDW3w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8HANbfn5jvSAAAAAAAAAAAAAAAAAAAAAAAAAAA0c74ElVL45UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACqpfE6BgDV3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8HANbfYVjlhwAA
AAAAAAAAAAAAAAFq7d8AbO3/AG3t/wBt7f8Abe3/AGjt30uX8pUAAAAAAAAAAAAAAABXuveJCpny1QAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBG4pkFANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8OANf/BADW39zb+QQAAAAAAAAAAAAAAAAAAAAAAAAAAJ+Z70YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABlXOaDCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w0A1/8XDdjTAAAAAAAA
AAAAAAAAI3/vvQBq7d8Abe3/AG3t/wBt7f8Aa+3/DHLu0wAAAAAAAAAAAAAAAIfO+lgAj/Pfwub8HgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLj0KAQA1t8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/CQDW/0tA4Z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMyfcWAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAmF9vJDADX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wQA1t+Zku5OAAAAAAAA
AAByr/VuAGbs3wBt7f8Abe3/AG3t/wBt7f8AZ+zfrdD5MgAAAAAAAAAAyen9FgCR8t8mp/W5AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOi7esQoA1v8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+7tvQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANrX+QgNANffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/CwDW/zgt3rMAAAAAAAAAANrq
/AYAau3fAG3t/wBt7f8Abe3/AG3t/wBp7P9KmPKVAAAAAAAAAAAAAAAAKaj1twCS8v+P0vpQAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHw/YcBgDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/woA1v9CNuCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALu29CoHANb/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/BQDW37Gr8jQAAAAAAAAAADuP
8aUAaez/AG3t/wBt7f8Abe3/AG3t/wBo7N/O4/wSAAAAAAAAAACZ1vpGAJPy3wCV89/a8P0GAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnXeaDBwDW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8NANffAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAJKL7VQIANb/DwDX/w8A1/8PANf/DwDX/w8A1/8MANb/Kx7dwQAAAAAAAAAAwt37HgBm
7N8Abe3/AG3t/wBt7f8Abe3/AGrt/0KT8p0AAAAAAAAAAAAAAAAImfPXAJXy/yKl9b0AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnGtvFDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANbfsq7zMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHJp6HYJANb/DwDX/w8A1/8PANf/DwDX/w8A1/8FANbfkYntVgAAAAAAAAAASZjylwBp
7P8Abe3/AG3t/wBt7f8Abe3/AGjs38Hc+x4AAAAAAAAAAJPT+kwAk/LfAJTy/2XB+HoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDgDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8IANb/iIHrXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAEo+4aELANb/DwDX/w8A1/8PANf/DwDX/w4A1/8RBtfZAAAAAAAAAAAAAAAAAWvt3wBt
7f8Abe3/AG3t/wBt7f8Aa+3/KITwtwAAAAAAAAAAAAAAACio9bcAlvL/AJPy/67e+zIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANHO9xILANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/aV/mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACca28UPANf/DwDX/w8A1/8PANf/DwDX/wgA1v9gVuWJAAAAAAAAAACbxvhEAGjt3wBt
7f8Abe3/AG3t/wBt7f8AaOz/gbf2XgAAAAAAAAAA1+/9CACV8t8Al/L/AJXz/8np/BYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALiz8ywNANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8HANb/aWDmgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wYA1v+xq/I0AAAAAAAAAAAvh/GxAGrt/wBt
7f8Abe3/AG3t/wBt7f8AaOzfy+H7FAAAAAAAAAAAesn5ZgCU8v8Al/L/AJby/9jv/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/M9xQLANbfDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANf/Z17mgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DwDX/wwB19/f3foCAAAAAAAAAAAAau3fAG3t/wBt
7f8Abe3/AG3t/wBs7f8Mc+3TAAAAAAAAAAAAAAAAKaj1twCW8/8Al/L/Apjz/9Xu/QoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAdffDwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8JANb/gXnqZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/DADX/y4g3b8AAAAAAAAAAK/T+jAAaOzfAG3t/wBt
7f8Abe3/AG3t/wBr7f85jfGnAAAAAAAAAAAAAAAAA5jz3QCX8v8Al/P/Apjz/9fu/QgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlF9vJDQDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8FANb/tK/yMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACYY28cPANf/DwDX/w8A1/8PANf/CADW/2JY5YcAAAAAAAAAAHq09mYAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9nqPR4AAAAAAAAAADO6/0SAJXy3wCY8/8Al/L/AZbz/9zx/gQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWuaFCADW/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w4A1/8LANff3tz5BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADgs37MNANf/DwDX/w8A1/8PANf/BwDV/5CI7VgAAAAAAAAAAE+a8pEAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P+IuvdYAAAAAAAAAACu3/syAJTy/wGY8/8Al/L/AJXy/8zq/RQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAvPQkBwDW3w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wwA1v8wI9y9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGVc5YMJANb/DwDX/w8A1/8PANf/BwDW/7Ks8jQAAAAAAAAAADOL8K0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7P+nzPk4AAAAAAAAAACl2vs6AJPy/wCX8v8Al/L/AJXy/7Ph/CwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDDfrwoA1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/wUA1t+Xj+1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIZ+62IIANb/DwDX/w8A1/8PANf/CQDW/8fC9R4AAAAAAAAAAB1978MAa+3/AG3t/wBt
7f8Abe3/AG3t/wBr7f+21PoqAAAAAAAAAACQ0vpQAJTy/wGY8/8BmPP/AJTy/3XH+GoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7f0KAIA1d8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DQDX/xgL2dUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALKt8jIGANb/DwDX/w8A1/8PANf/CwDX/9vX+QgAAAAAAAAAABZ678kAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f/N4vwSAAAAAAAAAACP0fpQAJXz/wCX8v8Al/L/AJby/ymo9bcAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpA4Z8HANbfDwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8PANf/BADW35WO7lIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANPQ+BAJANbfDwDX/w8A1/8OANf/EAPY3d3a+QYAAAAAAAAAABR578sAbO3/AG3t/wBt
7f8Abe3/AG3t/wBr7f/F3vsaAAAAAAAAAACl2/s6AJPy/wCX8v8Al/L/AJfy/wGX898AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASCtjVDADX/w8A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A
1/8MANf/GxDazwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjv/QgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAZCtnVDgDX/w8A1/8NANf/GArY1QAAAAAAAAAAAAAAABh878cAa+3/AG3t/wBt
7f8Abe3/AG3t/wBq7f+t0PkyAAAAAAAAAACy4PsuAJTy/wCX8v8Al/L/AJfy/wCU8t+h2fs+AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJxfcaBQDV3w4A1/8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w4A
1/8EANXfx8P2HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJLT+k4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABJPuGhCgDW/w8A1/8NANf/GgvZ1QAAAAAAAAAAAAAAACOB8L0Aa+3/AG3t/wBt
7f8Abe3/AG3t/wBo7f+ex/hCAAAAAAAAAADM6v0UAJXy3wCY8/8Al/L/AJfy/wCV8v9BsvafAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkovtVAMA1d8PANf/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wEA
1d+Wj+5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6395EAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACSjO1UBgDW/w8A1/8OANf/EQTY29/c+QQAAAAAAAAAADyP8qMAau3/AG3t/wBt
7f8Abe3/AG3t/wBp7P96svZmAAAAAAAAAAAAAAAAA5fz3QCX8v8Al/L/AJfy/wCX8v8AlPLf1O79DAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVc5oMIANb/DwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8OANf/AwDV35CK
7VYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArd78MkWz95sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADV0/gMBwDW3w8A1/8PANf/CgDW/93b+QQAAAAAAAAAAFyh9IMAae3/AG3t/wBt
7f8Abe3/AG3t/wBp7f9Xn/OJAAAAAAAAAAAAAAAAJKX1uwCW8v8Al/L/AJfy/wCX8v8AlfL/P7H2oQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN/d+gIKAtfdDwDX/w8A
1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/w8A1/8PANf/DwDX/wwA1/8LANffjYfsWAAA
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
8t8Al/P/AZjz/wCX8v8AkvLfzOr9FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqIty9iIHrXgAAAAAAAAAAAAAAAAAA
AAAOc+7RAGzt/wBt7f8Abe3/AG3t/wBt7f8AaOzfXqP0gQAAAAAAAAAAAAAAAAAAAABVuveLAJPy3wCX
8v8Al/L/AZjz/wCX8v8BmPP/AZjz/wGY8/8AmPP/AJbz/wCW8t8+sPahndf6Qt7x/QIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc8f0Em9b6RDOs9q0AlfPfAJby/wCX
8v8Al/L/AJfy/wCT8t+m2/s6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADe3PkELyLdvQAAAAAAAAAAAAAAAAAA
AACpzvk2AGXs3wBt7f8Abe3/AG3t/wBt7f8Abe3/AGbs38Hc+x4AAAAAAAAAAAAAAAAAAAAAMar1rwCU
898AmPL/AJfy/wCX8v8Al/L/AZjz/wCX8v8Al/L/AJfy/wCX8v8AlfL/AJTy/waZ89lPt/aRhs76WrPg
/CzN6/0SAAAAAN7x/gIAAAAAAAAAAMjp/Rit3vsyhM36XEm095cAl/LfAJTy/wCW8v8Al/L/AJfy/wCX
8v8Al/L/AJPy34XN+VoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz8z4FLKu8jIAAAAAAAAAAAAA
AAAAAAAAXaH0gwBn7N8Abe3/AG3t/wBt7f8Abe3/AGvt/w5x7tEAAAAAAAAAAAAAAAAAAAAAAAAAAFG3
948Ak/LfAJfy/wCX8v8Al/L/AZfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AJfy/wCW8v8AlfL/AJXy/wCV
8/8AlvPfAJby3wCX8t8Al/LfAJby3wCW8t8AlfL/AJTy/wCW8/8Al/L/AZfy/wGY8/8Al/L/AJfy/wCW
8v8AlPLfh875WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANLP+BAAAAAAAAAAAAAA
AAAAAAAAAAAAACeC8LkAau3fAG3t/wBt7f8Abe3/AG3t/wBp7d8kgPC7AAAAAAAAAAAAAAAAAAAAAAAA
AABhvvh+AJTz3wCW8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wGY8/8Al/L/AJXy/wGX
89+b1vpEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAHbe3ZAGrt/wBt7f8Abe3/AG3t/wBt7f8AaO3fQJHxnwAAAAAAAAAAAAAAAAAA
AAAAAAAApNr7PACW898AlfL/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX
8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8AlPLfKqf0tc7r
/RIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADY6PwID3Pu0QBr7f8Abe3/AG3t/wBt7f8Abe3/AGjt30aU8pkAAAAAAAAAAAAA
AAAAAAAAAAAAANrw/QZau/eFAJXy3wCV8v8Al/L/AJfy/wCX8v8BmPP/AJfy/wCX8v8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJfy/wCY8v8Al/L/AJTz3w6c89GCzPleAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA2On8CA907tEAau3/AG3t/wBt7f8Abe3/AG3t/wBo7N8jf/C93Ov9BAAA
AAAAAAAAAAAAAAAAAAAAAAAA0ez9DlG4948AlfPfAJTy/wCW8v8Al/L/AJfy/wGY8/8Al/L/AZfy/wGY
8/8Al/L/AJfy/wCX8v8Al/L/AJfy/wCX8v8Al/L/AJXy/wCU8t8JmfPXf8r5YAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANvq/AQ3jPGpAGnt3wBt7f8Abe3/AG3t/wBt7f8Aau3/DnPu0avP
+TQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADS7f0Oh876WDOs9a0Cl/PdAJXz3wCV8v8AlfL/AJXy/wCV
8v8AlvL/AJXy/wCV8v8AlfL/AJTy/wCW898PnvPRTrf2kaDZ+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY6X0fABp7d8Aa+3/AG3t/wBt7f8Abe3/AGvt/wBp
7d9cofSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqNz7OHDE+HBKtfaVOq/2pS2p
9LMnp/S5Mqv1rTuv9aVTufaNfcr5YsLm/B4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALjW+igwh/CvAGjt3wBs7f8Abe3/AG3t/wBt
7f8Aae3fEHXuz46+91IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjL33VBB17s8Aae3fAGvt/wBt
7f8Abe3/AGzt/wBo7N8Mcu3TfrX2Yt7s/QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACex/hCOIzwpwBp
7d8Aaez/AGvt/wBs7f8AbO3/AGnt/wFt7d9GlPKZksD3Tsvh+xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTd
+xx5svVmMYjwrwVw7dsAau3fAGrt/wBn7f8AZez/AGfs/wBq7d8GcO7ZQZPyn2Om9HySwfdOncf4QsHb
+x7d7P0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADK4PsWocn4PoW59lpIlfKXJ4PwuR5+78ErhfC1VJ30i4K39l6ly/k6xt/7GgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD////////////gAAD////////////gXMD////////////gAAD////////////gXMD////////////g
AAD////8AD/////gCAL////AAAH////gAAD///8AAAB////gAAD///gAAAAP///gAAD//+AAAAAH///g
OgD//8AAAAAB///gTwD//wAAAAAA///gcwD//gAAAAAAP//gXAD//AAAAAAAH//gXAD/+AAAAAAAD//g
cgD/8AAAA/AAB//gbwD/4AAA///AA//gdAD/wAAD///4Af/gcAD/gAAf///+AP/gAAD/AAB+AH//gP/g
AAD/AAHwB///4H/gAAD+AAPAH///8D/gAAD8AAcAf////D/gAAD8AB4B//wB/h/gAAD4ADgH/+AAfx/g
AAD4AHAO/8AAH4/gAADwAOAd/wAAD8/gAADwAMA5/wAAB+fgAADwAYBz/gAAA+fgAADgA4Dn/AAAAffg
AADgBwHH+AAAAfvgAADgBgGP+AAAAP/gAADADAOP8AAAAP/gAADADAMP8AAAAP/gAADAGAcf8AAAAH/g
AADAGAYf8AAAAH/gAADAOA4f4AAAAH/gAADAMAwf4AAAAH/gAADAMAwf4AAAAH/gAADAMBwf8AAAAH/g
AADAYBwf8AAAAH/gAADAYBgf8AAAAH/gAADAYBgf8AAAAP/gAADAYBgf+AAAAP/gAADAYBgf+AAAAf/g
AADAYBgf/AAAAf/gAADAYBgf/gAAA/fgAADg4BgP/gAAA/fgAADg4BgP/wAAB/fgAADgYBwH/4AAD+fg
AADgYBwH/4AAH+fgAADwYBwD/8AAP8fg4/nwYBwD/8AA/8/gAAD4cA4B/8AD/4/gTCD4cA4A/4AP/w/g
AAD8cA8AfgB//h/gAAD8eAcAP////B/gAAD+OAeAH///+D/gAAD+PAOAB///4H/gAAD/PAPAAf//gH/g
4vn/ngHgAD/8AP/gAAD/ngDwAALAAf/gXMD/zwD4AAAAA//gAAD/74B8AAAAB//gAAD//8A+AAAAD//g
AAD//8AfAAAAP//gAAD//+AHwAAA///gAAD///AD8AAD///g4/n///wB/wAf///gAAD///4Af//////g
XMD///+AD//////gAAD////gAf/////g4/n////4AAP////gAAD/////gA/////g6Ov////////////g
AAA=
</value>
</data>
</root>

608
AutoWeightServer/UI/UC/UCCarIn.Designer.cs

@ -0,0 +1,608 @@
namespace EC.AutoWeightServer.UI.UC
{
partial class UCCarIn
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.panelOut = new System.Windows.Forms.Panel();
this.comboBoxTrailer = new System.Windows.Forms.ComboBox();
this.btnResetTrailer = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.btnResetWeight = new System.Windows.Forms.Button();
this.txtMaterialNo = new System.Windows.Forms.TextBox();
this.txtInWeight = new System.Windows.Forms.TextBox();
this.txtBillWeight = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.txtSerialNo = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.txtPlate = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.panelTop = new System.Windows.Forms.Panel();
this.labelTop = new System.Windows.Forms.Label();
this.labelDriver2 = new System.Windows.Forms.Label();
this.btnFinger2 = new DevExpress.XtraEditors.SimpleButton();
this.labelDriver1 = new System.Windows.Forms.Label();
this.btnFinger1 = new DevExpress.XtraEditors.SimpleButton();
this.numberPanel = new System.Windows.Forms.FlowLayoutPanel();
this.btn_7 = new System.Windows.Forms.Button();
this.btn_8 = new System.Windows.Forms.Button();
this.btn_9 = new System.Windows.Forms.Button();
this.btn_4 = new System.Windows.Forms.Button();
this.btn_5 = new System.Windows.Forms.Button();
this.btn_6 = new System.Windows.Forms.Button();
this.btn_1 = new System.Windows.Forms.Button();
this.btn_2 = new System.Windows.Forms.Button();
this.btn_3 = new System.Windows.Forms.Button();
this.btn_dh = new System.Windows.Forms.Button();
this.btn_0 = new System.Windows.Forms.Button();
this.btn_tg = new System.Windows.Forms.Button();
this.btnConfirm = new DevExpress.XtraEditors.SimpleButton();
this.panelOut.SuspendLayout();
this.panelTop.SuspendLayout();
this.numberPanel.SuspendLayout();
this.SuspendLayout();
//
// panelOut
//
this.panelOut.Controls.Add(this.comboBoxTrailer);
this.panelOut.Controls.Add(this.btnResetTrailer);
this.panelOut.Controls.Add(this.label4);
this.panelOut.Controls.Add(this.btnResetWeight);
this.panelOut.Controls.Add(this.txtMaterialNo);
this.panelOut.Controls.Add(this.txtInWeight);
this.panelOut.Controls.Add(this.txtBillWeight);
this.panelOut.Controls.Add(this.label5);
this.panelOut.Controls.Add(this.label6);
this.panelOut.Controls.Add(this.label2);
this.panelOut.Controls.Add(this.txtSerialNo);
this.panelOut.Controls.Add(this.label1);
this.panelOut.Controls.Add(this.txtPlate);
this.panelOut.Controls.Add(this.label3);
this.panelOut.Location = new System.Drawing.Point(0, 60);
this.panelOut.Margin = new System.Windows.Forms.Padding(0);
this.panelOut.Name = "panelOut";
this.panelOut.Size = new System.Drawing.Size(700, 210);
this.panelOut.TabIndex = 27;
this.panelOut.Click += new System.EventHandler(this.TxtBillWeight_Leave);
//
// comboBoxTrailer
//
this.comboBoxTrailer.BackColor = System.Drawing.SystemColors.Info;
this.comboBoxTrailer.Cursor = System.Windows.Forms.Cursors.Hand;
this.comboBoxTrailer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxTrailer.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.comboBoxTrailer.Font = new System.Drawing.Font("宋体", 14.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comboBoxTrailer.ForeColor = System.Drawing.SystemColors.WindowText;
this.comboBoxTrailer.FormattingEnabled = true;
this.comboBoxTrailer.IntegralHeight = false;
this.comboBoxTrailer.Location = new System.Drawing.Point(470, 112);
this.comboBoxTrailer.Margin = new System.Windows.Forms.Padding(0);
this.comboBoxTrailer.MaxDropDownItems = 12;
this.comboBoxTrailer.Name = "comboBoxTrailer";
this.comboBoxTrailer.Size = new System.Drawing.Size(130, 30);
this.comboBoxTrailer.Sorted = true;
this.comboBoxTrailer.TabIndex = 63;
this.comboBoxTrailer.DropDownClosed += new System.EventHandler(this.ComboBox_Trailer_DropDownClosed);
//
// btnResetTrailer
//
this.btnResetTrailer.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnResetTrailer.Font = new System.Drawing.Font("宋体", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnResetTrailer.Image = global::EC.AutoWeightServer.Properties.Resources.;
this.btnResetTrailer.Location = new System.Drawing.Point(610, 108);
this.btnResetTrailer.Margin = new System.Windows.Forms.Padding(0);
this.btnResetTrailer.Name = "btnResetTrailer";
this.btnResetTrailer.Size = new System.Drawing.Size(40, 40);
this.btnResetTrailer.TabIndex = 62;
this.btnResetTrailer.UseVisualStyleBackColor = true;
this.btnResetTrailer.Click += new System.EventHandler(this.Btn_ResetTrailer_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("宋体", 19F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.ForeColor = System.Drawing.Color.White;
this.label4.Location = new System.Drawing.Point(352, 111);
this.label4.Margin = new System.Windows.Forms.Padding(0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(118, 30);
this.label4.TabIndex = 61;
this.label4.Text = "挂车号:";
//
// btnResetWeight
//
this.btnResetWeight.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnResetWeight.Font = new System.Drawing.Font("宋体", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnResetWeight.Image = global::EC.AutoWeightServer.Properties.Resources.;
this.btnResetWeight.Location = new System.Drawing.Point(610, 158);
this.btnResetWeight.Margin = new System.Windows.Forms.Padding(0);
this.btnResetWeight.Name = "btnResetWeight";
this.btnResetWeight.Size = new System.Drawing.Size(40, 40);
this.btnResetWeight.TabIndex = 60;
this.btnResetWeight.UseVisualStyleBackColor = true;
this.btnResetWeight.Click += new System.EventHandler(this.Btn_ResetWeight_Click);
//
// txtMaterialNo
//
this.txtMaterialNo.BackColor = System.Drawing.SystemColors.Info;
this.txtMaterialNo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtMaterialNo.Enabled = false;
this.txtMaterialNo.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtMaterialNo.Location = new System.Drawing.Point(200, 60);
this.txtMaterialNo.Margin = new System.Windows.Forms.Padding(0);
this.txtMaterialNo.Name = "txtMaterialNo";
this.txtMaterialNo.ReadOnly = true;
this.txtMaterialNo.Size = new System.Drawing.Size(400, 35);
this.txtMaterialNo.TabIndex = 55;
//
// txtInWeight
//
this.txtInWeight.BackColor = System.Drawing.SystemColors.Info;
this.txtInWeight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtInWeight.Enabled = false;
this.txtInWeight.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtInWeight.ForeColor = System.Drawing.Color.OliveDrab;
this.txtInWeight.Location = new System.Drawing.Point(470, 160);
this.txtInWeight.Margin = new System.Windows.Forms.Padding(0);
this.txtInWeight.Name = "txtInWeight";
this.txtInWeight.ReadOnly = true;
this.txtInWeight.Size = new System.Drawing.Size(130, 35);
this.txtInWeight.TabIndex = 59;
//
// txtBillWeight
//
this.txtBillWeight.BackColor = System.Drawing.SystemColors.Info;
this.txtBillWeight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBillWeight.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtBillWeight.Location = new System.Drawing.Point(200, 160);
this.txtBillWeight.Margin = new System.Windows.Forms.Padding(0);
this.txtBillWeight.Name = "txtBillWeight";
this.txtBillWeight.ReadOnly = true;
this.txtBillWeight.Size = new System.Drawing.Size(130, 35);
this.txtBillWeight.TabIndex = 58;
this.txtBillWeight.Click += new System.EventHandler(this.TxtBillWeight_Enter);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.ForeColor = System.Drawing.Color.White;
this.label5.Location = new System.Drawing.Point(70, 163);
this.label5.Margin = new System.Windows.Forms.Padding(0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(130, 25);
this.label5.TabIndex = 57;
this.label5.Text = "运单重量:";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.ForeColor = System.Drawing.Color.White;
this.label6.Location = new System.Drawing.Point(340, 163);
this.label6.Margin = new System.Windows.Forms.Padding(0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(130, 25);
this.label6.TabIndex = 56;
this.label6.Text = "入场重量:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 19F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.ForeColor = System.Drawing.Color.White;
this.label2.Location = new System.Drawing.Point(82, 61);
this.label2.Margin = new System.Windows.Forms.Padding(0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(118, 30);
this.label2.TabIndex = 54;
this.label2.Text = "料 号:";
//
// txtSerialNo
//
this.txtSerialNo.BackColor = System.Drawing.SystemColors.Info;
this.txtSerialNo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtSerialNo.Enabled = false;
this.txtSerialNo.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtSerialNo.Location = new System.Drawing.Point(200, 10);
this.txtSerialNo.Margin = new System.Windows.Forms.Padding(0);
this.txtSerialNo.Name = "txtSerialNo";
this.txtSerialNo.ReadOnly = true;
this.txtSerialNo.Size = new System.Drawing.Size(400, 35);
this.txtSerialNo.TabIndex = 53;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 19F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(82, 11);
this.label1.Margin = new System.Windows.Forms.Padding(0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(118, 30);
this.label1.TabIndex = 52;
this.label1.Text = "单 号:";
//
// txtPlate
//
this.txtPlate.BackColor = System.Drawing.SystemColors.Info;
this.txtPlate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtPlate.Enabled = false;
this.txtPlate.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtPlate.Location = new System.Drawing.Point(200, 110);
this.txtPlate.Margin = new System.Windows.Forms.Padding(0);
this.txtPlate.Name = "txtPlate";
this.txtPlate.ReadOnly = true;
this.txtPlate.Size = new System.Drawing.Size(130, 35);
this.txtPlate.TabIndex = 51;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("宋体", 19F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.ForeColor = System.Drawing.Color.White;
this.label3.Location = new System.Drawing.Point(82, 111);
this.label3.Margin = new System.Windows.Forms.Padding(0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(118, 30);
this.label3.TabIndex = 50;
this.label3.Text = "车牌号:";
//
// panelTop
//
this.panelTop.Controls.Add(this.labelTop);
this.panelTop.Dock = System.Windows.Forms.DockStyle.Top;
this.panelTop.Location = new System.Drawing.Point(0, 0);
this.panelTop.Name = "panelTop";
this.panelTop.Size = new System.Drawing.Size(700, 60);
this.panelTop.TabIndex = 31;
this.panelTop.Click += new System.EventHandler(this.TxtBillWeight_Leave);
//
// labelTop
//
this.labelTop.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelTop.Font = new System.Drawing.Font("微软雅黑", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.labelTop.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.labelTop.Location = new System.Drawing.Point(0, 0);
this.labelTop.Margin = new System.Windows.Forms.Padding(0);
this.labelTop.Name = "labelTop";
this.labelTop.Size = new System.Drawing.Size(700, 60);
this.labelTop.TabIndex = 3;
this.labelTop.Text = "运单信息";
this.labelTop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelDriver2
//
this.labelDriver2.BackColor = System.Drawing.SystemColors.InactiveCaption;
this.labelDriver2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.labelDriver2.Location = new System.Drawing.Point(375, 376);
this.labelDriver2.Margin = new System.Windows.Forms.Padding(0);
this.labelDriver2.Name = "labelDriver2";
this.labelDriver2.Size = new System.Drawing.Size(120, 45);
this.labelDriver2.TabIndex = 54;
this.labelDriver2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnFinger2
//
this.btnFinger2.Appearance.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnFinger2.Appearance.Options.UseFont = true;
this.btnFinger2.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.Flat;
this.btnFinger2.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnFinger2.ImageOptions.Image = global::EC.AutoWeightServer.Properties.Resources.;
this.btnFinger2.Location = new System.Drawing.Point(508, 376);
this.btnFinger2.Margin = new System.Windows.Forms.Padding(0);
this.btnFinger2.Name = "btnFinger2";
this.btnFinger2.Size = new System.Drawing.Size(130, 45);
this.btnFinger2.TabIndex = 53;
this.btnFinger2.Text = "押运员指纹";
this.btnFinger2.Click += new System.EventHandler(this.Btn_Finger2_Click);
//
// labelDriver1
//
this.labelDriver1.BackColor = System.Drawing.SystemColors.InactiveCaption;
this.labelDriver1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.labelDriver1.Location = new System.Drawing.Point(375, 306);
this.labelDriver1.Margin = new System.Windows.Forms.Padding(0);
this.labelDriver1.Name = "labelDriver1";
this.labelDriver1.Size = new System.Drawing.Size(120, 45);
this.labelDriver1.TabIndex = 52;
this.labelDriver1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnFinger1
//
this.btnFinger1.Appearance.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnFinger1.Appearance.Options.UseFont = true;
this.btnFinger1.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.Flat;
this.btnFinger1.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnFinger1.ImageOptions.Image = global::EC.AutoWeightServer.Properties.Resources.;
this.btnFinger1.Location = new System.Drawing.Point(508, 306);
this.btnFinger1.Margin = new System.Windows.Forms.Padding(0);
this.btnFinger1.Name = "btnFinger1";
this.btnFinger1.Size = new System.Drawing.Size(130, 45);
this.btnFinger1.TabIndex = 51;
this.btnFinger1.Text = "运输员指纹";
this.btnFinger1.Click += new System.EventHandler(this.Btn_Finger1_Click);
//
// numberPanel
//
this.numberPanel.Controls.Add(this.btn_7);
this.numberPanel.Controls.Add(this.btn_8);
this.numberPanel.Controls.Add(this.btn_9);
this.numberPanel.Controls.Add(this.btn_4);
this.numberPanel.Controls.Add(this.btn_5);
this.numberPanel.Controls.Add(this.btn_6);
this.numberPanel.Controls.Add(this.btn_1);
this.numberPanel.Controls.Add(this.btn_2);
this.numberPanel.Controls.Add(this.btn_3);
this.numberPanel.Controls.Add(this.btn_dh);
this.numberPanel.Controls.Add(this.btn_0);
this.numberPanel.Controls.Add(this.btn_tg);
this.numberPanel.Location = new System.Drawing.Point(50, 285);
this.numberPanel.Name = "numberPanel";
this.numberPanel.Padding = new System.Windows.Forms.Padding(6);
this.numberPanel.Size = new System.Drawing.Size(310, 290);
this.numberPanel.TabIndex = 50;
this.numberPanel.Visible = false;
//
// btn_7
//
this.btn_7.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_7.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_7.Location = new System.Drawing.Point(6, 6);
this.btn_7.Margin = new System.Windows.Forms.Padding(0);
this.btn_7.Name = "btn_7";
this.btn_7.Size = new System.Drawing.Size(99, 70);
this.btn_7.TabIndex = 15;
this.btn_7.Text = "7";
this.btn_7.UseVisualStyleBackColor = true;
this.btn_7.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_8
//
this.btn_8.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_8.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_8.Location = new System.Drawing.Point(105, 6);
this.btn_8.Margin = new System.Windows.Forms.Padding(0);
this.btn_8.Name = "btn_8";
this.btn_8.Size = new System.Drawing.Size(99, 70);
this.btn_8.TabIndex = 16;
this.btn_8.Text = "8";
this.btn_8.UseVisualStyleBackColor = true;
this.btn_8.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_9
//
this.btn_9.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_9.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_9.Location = new System.Drawing.Point(204, 6);
this.btn_9.Margin = new System.Windows.Forms.Padding(0);
this.btn_9.Name = "btn_9";
this.btn_9.Size = new System.Drawing.Size(99, 70);
this.btn_9.TabIndex = 17;
this.btn_9.Text = "9";
this.btn_9.UseVisualStyleBackColor = true;
this.btn_9.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_4
//
this.btn_4.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_4.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_4.Location = new System.Drawing.Point(6, 76);
this.btn_4.Margin = new System.Windows.Forms.Padding(0);
this.btn_4.Name = "btn_4";
this.btn_4.Size = new System.Drawing.Size(99, 70);
this.btn_4.TabIndex = 20;
this.btn_4.Text = "4";
this.btn_4.UseVisualStyleBackColor = true;
this.btn_4.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_5
//
this.btn_5.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_5.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_5.Location = new System.Drawing.Point(105, 76);
this.btn_5.Margin = new System.Windows.Forms.Padding(0);
this.btn_5.Name = "btn_5";
this.btn_5.Size = new System.Drawing.Size(99, 70);
this.btn_5.TabIndex = 19;
this.btn_5.Text = "5";
this.btn_5.UseVisualStyleBackColor = true;
this.btn_5.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_6
//
this.btn_6.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_6.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_6.Location = new System.Drawing.Point(204, 76);
this.btn_6.Margin = new System.Windows.Forms.Padding(0);
this.btn_6.Name = "btn_6";
this.btn_6.Size = new System.Drawing.Size(99, 70);
this.btn_6.TabIndex = 18;
this.btn_6.Text = "6";
this.btn_6.UseVisualStyleBackColor = true;
this.btn_6.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_1
//
this.btn_1.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_1.Location = new System.Drawing.Point(6, 146);
this.btn_1.Margin = new System.Windows.Forms.Padding(0);
this.btn_1.Name = "btn_1";
this.btn_1.Size = new System.Drawing.Size(99, 70);
this.btn_1.TabIndex = 20;
this.btn_1.Text = "1";
this.btn_1.UseVisualStyleBackColor = true;
this.btn_1.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_2
//
this.btn_2.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_2.Location = new System.Drawing.Point(105, 146);
this.btn_2.Margin = new System.Windows.Forms.Padding(0);
this.btn_2.Name = "btn_2";
this.btn_2.Size = new System.Drawing.Size(99, 70);
this.btn_2.TabIndex = 19;
this.btn_2.Text = "2";
this.btn_2.UseVisualStyleBackColor = true;
this.btn_2.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_3
//
this.btn_3.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_3.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_3.Location = new System.Drawing.Point(204, 146);
this.btn_3.Margin = new System.Windows.Forms.Padding(0);
this.btn_3.Name = "btn_3";
this.btn_3.Size = new System.Drawing.Size(99, 70);
this.btn_3.TabIndex = 17;
this.btn_3.Text = "3";
this.btn_3.UseVisualStyleBackColor = true;
this.btn_3.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_dh
//
this.btn_dh.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_dh.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_dh.Location = new System.Drawing.Point(6, 216);
this.btn_dh.Margin = new System.Windows.Forms.Padding(0);
this.btn_dh.Name = "btn_dh";
this.btn_dh.Size = new System.Drawing.Size(99, 70);
this.btn_dh.TabIndex = 23;
this.btn_dh.Text = ".";
this.btn_dh.UseVisualStyleBackColor = true;
this.btn_dh.Click += new System.EventHandler(this.Btn_dh_Click);
//
// btn_0
//
this.btn_0.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_0.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_0.Location = new System.Drawing.Point(105, 216);
this.btn_0.Margin = new System.Windows.Forms.Padding(0);
this.btn_0.Name = "btn_0";
this.btn_0.Size = new System.Drawing.Size(99, 70);
this.btn_0.TabIndex = 22;
this.btn_0.Text = "0";
this.btn_0.UseVisualStyleBackColor = true;
this.btn_0.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_tg
//
this.btn_tg.Cursor = System.Windows.Forms.Cursors.Hand;
this.btn_tg.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_tg.Location = new System.Drawing.Point(204, 216);
this.btn_tg.Margin = new System.Windows.Forms.Padding(0);
this.btn_tg.Name = "btn_tg";
this.btn_tg.Size = new System.Drawing.Size(99, 70);
this.btn_tg.TabIndex = 21;
this.btn_tg.Text = "退格";
this.btn_tg.UseVisualStyleBackColor = true;
this.btn_tg.Click += new System.EventHandler(this.Btn_tg_Click);
//
// btnConfirm
//
this.btnConfirm.Appearance.Font = new System.Drawing.Font("Tahoma", 12F);
this.btnConfirm.Appearance.Options.UseFont = true;
this.btnConfirm.BackgroundImage = global::EC.AutoWeightServer.Properties.Resources.;
this.btnConfirm.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.Flat;
this.btnConfirm.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnConfirm.ImageOptions.Image = global::EC.AutoWeightServer.Properties.Resources.ok32;
this.btnConfirm.Location = new System.Drawing.Point(508, 443);
this.btnConfirm.Margin = new System.Windows.Forms.Padding(0);
this.btnConfirm.Name = "btnConfirm";
this.btnConfirm.Size = new System.Drawing.Size(133, 47);
this.btnConfirm.TabIndex = 49;
this.btnConfirm.Text = "确认";
this.btnConfirm.Click += new System.EventHandler(this.InFinishBill);
//
// UCCarIn
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(43)))), ((int)(((byte)(96)))));
this.Controls.Add(this.labelDriver2);
this.Controls.Add(this.btnFinger2);
this.Controls.Add(this.labelDriver1);
this.Controls.Add(this.btnFinger1);
this.Controls.Add(this.numberPanel);
this.Controls.Add(this.btnConfirm);
this.Controls.Add(this.panelOut);
this.Controls.Add(this.panelTop);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "UCCarIn";
this.Size = new System.Drawing.Size(700, 600);
this.Click += new System.EventHandler(this.TxtBillWeight_Leave);
this.panelOut.ResumeLayout(false);
this.panelOut.PerformLayout();
this.panelTop.ResumeLayout(false);
this.numberPanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panelOut;
private System.Windows.Forms.Panel panelTop;
private System.Windows.Forms.Label labelTop;
private System.Windows.Forms.Label labelDriver2;
private DevExpress.XtraEditors.SimpleButton btnFinger2;
private System.Windows.Forms.Label labelDriver1;
private DevExpress.XtraEditors.SimpleButton btnFinger1;
private System.Windows.Forms.FlowLayoutPanel numberPanel;
private System.Windows.Forms.Button btn_7;
private System.Windows.Forms.Button btn_8;
private System.Windows.Forms.Button btn_9;
private System.Windows.Forms.Button btn_4;
private System.Windows.Forms.Button btn_5;
private System.Windows.Forms.Button btn_6;
private System.Windows.Forms.Button btn_1;
private System.Windows.Forms.Button btn_2;
private System.Windows.Forms.Button btn_3;
private System.Windows.Forms.Button btn_dh;
private System.Windows.Forms.Button btn_0;
private System.Windows.Forms.Button btn_tg;
private DevExpress.XtraEditors.SimpleButton btnConfirm;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button btnResetWeight;
private System.Windows.Forms.TextBox txtMaterialNo;
private System.Windows.Forms.TextBox txtInWeight;
private System.Windows.Forms.TextBox txtBillWeight;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtSerialNo;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtPlate;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button btnResetTrailer;
private System.Windows.Forms.ComboBox comboBoxTrailer;
}
}

514
AutoWeightServer/UI/UC/UCCarIn.cs

@ -0,0 +1,514 @@
using EC.AutoWeightServer.Center;
using EC.AutoWeightServer.Model.Config;
using EC.AutoWeightServer.Model.EventArgsEx;
using EC.AutoWeightServer.Model.State;
using EC.Entity.Transport;
using EC.Utils;
using System;
using System.Windows.Forms;
namespace EC.AutoWeightServer.UI.UC
{
public partial class UCCarIn : UserControl
{
private FrmMainServer _mainServer;
public UCCarIn()
{
InitializeComponent();
txtBillWeight.GotFocus += TxtBillWeight_Enter; //获取焦点前发生事件
}
internal void SetMainServer(FrmMainServer server)
{
_mainServer = server;
}
#region 界面组件内容读写方法
internal string GetLabelSerialNo()
{
return txtSerialNo.Text;
}
internal void SetLabelSerialNo(string txt)
{
txtSerialNo.Invoke((MethodInvoker)delegate ()
{
txtSerialNo.Text = txt;
});
}
internal void SetLabelMaterialNo(string txt)
{
txtMaterialNo.Invoke((MethodInvoker)delegate ()
{
txtMaterialNo.Text = txt;
});
}
internal string GetLabelBillWeight()
{
return txtBillWeight.Text;
}
internal void SetLabelBillWeight(string txt)
{
txtBillWeight.Invoke((MethodInvoker)delegate ()
{
txtBillWeight.Text = txt;
});
}
internal string GetLabelPlate()
{
return txtPlate.Text;
}
internal void SetLabelPlate(string txt)
{
txtPlate.Invoke((MethodInvoker)delegate ()
{
txtPlate.Text = txt;
});
}
internal string GetComboBoxTrailerPlate()
{
return comboBoxTrailer.SelectedItem?.ToString();
}
internal string GetLabelInWeight()
{
return txtInWeight.Text;
}
internal void SetLabelInWeight(decimal? weightDec)
{
txtInWeight.Invoke((MethodInvoker)delegate ()
{
var txt = (weightDec != null) ? CommonUtil.WeightDecToStr((decimal)weightDec, 3, '0') : string.Empty;
txtInWeight.Text = txt;
});
}
internal void SetLabelDriver1(string name)
{
labelDriver1.Invoke((MethodInvoker)delegate ()
{
labelDriver1.Text = name;
});
}
internal void SetLabelDriver2(string name)
{
labelDriver2.Invoke((MethodInvoker)delegate ()
{
labelDriver2.Text = name;
});
}
/// <summary>
/// 初始化组件内容
/// </summary>
/// <param name="serialNo"></param>
/// <param name="plate"></param>
/// <param name="materialNo"></param>
private void InitBillComponent(string serialNo, string plate, string materialNo)
{
SetLabelSerialNo(serialNo);
SetLabelPlate(plate);
SetLabelMaterialNo(materialNo);
InitCombBoxTrailer(plate);
}
/// <summary>
/// 清空组件内容
/// </summary>
internal void ClearBillComponent()
{
Invoke((MethodInvoker)delegate ()
{
var empty = string.Empty;
txtSerialNo.Text = empty;
txtMaterialNo.Text = empty;
txtPlate.Text = empty;
comboBoxTrailer.Items.Clear();
txtBillWeight.Text = empty;
txtInWeight.Text = empty;
btnConfirm.Enabled = true;
TxtBillWeight_Leave(null, null);
labelDriver1.Text = empty;
labelDriver2.Text = empty;
driver1Entity = null;
driver2Entity = null;
});
}
#endregion 界面组件内容读写方法
#region 界面操作响应事件
private DriverEntity driver1Entity { get; set; }
private DriverEntity driver2Entity { get; set; }
internal void Btn_Finger1_Click(object sender, EventArgs e)
{
var plate = GetLabelPlate();
var tempDriver = CheckFingerPrint(plate);
if (tempDriver == null)
{
_mainServer?.SetScrollLabelText($"指纹对比失败!{DateTime.Now:yyyy/MM/dd HH:mm:ss}");
return;
}
driver1Entity = tempDriver;
SetLabelDriver1(driver1Entity.Name);
}
internal void Btn_Finger2_Click(object sender, EventArgs e)
{
var plate = GetLabelPlate();
var tempDriver = CheckFingerPrint(plate);
if (tempDriver == null)
{
_mainServer?.SetScrollLabelText($"指纹对比失败!{DateTime.Now:yyyy/MM/dd HH:mm:ss}");
return;
}
driver2Entity = tempDriver;
SetLabelDriver2(driver2Entity.Name);
}
private void ComboBox_Trailer_DropDownClosed(object sender, EventArgs e)
{
label4.Focus();//让 ComboBoxTrailer 失去焦点,避免整个Box获取焦点为蓝色
}
private void Btn_ResetTrailer_Click(object sender, EventArgs e)
{
var plate = GetLabelPlate();
InitCombBoxTrailer(plate);
}
private void Btn_ResetWeight_Click(object sender, EventArgs e)
{
SetLabelInWeight(null);
}
/// <summary>
/// 指纹对比
/// </summary>
/// <param name="plate"></param>
/// <returns></returns>
public DriverEntity CheckFingerPrint(string plate)
{
var verFp = _mainServer.DeviceCenter.GetVerFingerPrint();
if (string.IsNullOrEmpty(verFp))
return null;
//var authList = _authService.SelectEntityListByWhere($"TruckPlate = '{plate}'");
//foreach (var auth in authList)
//{
//var driver = _driverService.SelectEntityByWhere($"Id='{auth.DriverId}'");
//if (driver == null)
//continue;
//if (_mainServer.MatchFingerPrint(verFp, driver.Finger1))
//return driver;
//if (_mainServer.MatchFingerPrint(verFp, driver.Finger2))
//return driver;
//}
var truck = ServiceCenter.TruckService.SelectEntityByWhere($"LicensePlate = '{plate}'");
var driverList = ServiceCenter.DriverService.SelectEntityListByWhere($"SupplierId = '{truck.SupplierId}'");
//var driverList = _driverService.SelectEntityListByWhere($"SupplierName = '{truck.SupplierName}'");
foreach (var driver in driverList)
{
if (driver == null)
continue;
if (_mainServer.DeviceCenter.MatchFingerPrint(verFp, driver.Finger1))
return driver;
if (_mainServer.DeviceCenter.MatchFingerPrint(verFp, driver.Finger2))
return driver;
}
return null;
}
private void InitCombBoxTrailer(string plate)
{
comboBoxTrailer.Items.Clear();
var truck = ServiceCenter.TruckService.SelectEntityByWhere($"LicensePlate = '{plate}'");
var trailerList = ServiceCenter.TrailerService.SelectEntityListByWhere($"SupplierId = '{truck.SupplierId}'");
foreach (var trailer in trailerList)
{
comboBoxTrailer.Items.Add(trailer.LicensePlate);
}
}
#endregion 界面操作响应事件
#region 流程
/// <summary>
/// 入场开始
/// </summary>
/// <param name="plateArgs"></param>
internal void InStartBill(PlateEventArgs plateArgs)
{
var plate = plateArgs.Plate;
var ex = new Exception();
//判断车辆有无入场权限
if (!ServiceCenter.AuthService.CheckTruckAuth(plate))
{
ex.Data["msg"] = $"{plate},无运输权限!";
ex.Data["help"] = $"{plate},无运输权限!请联系管理人员!";
_mainServer.ShowOperateException(ex, false, true, true);
return;
}
//判断有无中断的入场记录
var tempBill = ServiceCenter.BillService.GetLastBillByLicensePlate(plate);
if (tempBill != null)//有记录,则继续判断;无记录,则继续(第一次入场)
{
if (tempBill.State == (int)BillState.InStart)//入场中断,则继续;其它,则退出
{
InitBillComponent(tempBill.SerialNumber, tempBill.LicensePlate, tempBill.MaterialNo);//初始化组件内容
_mainServer.SetInStartState(plate);//进入入场界面
return;
}
}
var siteEntity = _mainServer.LocalAttrCenter.Site;
var truckEntity = ServiceCenter.TruckService.GetTruckByPlate(plate);
var planEntity = ServiceCenter.MonthPlanService.GetLastPlan(siteEntity.CompanyId, truckEntity.SupplierId);
//判断月计划是否记录
if (planEntity == null)
{
ex.Data["msg"] = $"{plate},月计划获取失败!";
ex.Data["help"] = $"{plate},月计划获取失败!请重试或联系管理人员!";
_mainServer.ShowOperateException(ex, false, true, true);
return;
}
//入场开始属性
var state = (int)BillState.InStart;
var serialNo = ServiceCenter.IniService.GetNewBillSerialNo();
var photoEntity = ServiceCenter.PhotoService.InsertPhoto(plateArgs.FileName, state);
var result = ServiceCenter.BillService.InsertBillInStart(serialNo, siteEntity, planEntity, truckEntity, photoEntity, state);
if (result <= 0)
{
ex.Data["msg"] = $"{plate},运单添加失败!";
ex.Data["help"] = $"{plate},运单添加失败!请重试或联系管理人员!";
_mainServer.ShowOperateException(ex, false, true, true);
return;
}
InitBillComponent(serialNo, truckEntity.LicensePlate, planEntity.MaterialNo);//初始化组件内容
_mainServer.SetInStartState(plate);//进入入场界面
}
/// <summary>
/// 入场结束
/// </summary>
private void InFinishBill(object sender, EventArgs e)
{
var plate = GetLabelPlate();
var ex = new Exception();
if (comboBoxTrailer.SelectedIndex < 0)
{
ex.Data["msg"] = $"{plate},未选择挂车号!";
ex.Data["help"] = $"{plate},未选择挂车号,请选择挂车号!";
_mainServer.ShowOperateException(ex, false, true, true);
comboBoxTrailer.DroppedDown = true;
return;
}
if (string.IsNullOrEmpty(GetLabelBillWeight()))
{
ex.Data["msg"] = $"{plate},未输入运单重量!";
ex.Data["help"] = $"{plate},未输入运单重量,请输入运单重量!";
_mainServer.ShowOperateException(ex, false, true, true);
txtBillWeight.Focus();
return;
}
if (string.IsNullOrEmpty(GetLabelInWeight()))
{
ex.Data["msg"] = $"{plate},未完成自动计重!";
ex.Data["help"] = $"{plate},未完成自动计重,请等待自动计重!";
_mainServer.ShowOperateException(ex, false, true, true);
return;
}
if (!IsWeightConfirm())
{
btnResetWeight.PerformClick();
return;
}
//入场结束属性
var state = (int)BillState.InFinish;
var serialNumber = GetLabelSerialNo();
var trailerPlate = GetComboBoxTrailerPlate();
var billWeight = CommonUtil.StrToDec(GetLabelBillWeight());
var inWeight = CommonUtil.StrToDec(GetLabelInWeight());
if (driver1Entity == null)
{
ex.Data["msg"] = $"{plate},运输员指纹对比失败!";
ex.Data["help"] = $"{plate},运输员指纹对比失败,请进行指纹对比!";
_mainServer.ShowOperateException(ex, false, true, true);
Btn_Finger1_Click(null, null);
return;
}
if (driver2Entity == null)
{
ex.Data["msg"] = $"{plate},押运员指纹对比失败!";
ex.Data["help"] = $"{plate},押运员指纹对比失败,请进行指纹对比!";
_mainServer.ShowOperateException(ex, false, true, true);
Btn_Finger2_Click(null, null);
return;
}
var trailerEntity = ServiceCenter.TrailerService.SelectEntityByWhere($"LicensePlate = '{trailerPlate}'");
//保存图片信息
var photoEntity = ServiceCenter.PhotoService.InsertPhoto(_mainServer.DeviceCenter.GetInPicture2(GetLabelPlate()), state);
var result = ServiceCenter.BillService.UpdateBillInFinish(serialNumber, billWeight, inWeight, trailerEntity, driver1Entity, driver2Entity, photoEntity, state);//更新入场结束记录
if (result <= 0)
{
ex.Data["msg"] = $"{plate},运单更新失败!";
ex.Data["help"] = $"{plate},运单更新失败!请重试或联系管理人员!";
_mainServer.ShowOperateException(ex, false, true, true);
return;
}
btnConfirm.Enabled = false;
_mainServer.SetInFinishState(plate);//离开入场界面
}
#endregion 流程
#region Other
private bool IsWeightConfirm()
{
return Equals(_mainServer.GetLabelWeight(), GetLabelInWeight());
}
internal void SafeTempBill()
{
var serialNo = GetLabelSerialNo();
var plate = GetLabelPlate();
var inWeightStr = GetLabelInWeight();
if (string.IsNullOrEmpty(serialNo))
return;
if (string.IsNullOrEmpty(inWeightStr))
return;
var billEntity = ServiceCenter.BillService.GetBillBySerialNumber(serialNo);
var inWeight = CommonUtil.StrToDec(inWeightStr);
var msg = $"{plate},检测到未确认入场!";
var help = $"{plate},检测到未确认入场,已临时保存并记录!";
if (!string.IsNullOrEmpty(inWeightStr))
{
billEntity.InWeight = inWeight;
billEntity.Remark += $"{DateTime.Now}:检测到未确认入场(重量 - {inWeight}t)!\n";
help += $"已取得稳定重量({inWeight}t)";
}
else
{
billEntity.InWeight = 0;
billEntity.Remark += $"{DateTime.Now}:检测到未确认入场(重量 - {inWeight}t)!\n";
help += "未取得稳定重量";
}
if (driver1Entity != null)
{
billEntity.DriverId = driver1Entity.Id;
billEntity.DriverName = driver1Entity.Name;
}
if (driver2Entity != null)
{
billEntity.Driver2Id = driver2Entity.Id;
billEntity.Driver2Name = driver2Entity.Name;
}
billEntity.InFinishTime = DateTime.Now;
billEntity.State = (int)BillState.InFinish;
ServiceCenter.BillService.SaveForm(billEntity);
_mainServer.SetResetState(msg, help);
}
internal bool IsJustInFinish(string plate)
{
var bill = ServiceCenter.BillService.GetLastBillByLicensePlate(plate);
if (bill == null)
return false;
if (bill.State != (int)BillState.InFinish)
return false;
var span = DateTime.Now - bill.InFinishTime;
return span.TotalSeconds <= ServerConfig.BillInterval;
}
#endregion Other
#region 数字键盘输入事件
/// <summary>
/// 进入输入框,打开数值输入面板
/// </summary>
private void TxtBillWeight_Enter(object sender, EventArgs e)
{
numberPanel.Show();
}
/// <summary>
/// 离开输入框,关闭数值输入面板
/// </summary>
private void TxtBillWeight_Leave(object sender, EventArgs e)
{
panelOut.Focus();
numberPanel.Hide();
}
/// <summary>
/// 数值输入面板下的数字输入按钮响应事件
/// </summary>
private void Btn_Number_Click(object sender, EventArgs e)
{
var btn = (Button)sender;
var txt = GetLabelBillWeight();
txt += btn.Text;
SetLabelBillWeight(txt);
txtBillWeight.Focus();
txtBillWeight.SelectionStart = txt.Length;
}
/// <summary>
/// 数值输入面板下的逗号输入按钮响应事件
/// </summary>
private void Btn_dh_Click(object sender, EventArgs e)
{
var txt = GetLabelBillWeight();
if (txt.IndexOf(".", StringComparison.Ordinal) >= 0)
return;
txt += ".";
SetLabelBillWeight(txt);
}
/// <summary>
/// 数值输入面板下的退格按钮响应事件
/// </summary>
private void Btn_tg_Click(object sender, EventArgs e)
{
var txt = GetLabelBillWeight();
if (txt.Length <= 0)
return;
SetLabelBillWeight(txt.Substring(0, txt.Length - 1));
}
#endregion 数字键盘输入事件
}
}

120
AutoWeightServer/UI/UC/UCCarIn.resx

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

478
AutoWeightServer/UI/UC/UCCarIn2.Designer.cs

@ -0,0 +1,478 @@
namespace EC.AutoWeightServer.UI.UC
{
partial class UCCarIn2
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.pnlOut = new System.Windows.Forms.Panel();
this.btnResetWeight = new System.Windows.Forms.Button();
this.numberPanel = new System.Windows.Forms.FlowLayoutPanel();
this.btn_7 = new System.Windows.Forms.Button();
this.btn_8 = new System.Windows.Forms.Button();
this.btn_9 = new System.Windows.Forms.Button();
this.btn_4 = new System.Windows.Forms.Button();
this.btn_5 = new System.Windows.Forms.Button();
this.btn_6 = new System.Windows.Forms.Button();
this.btn_1 = new System.Windows.Forms.Button();
this.btn_2 = new System.Windows.Forms.Button();
this.btn_3 = new System.Windows.Forms.Button();
this.btn_dh = new System.Windows.Forms.Button();
this.btn_0 = new System.Windows.Forms.Button();
this.btn_tg = new System.Windows.Forms.Button();
this.txtMaterialNo = new System.Windows.Forms.TextBox();
this.btnInConfirm = new DevExpress.XtraEditors.SimpleButton();
this.txtInWeight = new System.Windows.Forms.TextBox();
this.txtBillWeight = new System.Windows.Forms.TextBox();
this.label10 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.txtSerialNo = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.txtPlate = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.panel7 = new System.Windows.Forms.Panel();
this.LabelTimeout = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.pnlOut.SuspendLayout();
this.numberPanel.SuspendLayout();
this.panel7.SuspendLayout();
this.SuspendLayout();
//
// pnlOut
//
this.pnlOut.Controls.Add(this.btnResetWeight);
this.pnlOut.Controls.Add(this.numberPanel);
this.pnlOut.Controls.Add(this.txtMaterialNo);
this.pnlOut.Controls.Add(this.btnInConfirm);
this.pnlOut.Controls.Add(this.txtInWeight);
this.pnlOut.Controls.Add(this.txtBillWeight);
this.pnlOut.Controls.Add(this.label10);
this.pnlOut.Controls.Add(this.label8);
this.pnlOut.Controls.Add(this.label7);
this.pnlOut.Controls.Add(this.txtSerialNo);
this.pnlOut.Controls.Add(this.label6);
this.pnlOut.Controls.Add(this.txtPlate);
this.pnlOut.Controls.Add(this.label5);
this.pnlOut.Location = new System.Drawing.Point(3, 68);
this.pnlOut.Name = "pnlOut";
this.pnlOut.Size = new System.Drawing.Size(691, 540);
this.pnlOut.TabIndex = 27;
this.pnlOut.Click += new System.EventHandler(this.TxtBillWeight_Leave);
//
// btnResetWeight
//
this.btnResetWeight.Image = global::EC.AutoWeightServer.Properties.Resources.;
this.btnResetWeight.Location = new System.Drawing.Point(645, 167);
this.btnResetWeight.Name = "btnResetWeight";
this.btnResetWeight.Size = new System.Drawing.Size(42, 42);
this.btnResetWeight.TabIndex = 44;
this.btnResetWeight.UseVisualStyleBackColor = true;
this.btnResetWeight.Click += new System.EventHandler(this.btnResetWeight_Click);
//
// numberPanel
//
this.numberPanel.Controls.Add(this.btn_7);
this.numberPanel.Controls.Add(this.btn_8);
this.numberPanel.Controls.Add(this.btn_9);
this.numberPanel.Controls.Add(this.btn_4);
this.numberPanel.Controls.Add(this.btn_5);
this.numberPanel.Controls.Add(this.btn_6);
this.numberPanel.Controls.Add(this.btn_1);
this.numberPanel.Controls.Add(this.btn_2);
this.numberPanel.Controls.Add(this.btn_3);
this.numberPanel.Controls.Add(this.btn_dh);
this.numberPanel.Controls.Add(this.btn_0);
this.numberPanel.Controls.Add(this.btn_tg);
this.numberPanel.Location = new System.Drawing.Point(185, 245);
this.numberPanel.Name = "numberPanel";
this.numberPanel.Padding = new System.Windows.Forms.Padding(6);
this.numberPanel.Size = new System.Drawing.Size(310, 292);
this.numberPanel.TabIndex = 41;
this.numberPanel.Visible = false;
//
// btn_7
//
this.btn_7.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_7.Location = new System.Drawing.Point(6, 6);
this.btn_7.Margin = new System.Windows.Forms.Padding(0);
this.btn_7.Name = "btn_7";
this.btn_7.Size = new System.Drawing.Size(99, 70);
this.btn_7.TabIndex = 15;
this.btn_7.Text = "7";
this.btn_7.UseVisualStyleBackColor = true;
this.btn_7.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_8
//
this.btn_8.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_8.Location = new System.Drawing.Point(105, 6);
this.btn_8.Margin = new System.Windows.Forms.Padding(0);
this.btn_8.Name = "btn_8";
this.btn_8.Size = new System.Drawing.Size(99, 70);
this.btn_8.TabIndex = 16;
this.btn_8.Text = "8";
this.btn_8.UseVisualStyleBackColor = true;
this.btn_8.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_9
//
this.btn_9.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_9.Location = new System.Drawing.Point(204, 6);
this.btn_9.Margin = new System.Windows.Forms.Padding(0);
this.btn_9.Name = "btn_9";
this.btn_9.Size = new System.Drawing.Size(99, 70);
this.btn_9.TabIndex = 17;
this.btn_9.Text = "9";
this.btn_9.UseVisualStyleBackColor = true;
this.btn_9.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_4
//
this.btn_4.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_4.Location = new System.Drawing.Point(6, 76);
this.btn_4.Margin = new System.Windows.Forms.Padding(0);
this.btn_4.Name = "btn_4";
this.btn_4.Size = new System.Drawing.Size(99, 70);
this.btn_4.TabIndex = 20;
this.btn_4.Text = "4";
this.btn_4.UseVisualStyleBackColor = true;
this.btn_4.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_5
//
this.btn_5.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_5.Location = new System.Drawing.Point(105, 76);
this.btn_5.Margin = new System.Windows.Forms.Padding(0);
this.btn_5.Name = "btn_5";
this.btn_5.Size = new System.Drawing.Size(99, 70);
this.btn_5.TabIndex = 19;
this.btn_5.Text = "5";
this.btn_5.UseVisualStyleBackColor = true;
this.btn_5.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_6
//
this.btn_6.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_6.Location = new System.Drawing.Point(204, 76);
this.btn_6.Margin = new System.Windows.Forms.Padding(0);
this.btn_6.Name = "btn_6";
this.btn_6.Size = new System.Drawing.Size(99, 70);
this.btn_6.TabIndex = 18;
this.btn_6.Text = "6";
this.btn_6.UseVisualStyleBackColor = true;
this.btn_6.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_1
//
this.btn_1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_1.Location = new System.Drawing.Point(6, 146);
this.btn_1.Margin = new System.Windows.Forms.Padding(0);
this.btn_1.Name = "btn_1";
this.btn_1.Size = new System.Drawing.Size(99, 70);
this.btn_1.TabIndex = 20;
this.btn_1.Text = "1";
this.btn_1.UseVisualStyleBackColor = true;
this.btn_1.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_2
//
this.btn_2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_2.Location = new System.Drawing.Point(105, 146);
this.btn_2.Margin = new System.Windows.Forms.Padding(0);
this.btn_2.Name = "btn_2";
this.btn_2.Size = new System.Drawing.Size(99, 70);
this.btn_2.TabIndex = 19;
this.btn_2.Text = "2";
this.btn_2.UseVisualStyleBackColor = true;
this.btn_2.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_3
//
this.btn_3.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_3.Location = new System.Drawing.Point(204, 146);
this.btn_3.Margin = new System.Windows.Forms.Padding(0);
this.btn_3.Name = "btn_3";
this.btn_3.Size = new System.Drawing.Size(99, 70);
this.btn_3.TabIndex = 17;
this.btn_3.Text = "3";
this.btn_3.UseVisualStyleBackColor = true;
this.btn_3.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_dh
//
this.btn_dh.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_dh.Location = new System.Drawing.Point(6, 216);
this.btn_dh.Margin = new System.Windows.Forms.Padding(0);
this.btn_dh.Name = "btn_dh";
this.btn_dh.Size = new System.Drawing.Size(99, 70);
this.btn_dh.TabIndex = 23;
this.btn_dh.Text = ".";
this.btn_dh.UseVisualStyleBackColor = true;
this.btn_dh.Click += new System.EventHandler(this.Btn_dh_Click);
//
// btn_0
//
this.btn_0.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_0.Location = new System.Drawing.Point(105, 216);
this.btn_0.Margin = new System.Windows.Forms.Padding(0);
this.btn_0.Name = "btn_0";
this.btn_0.Size = new System.Drawing.Size(99, 70);
this.btn_0.TabIndex = 22;
this.btn_0.Text = "0";
this.btn_0.UseVisualStyleBackColor = true;
this.btn_0.Click += new System.EventHandler(this.Btn_Number_Click);
//
// btn_tg
//
this.btn_tg.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_tg.Location = new System.Drawing.Point(204, 216);
this.btn_tg.Margin = new System.Windows.Forms.Padding(0);
this.btn_tg.Name = "btn_tg";
this.btn_tg.Size = new System.Drawing.Size(99, 70);
this.btn_tg.TabIndex = 21;
this.btn_tg.Text = "退格";
this.btn_tg.UseVisualStyleBackColor = true;
this.btn_tg.Click += new System.EventHandler(this.Btn_tg_Click);
//
// txtMaterialNo
//
this.txtMaterialNo.BackColor = System.Drawing.SystemColors.Info;
this.txtMaterialNo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtMaterialNo.Enabled = false;
this.txtMaterialNo.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtMaterialNo.Location = new System.Drawing.Point(488, 54);
this.txtMaterialNo.Name = "txtMaterialNo";
this.txtMaterialNo.ReadOnly = true;
this.txtMaterialNo.Size = new System.Drawing.Size(151, 34);
this.txtMaterialNo.TabIndex = 30;
//
// btnInConfirm
//
this.btnInConfirm.Appearance.Font = new System.Drawing.Font("Tahoma", 12F);
this.btnInConfirm.Appearance.Options.UseFont = true;
this.btnInConfirm.BackgroundImage = global::EC.AutoWeightServer.Properties.Resources.;
this.btnInConfirm.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.Flat;
this.btnInConfirm.ImageOptions.Image = global::EC.AutoWeightServer.Properties.Resources.ok32;
this.btnInConfirm.Location = new System.Drawing.Point(505, 251);
this.btnInConfirm.Name = "btnInConfirm";
this.btnInConfirm.Size = new System.Drawing.Size(133, 47);
this.btnInConfirm.TabIndex = 28;
this.btnInConfirm.Text = "确认";
this.btnInConfirm.Click += new System.EventHandler(this.InFinishBill);
//
// txtInWeight
//
this.txtInWeight.BackColor = System.Drawing.SystemColors.Info;
this.txtInWeight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtInWeight.Enabled = false;
this.txtInWeight.Font = new System.Drawing.Font("宋体", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtInWeight.ForeColor = System.Drawing.Color.OliveDrab;
this.txtInWeight.Location = new System.Drawing.Point(203, 162);
this.txtInWeight.Name = "txtInWeight";
this.txtInWeight.ReadOnly = true;
this.txtInWeight.Size = new System.Drawing.Size(435, 51);
this.txtInWeight.TabIndex = 40;
//
// txtBillWeight
//
this.txtBillWeight.BackColor = System.Drawing.SystemColors.Info;
this.txtBillWeight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtBillWeight.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtBillWeight.Location = new System.Drawing.Point(203, 100);
this.txtBillWeight.Name = "txtBillWeight";
this.txtBillWeight.ReadOnly = true;
this.txtBillWeight.Size = new System.Drawing.Size(435, 34);
this.txtBillWeight.TabIndex = 36;
//
// label10
//
this.label10.AutoSize = true;
this.label10.Font = new System.Drawing.Font("宋体", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.ForeColor = System.Drawing.Color.White;
this.label10.Location = new System.Drawing.Point(40, 104);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(154, 31);
this.label10.TabIndex = 35;
this.label10.Text = "运单重量:";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Font = new System.Drawing.Font("宋体", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.ForeColor = System.Drawing.Color.White;
this.label8.Location = new System.Drawing.Point(40, 170);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(154, 31);
this.label8.TabIndex = 31;
this.label8.Text = "入场重量:";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("宋体", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.ForeColor = System.Drawing.Color.White;
this.label7.Location = new System.Drawing.Point(371, 54);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(124, 31);
this.label7.TabIndex = 29;
this.label7.Text = "料 号:";
//
// txtSerialNo
//
this.txtSerialNo.BackColor = System.Drawing.SystemColors.Info;
this.txtSerialNo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtSerialNo.Enabled = false;
this.txtSerialNo.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtSerialNo.Location = new System.Drawing.Point(203, 3);
this.txtSerialNo.Name = "txtSerialNo";
this.txtSerialNo.ReadOnly = true;
this.txtSerialNo.Size = new System.Drawing.Size(435, 34);
this.txtSerialNo.TabIndex = 28;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("宋体", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.ForeColor = System.Drawing.Color.White;
this.label6.Location = new System.Drawing.Point(70, 7);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(124, 31);
this.label6.TabIndex = 27;
this.label6.Text = "单 号:";
//
// txtPlate
//
this.txtPlate.BackColor = System.Drawing.SystemColors.Info;
this.txtPlate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtPlate.Enabled = false;
this.txtPlate.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtPlate.Location = new System.Drawing.Point(203, 49);
this.txtPlate.Name = "txtPlate";
this.txtPlate.ReadOnly = true;
this.txtPlate.Size = new System.Drawing.Size(137, 34);
this.txtPlate.TabIndex = 26;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("宋体", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.ForeColor = System.Drawing.Color.White;
this.label5.Location = new System.Drawing.Point(70, 49);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(123, 31);
this.label5.TabIndex = 25;
this.label5.Text = "车牌号:";
//
// panel7
//
this.panel7.Controls.Add(this.LabelTimeout);
this.panel7.Controls.Add(this.label4);
this.panel7.Dock = System.Windows.Forms.DockStyle.Top;
this.panel7.Location = new System.Drawing.Point(0, 0);
this.panel7.Name = "panel7";
this.panel7.Size = new System.Drawing.Size(700, 61);
this.panel7.TabIndex = 31;
this.panel7.Click += new System.EventHandler(this.TxtBillWeight_Leave);
//
// LabelTimeout
//
this.LabelTimeout.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.LabelTimeout.AutoSize = true;
this.LabelTimeout.BackColor = System.Drawing.Color.Transparent;
this.LabelTimeout.Font = new System.Drawing.Font("宋体", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelTimeout.ForeColor = System.Drawing.Color.IndianRed;
this.LabelTimeout.Location = new System.Drawing.Point(43, 6);
this.LabelTimeout.Name = "LabelTimeout";
this.LabelTimeout.Size = new System.Drawing.Size(0, 31);
this.LabelTimeout.TabIndex = 4;
this.LabelTimeout.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("微软雅黑", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.label4.Location = new System.Drawing.Point(272, 0);
this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(178, 51);
this.label4.TabIndex = 3;
this.label4.Text = "运单信息";
//
// UCCarIn2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(43)))), ((int)(((byte)(96)))));
this.Controls.Add(this.pnlOut);
this.Controls.Add(this.panel7);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "UCCarIn2";
this.Size = new System.Drawing.Size(700, 612);
this.Click += new System.EventHandler(this.TxtBillWeight_Leave);
this.pnlOut.ResumeLayout(false);
this.pnlOut.PerformLayout();
this.numberPanel.ResumeLayout(false);
this.panel7.ResumeLayout(false);
this.panel7.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel pnlOut;
private System.Windows.Forms.TextBox txtMaterialNo;
private System.Windows.Forms.TextBox txtInWeight;
private System.Windows.Forms.TextBox txtBillWeight;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox txtSerialNo;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox txtPlate;
private System.Windows.Forms.Label label5;
private DevExpress.XtraEditors.SimpleButton btnInConfirm;
private System.Windows.Forms.Panel panel7;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.FlowLayoutPanel numberPanel;
private System.Windows.Forms.Button btn_7;
private System.Windows.Forms.Button btn_8;
private System.Windows.Forms.Button btn_9;
private System.Windows.Forms.Button btn_4;
private System.Windows.Forms.Button btn_5;
private System.Windows.Forms.Button btn_6;
private System.Windows.Forms.Button btn_1;
private System.Windows.Forms.Button btn_2;
private System.Windows.Forms.Button btn_3;
private System.Windows.Forms.Button btn_dh;
private System.Windows.Forms.Button btn_0;
private System.Windows.Forms.Button btn_tg;
private System.Windows.Forms.Label LabelTimeout;
private System.Windows.Forms.Button btnResetWeight;
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save