Dail 2 år sedan
incheckning
4f51743639
38 ändrade filer med 3504 tillägg och 0 borttagningar
  1. BIN
      .vs/MOTINOVA_MC_Test/FileContentIndex/20388439-4b88-4557-88f0-9266faecfec6.vsidx
  2. 0 0
      .vs/MOTINOVA_MC_Test/FileContentIndex/read.lock
  3. BIN
      .vs/MOTINOVA_MC_Test/v16/.suo
  4. BIN
      .vs/MOTINOVA_MC_Test/v17/.suo
  5. 135 0
      BMS协议测试指令集.txt
  6. 22 0
      MOTINOVA_MC_Test.sln
  7. BIN
      MOTINOVA_MC_Test.v12.suo
  8. BIN
      MOTINOVA_MC_Test/738909cc31ae070122fb4c705d7b99bd.ico
  9. 831 0
      MOTINOVA_MC_Test/Form1.Designer.cs
  10. 1349 0
      MOTINOVA_MC_Test/Form1.cs
  11. 709 0
      MOTINOVA_MC_Test/Form1.resx
  12. 115 0
      MOTINOVA_MC_Test/MOTINOVA_MC_Test.csproj
  13. 13 0
      MOTINOVA_MC_Test/MOTINOVA_MC_Test.csproj.user
  14. 20 0
      MOTINOVA_MC_Test/Program.cs
  15. 36 0
      MOTINOVA_MC_Test/Properties/AssemblyInfo.cs
  16. 63 0
      MOTINOVA_MC_Test/Properties/Resources.Designer.cs
  17. 117 0
      MOTINOVA_MC_Test/Properties/Resources.resx
  18. 26 0
      MOTINOVA_MC_Test/Properties/Settings.Designer.cs
  19. 7 0
      MOTINOVA_MC_Test/Properties/Settings.settings
  20. BIN
      MOTINOVA_MC_Test/bin/Debug/MOTINOVA_BMS_Test.exe
  21. BIN
      MOTINOVA_MC_Test/bin/Debug/MOTINOVA_BMS_Test.pdb
  22. BIN
      MOTINOVA_MC_Test/bin/Debug/MOTINOVA_BMS_Test.vshost.exe
  23. 11 0
      MOTINOVA_MC_Test/bin/Debug/MOTINOVA_MC_Test.vshost.exe.manifest
  24. BIN
      MOTINOVA_MC_Test/bin/Debug/NetFx20SP2_x86.exe
  25. BIN
      MOTINOVA_MC_Test/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  26. BIN
      MOTINOVA_MC_Test/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  27. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_BMS_Test.Properties.Resources.resources
  28. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_BMS_Test.exe
  29. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_BMS_Test.pdb
  30. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.Form1.resources
  31. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.AssemblyReference.cache
  32. 1 0
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.CoreCompileInputs.cache
  33. 49 0
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.FileListAbsolute.txt
  34. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.GenerateResource.cache
  35. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csprojAssemblyReference.cache
  36. BIN
      MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csprojResolveAssemblyReference.cache
  37. BIN
      MOTINOVA_MC_Test/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
  38. BIN
      MOTINOVA_MC_Test/shortcut_default.ico

BIN
.vs/MOTINOVA_MC_Test/FileContentIndex/20388439-4b88-4557-88f0-9266faecfec6.vsidx


+ 0 - 0
.vs/MOTINOVA_MC_Test/FileContentIndex/read.lock


BIN
.vs/MOTINOVA_MC_Test/v16/.suo


BIN
.vs/MOTINOVA_MC_Test/v17/.suo


+ 135 - 0
BMS协议测试指令集.txt

@@ -0,0 +1,135 @@
+"CDL查询BMS版本信息
+ID: 07 52 
+Data: 55 AA 11 02 33 00 FD A6 62 7C F0 "
+
+"CDL查询BMS电芯电压
+ID: 07 52 
+Data: 55 AA 11 02 35 00 4F 48 2E E5 F0"
+
+"CDL查询BMS历史信息
+ID: 07 52 
+Data: 55 AA 11 02 38 00 67 58 CD ED F0 "
+
+"CDL查询BMS设计信息
+ID: 07 52 
+Data: 55 AA 11 02 36 00 94 5F 86 72 F0 "
+
+"CDL查询BMS生产信息
+ID: 07 52 
+Data: 55 AA 11 02 37 00 DD 52 E1 FF F0 "
+
+"CDL查询BMS物理ID
+ID: 07 52 
+Data: 55 AA 11 02 30 00 26 B1 CA EB F0 "
+
+"CDL查询BMS校验码
+ID: 07 52 
+Data: 55 AA 11 02 31 00 6F BC AD 66 F0 "
+
+"CDL查询BMS运行信息
+ID: 07 52 
+Data: 55 AA 11 02 34 00 06 45 49 68 F0 "
+
+"CDL查询BMS自定义信息1
+ID: 07 52 
+Data: 55 AA 11 02 39 00 2E 55 AA 60 F0 "
+
+"CDL查询BMS自定义信息2
+ID: 07 52 
+Data: 55 AA 11 02 3B 00 BC 4F 65 7A F0 "
+
+"CDL查询BMS自定义信息3
+ID: 07 52 
+Data: 55 AA 11 02 3D 00 0E A1 29 E3 F0 "
+
+CDL读取BMS故障日志
+
+"CDL写入BMS复位指令
+ID: 07 52 
+Data: 55 AA 16 07 42 05 52 45 53 45 54 A4 1D A4 84 F0 "
+
+"CDL写入BMS生产信息
+""TEST.   TEST.   20230101""
+ID: 07 52 
+Data: 55 AA 16 22 3F 20 54 45 53 54 2E 20 20 20 54 45 53 54 2E 20 20 20 54 45 53 54 2E 20 20 20 00 00 00 00 00 00 00 00 FD CE 38 B5 F0 "
+
+"CDL写入BMS生产序列号
+""202301010001.""
+ID: 07 52 
+Data: 55 AA 16 12 41 10 32 30 32 33 30 31 30 31 30 30 30 31 2E 2E 20 20 F8 8D EE 17 F0 "
+
+"CDL写入BMS校验码
+""0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA 0xBB 0xCC""
+ID:  07 52 
+Data: 55 AA 16 0E 32 0C 11 22 33 44 55 66 77 88 99 AA BB CC 0E 08 54 D1 F0 "
+
+"CDL写入BMS型号
+“ BMS_Model.”
+ID: 07 52 
+Data: 55 AA 16 12 40 10 20 42 4D 53 5F 4D 6F 64 65 6C 2E 2E 20 20 20 20 81 41 74 47 F0 "
+
+"CDL写入BMS自定义信息1
+""User Info 1.""
+ID: 07 52 
+Data: 55 AA 16 12 3A 10 55 73 65 72 20 49 6E 66 6F 20 31 2E 2E 20 20 20 7B 38 15 E5 F0 "
+
+"CDL写入BMS自定义信息2
+""User Info 2.""
+ID: 07 52 
+Data: 55 AA 16 12 3C 10 55 73 65 72 20 49 6E 66 6F 20 32 2E 2E 20 20 20 0C DB 6E F7 F0 "
+
+"CDL写入BMS自定义信息3
+""User Info 3.""
+ID: 07 52
+Data: 55 AA  16 12 3E 10 55 73 65 72 20 49 6E 66 6F 20 33 2E 2E 20 20 20 DD C5 4C 94 F0 "
+
+通过CDL完成BMS固件升级
+"HMI查询BMS版本信息
+ID: 07 42 
+Data: 55 AA 11 02 50 00 5A EC C0 7D F0  "
+
+"HMI查询BMS电芯电压
+ID: 07 42 
+Data: 55 AA 11 02 52 00 C8 F6 0F 67 F0 "
+
+"HMI查询BMS设计信息
+ID: 07 42 
+Data: 55 AA 11 02 51 00 13 E1 A7 F0 F0  "
+
+"MC查询BMS设计信息
+ID: 07 12 
+Data: 55 AA 11 02 33 00 1E AF 5E 57 F0 "
+
+"MC查询BMS物理ID
+ID: 07 12 
+Data: 55 AA 11 02 31 00 8C B5 91 4D F0 "
+
+"MC查询BMS校验码
+ID: 07 12 
+Data: 55 AA 11 02 32 00 57 A2 39 DA F0 "
+
+"MC在线检测BMS
+ID: 07 12 
+Data: 55 AA 11 0B 30 09 48 41 4E 44 53 48 4B 41 45 F9 4F C2 0A F0 "
+
+"OBC查询BMS版本信息
+ID: 07 32
+Data: 55 AA 11 02 51 00 7A FE 83 72 F0 "
+
+"OBC查询BMS电芯电压
+ID: 07 32
+Data: 55 AA 11 02 53 00 E8 E4 4C 68 F0 "
+
+"OBC查询BMS设计信息
+ID: 07 32
+Data: 55 AA 11 02 52 00 A1 E9 2B E5 F0 "
+
+"OBC查询BMS运行信息
+ID: 07 32
+Data: 55 AA 11 02 50 00 33 F3 E4 FF F0 "
+
+"BMS发送关机指令
+ID: 07 20
+Data: 55 AA 0C 0A 13 08 53 48 55 52 44 4F 57 4E 95 B6 EC E2 F0"
+
+BMS发送故障码

+ 22 - 0
MOTINOVA_MC_Test.sln

@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MOTINOVA_MC_Test", "MOTINOVA_MC_Test\MOTINOVA_MC_Test.csproj", "{3F9958A2-3FFC-4B41-8A1A-F8C3EC0054FD}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3F9958A2-3FFC-4B41-8A1A-F8C3EC0054FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3F9958A2-3FFC-4B41-8A1A-F8C3EC0054FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3F9958A2-3FFC-4B41-8A1A-F8C3EC0054FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3F9958A2-3FFC-4B41-8A1A-F8C3EC0054FD}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

BIN
MOTINOVA_MC_Test.v12.suo


BIN
MOTINOVA_MC_Test/738909cc31ae070122fb4c705d7b99bd.ico


+ 831 - 0
MOTINOVA_MC_Test/Form1.Designer.cs

@@ -0,0 +1,831 @@
+namespace MOTINOVA_MC_Test
+{
+    partial class Form1
+    {
+        /// <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 Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.label58 = new System.Windows.Forms.Label();
+            this.button_RefreshPort = new System.Windows.Forms.Button();
+            this.button_ComOpen = new System.Windows.Forms.Button();
+            this.textBox_RevCnt = new System.Windows.Forms.TextBox();
+            this.comboBox_Baudrate = new System.Windows.Forms.ComboBox();
+            this.comboBox_ComIndex = new System.Windows.Forms.ComboBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.serialPort1 = new System.IO.Ports.SerialPort(this.components);
+            this.timer1 = new System.Windows.Forms.Timer(this.components);
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.button_MC_Check = new System.Windows.Forms.Button();
+            this.button_MC_Ready = new System.Windows.Forms.Button();
+            this.button_MC_ReadDesignInfo = new System.Windows.Forms.Button();
+            this.button_MC_ReadCheckNum = new System.Windows.Forms.Button();
+            this.button_MC_ReadID = new System.Windows.Forms.Button();
+            this.label3 = new System.Windows.Forms.Label();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.button_OBC_ReadCell = new System.Windows.Forms.Button();
+            this.button_OBC_ReadDesign = new System.Windows.Forms.Button();
+            this.button_OBC_ReadVer = new System.Windows.Forms.Button();
+            this.button_OBC_Ready = new System.Windows.Forms.Button();
+            this.button_OBC_ReadRunInfo = new System.Windows.Forms.Button();
+            this.label12 = new System.Windows.Forms.Label();
+            this.groupBox4 = new System.Windows.Forms.GroupBox();
+            this.button_HMI_ReadCell = new System.Windows.Forms.Button();
+            this.button_HMI_Ready = new System.Windows.Forms.Button();
+            this.button_HMI_ReadDesignInfo = new System.Windows.Forms.Button();
+            this.button_HMI_ReadVerInfo = new System.Windows.Forms.Button();
+            this.label9 = new System.Windows.Forms.Label();
+            this.richTextBox_Data = new System.Windows.Forms.RichTextBox();
+            this.groupBox5 = new System.Windows.Forms.GroupBox();
+            this.groupBox6 = new System.Windows.Forms.GroupBox();
+            this.textBox_SendData = new System.Windows.Forms.TextBox();
+            this.button_CDL_ReadLog = new System.Windows.Forms.Button();
+            this.button_CDL_Reset = new System.Windows.Forms.Button();
+            this.button_CDL_WriteSN = new System.Windows.Forms.Button();
+            this.button_CDL_WriteModel = new System.Windows.Forms.Button();
+            this.button_CDL_WriteFac = new System.Windows.Forms.Button();
+            this.button_CDL_Write_User3 = new System.Windows.Forms.Button();
+            this.button_CDL_ReadUser3 = new System.Windows.Forms.Button();
+            this.button_CDL_Write_User2 = new System.Windows.Forms.Button();
+            this.button_CDL_ReadUser2 = new System.Windows.Forms.Button();
+            this.button_CDL_Write_User1 = new System.Windows.Forms.Button();
+            this.button_CDL_ReadUser1 = new System.Windows.Forms.Button();
+            this.button_CDL_ReadHistory = new System.Windows.Forms.Button();
+            this.button_CDL_ReadFac = new System.Windows.Forms.Button();
+            this.button_CDL_ReadDesign = new System.Windows.Forms.Button();
+            this.button_CDL_ReadCell = new System.Windows.Forms.Button();
+            this.button_CDL_ReadRunInfo = new System.Windows.Forms.Button();
+            this.button_CDL_ReadVer = new System.Windows.Forms.Button();
+            this.button_CDL_WriteCheckNum = new System.Windows.Forms.Button();
+            this.button_CDL_ReadCheckNum = new System.Windows.Forms.Button();
+            this.button_CDL_ReadID = new System.Windows.Forms.Button();
+            this.label4 = new System.Windows.Forms.Label();
+            this.groupBox7 = new System.Windows.Forms.GroupBox();
+            this.richTextBox_Rev = new System.Windows.Forms.RichTextBox();
+            this.groupBox1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            this.groupBox4.SuspendLayout();
+            this.groupBox5.SuspendLayout();
+            this.groupBox6.SuspendLayout();
+            this.groupBox7.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.label58);
+            this.groupBox1.Controls.Add(this.button_RefreshPort);
+            this.groupBox1.Controls.Add(this.button_ComOpen);
+            this.groupBox1.Controls.Add(this.textBox_RevCnt);
+            this.groupBox1.Controls.Add(this.comboBox_Baudrate);
+            this.groupBox1.Controls.Add(this.comboBox_ComIndex);
+            this.groupBox1.Controls.Add(this.label2);
+            this.groupBox1.Controls.Add(this.label1);
+            this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.groupBox1.Location = new System.Drawing.Point(12, 12);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(220, 135);
+            this.groupBox1.TabIndex = 0;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "串口设置";
+            // 
+            // label58
+            // 
+            this.label58.AutoSize = true;
+            this.label58.Location = new System.Drawing.Point(6, 93);
+            this.label58.Name = "label58";
+            this.label58.Size = new System.Drawing.Size(37, 20);
+            this.label58.TabIndex = 10;
+            this.label58.Text = "计数";
+            this.label58.Click += new System.EventHandler(this.label58_Click);
+            // 
+            // button_RefreshPort
+            // 
+            this.button_RefreshPort.Location = new System.Drawing.Point(158, 19);
+            this.button_RefreshPort.Name = "button_RefreshPort";
+            this.button_RefreshPort.Size = new System.Drawing.Size(56, 32);
+            this.button_RefreshPort.TabIndex = 1;
+            this.button_RefreshPort.Text = "刷新";
+            this.button_RefreshPort.UseVisualStyleBackColor = true;
+            this.button_RefreshPort.Click += new System.EventHandler(this.button_RefreshPort_Click);
+            // 
+            // button_ComOpen
+            // 
+            this.button_ComOpen.Location = new System.Drawing.Point(158, 56);
+            this.button_ComOpen.Name = "button_ComOpen";
+            this.button_ComOpen.Size = new System.Drawing.Size(56, 59);
+            this.button_ComOpen.TabIndex = 1;
+            this.button_ComOpen.Text = "连接";
+            this.button_ComOpen.UseVisualStyleBackColor = true;
+            this.button_ComOpen.Click += new System.EventHandler(this.button_ComOpen_Click);
+            // 
+            // textBox_RevCnt
+            // 
+            this.textBox_RevCnt.Location = new System.Drawing.Point(70, 89);
+            this.textBox_RevCnt.Name = "textBox_RevCnt";
+            this.textBox_RevCnt.ReadOnly = true;
+            this.textBox_RevCnt.Size = new System.Drawing.Size(82, 26);
+            this.textBox_RevCnt.TabIndex = 2;
+            this.textBox_RevCnt.Text = "0";
+            // 
+            // comboBox_Baudrate
+            // 
+            this.comboBox_Baudrate.FormattingEnabled = true;
+            this.comboBox_Baudrate.Items.AddRange(new object[] {
+            "2400",
+            "4800",
+            "9600",
+            "19200",
+            "38400",
+            "57600",
+            "115200"});
+            this.comboBox_Baudrate.Location = new System.Drawing.Point(70, 56);
+            this.comboBox_Baudrate.Name = "comboBox_Baudrate";
+            this.comboBox_Baudrate.Size = new System.Drawing.Size(82, 28);
+            this.comboBox_Baudrate.TabIndex = 1;
+            // 
+            // comboBox_ComIndex
+            // 
+            this.comboBox_ComIndex.FormattingEnabled = true;
+            this.comboBox_ComIndex.Location = new System.Drawing.Point(70, 21);
+            this.comboBox_ComIndex.Name = "comboBox_ComIndex";
+            this.comboBox_ComIndex.Size = new System.Drawing.Size(82, 28);
+            this.comboBox_ComIndex.TabIndex = 1;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(6, 59);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(51, 20);
+            this.label2.TabIndex = 1;
+            this.label2.Text = "波特率";
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(6, 26);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(51, 20);
+            this.label1.TabIndex = 1;
+            this.label1.Text = "串口号";
+            // 
+            // serialPort1
+            // 
+            this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
+            // 
+            // timer1
+            // 
+            this.timer1.Interval = 20;
+            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.button_MC_Check);
+            this.groupBox2.Controls.Add(this.button_MC_Ready);
+            this.groupBox2.Controls.Add(this.button_MC_ReadDesignInfo);
+            this.groupBox2.Controls.Add(this.button_MC_ReadCheckNum);
+            this.groupBox2.Controls.Add(this.button_MC_ReadID);
+            this.groupBox2.Controls.Add(this.label3);
+            this.groupBox2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.groupBox2.Location = new System.Drawing.Point(12, 153);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(133, 428);
+            this.groupBox2.TabIndex = 1;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "模拟MC";
+            // 
+            // button_MC_Check
+            // 
+            this.button_MC_Check.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_MC_Check.Location = new System.Drawing.Point(6, 73);
+            this.button_MC_Check.Name = "button_MC_Check";
+            this.button_MC_Check.Size = new System.Drawing.Size(120, 30);
+            this.button_MC_Check.TabIndex = 4;
+            this.button_MC_Check.Text = "在线检测";
+            this.button_MC_Check.UseVisualStyleBackColor = true;
+            this.button_MC_Check.Click += new System.EventHandler(this.button_MC_Check_Click);
+            // 
+            // button_MC_Ready
+            // 
+            this.button_MC_Ready.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_MC_Ready.Location = new System.Drawing.Point(6, 38);
+            this.button_MC_Ready.Name = "button_MC_Ready";
+            this.button_MC_Ready.Size = new System.Drawing.Size(120, 30);
+            this.button_MC_Ready.TabIndex = 5;
+            this.button_MC_Ready.Text = "关机就绪";
+            this.button_MC_Ready.UseVisualStyleBackColor = true;
+            this.button_MC_Ready.Click += new System.EventHandler(this.button_MC_Ready_Click);
+            // 
+            // button_MC_ReadDesignInfo
+            // 
+            this.button_MC_ReadDesignInfo.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_MC_ReadDesignInfo.Location = new System.Drawing.Point(6, 178);
+            this.button_MC_ReadDesignInfo.Name = "button_MC_ReadDesignInfo";
+            this.button_MC_ReadDesignInfo.Size = new System.Drawing.Size(120, 30);
+            this.button_MC_ReadDesignInfo.TabIndex = 3;
+            this.button_MC_ReadDesignInfo.Text = "查询设计信息";
+            this.button_MC_ReadDesignInfo.UseVisualStyleBackColor = true;
+            this.button_MC_ReadDesignInfo.Click += new System.EventHandler(this.button_MC_ReadDesignInfo_Click);
+            // 
+            // button_MC_ReadCheckNum
+            // 
+            this.button_MC_ReadCheckNum.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_MC_ReadCheckNum.Location = new System.Drawing.Point(6, 143);
+            this.button_MC_ReadCheckNum.Name = "button_MC_ReadCheckNum";
+            this.button_MC_ReadCheckNum.Size = new System.Drawing.Size(120, 30);
+            this.button_MC_ReadCheckNum.TabIndex = 3;
+            this.button_MC_ReadCheckNum.Text = "查询校验码";
+            this.button_MC_ReadCheckNum.UseVisualStyleBackColor = true;
+            this.button_MC_ReadCheckNum.Click += new System.EventHandler(this.button_MC_ReadCheckNum_Click);
+            // 
+            // button_MC_ReadID
+            // 
+            this.button_MC_ReadID.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_MC_ReadID.Location = new System.Drawing.Point(6, 108);
+            this.button_MC_ReadID.Name = "button_MC_ReadID";
+            this.button_MC_ReadID.Size = new System.Drawing.Size(120, 30);
+            this.button_MC_ReadID.TabIndex = 3;
+            this.button_MC_ReadID.Text = "查询物理ID";
+            this.button_MC_ReadID.UseVisualStyleBackColor = true;
+            this.button_MC_ReadID.Click += new System.EventHandler(this.button_MC_ReadID_Click);
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(6, 18);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(0, 20);
+            this.label3.TabIndex = 2;
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.button_OBC_ReadCell);
+            this.groupBox3.Controls.Add(this.button_OBC_ReadDesign);
+            this.groupBox3.Controls.Add(this.button_OBC_ReadVer);
+            this.groupBox3.Controls.Add(this.button_OBC_Ready);
+            this.groupBox3.Controls.Add(this.button_OBC_ReadRunInfo);
+            this.groupBox3.Controls.Add(this.label12);
+            this.groupBox3.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.groupBox3.Location = new System.Drawing.Point(151, 153);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(133, 428);
+            this.groupBox3.TabIndex = 1;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "模拟PBU/OBC";
+            // 
+            // button_OBC_ReadCell
+            // 
+            this.button_OBC_ReadCell.Location = new System.Drawing.Point(6, 178);
+            this.button_OBC_ReadCell.Name = "button_OBC_ReadCell";
+            this.button_OBC_ReadCell.Size = new System.Drawing.Size(120, 30);
+            this.button_OBC_ReadCell.TabIndex = 9;
+            this.button_OBC_ReadCell.Text = "查询电芯电压";
+            this.button_OBC_ReadCell.UseVisualStyleBackColor = true;
+            this.button_OBC_ReadCell.Click += new System.EventHandler(this.button_OBC_ReadCell_Click);
+            // 
+            // button_OBC_ReadDesign
+            // 
+            this.button_OBC_ReadDesign.Location = new System.Drawing.Point(6, 143);
+            this.button_OBC_ReadDesign.Name = "button_OBC_ReadDesign";
+            this.button_OBC_ReadDesign.Size = new System.Drawing.Size(120, 30);
+            this.button_OBC_ReadDesign.TabIndex = 8;
+            this.button_OBC_ReadDesign.Text = "查询设计信息";
+            this.button_OBC_ReadDesign.UseVisualStyleBackColor = true;
+            this.button_OBC_ReadDesign.Click += new System.EventHandler(this.button_OBC_ReadDesign_Click);
+            // 
+            // button_OBC_ReadVer
+            // 
+            this.button_OBC_ReadVer.Location = new System.Drawing.Point(6, 108);
+            this.button_OBC_ReadVer.Name = "button_OBC_ReadVer";
+            this.button_OBC_ReadVer.Size = new System.Drawing.Size(120, 30);
+            this.button_OBC_ReadVer.TabIndex = 7;
+            this.button_OBC_ReadVer.Text = "查询版本信息";
+            this.button_OBC_ReadVer.UseVisualStyleBackColor = true;
+            this.button_OBC_ReadVer.Click += new System.EventHandler(this.button_OBC_ReadVer_Click);
+            // 
+            // button_OBC_Ready
+            // 
+            this.button_OBC_Ready.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_OBC_Ready.Location = new System.Drawing.Point(6, 38);
+            this.button_OBC_Ready.Name = "button_OBC_Ready";
+            this.button_OBC_Ready.Size = new System.Drawing.Size(120, 30);
+            this.button_OBC_Ready.TabIndex = 6;
+            this.button_OBC_Ready.Text = "关机就绪";
+            this.button_OBC_Ready.UseVisualStyleBackColor = true;
+            this.button_OBC_Ready.Click += new System.EventHandler(this.button_OBC_Ready_Click);
+            // 
+            // button_OBC_ReadRunInfo
+            // 
+            this.button_OBC_ReadRunInfo.Location = new System.Drawing.Point(6, 73);
+            this.button_OBC_ReadRunInfo.Name = "button_OBC_ReadRunInfo";
+            this.button_OBC_ReadRunInfo.Size = new System.Drawing.Size(120, 30);
+            this.button_OBC_ReadRunInfo.TabIndex = 3;
+            this.button_OBC_ReadRunInfo.Text = "查询运行信息";
+            this.button_OBC_ReadRunInfo.UseVisualStyleBackColor = true;
+            this.button_OBC_ReadRunInfo.Click += new System.EventHandler(this.button_OBC_ReadRunInfo_Click);
+            // 
+            // label12
+            // 
+            this.label12.AutoSize = true;
+            this.label12.Location = new System.Drawing.Point(6, 18);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(0, 20);
+            this.label12.TabIndex = 2;
+            // 
+            // groupBox4
+            // 
+            this.groupBox4.Controls.Add(this.button_HMI_ReadCell);
+            this.groupBox4.Controls.Add(this.button_HMI_Ready);
+            this.groupBox4.Controls.Add(this.button_HMI_ReadDesignInfo);
+            this.groupBox4.Controls.Add(this.button_HMI_ReadVerInfo);
+            this.groupBox4.Controls.Add(this.label9);
+            this.groupBox4.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.groupBox4.Location = new System.Drawing.Point(290, 153);
+            this.groupBox4.Name = "groupBox4";
+            this.groupBox4.Size = new System.Drawing.Size(133, 428);
+            this.groupBox4.TabIndex = 1;
+            this.groupBox4.TabStop = false;
+            this.groupBox4.Text = "模拟HMI";
+            // 
+            // button_HMI_ReadCell
+            // 
+            this.button_HMI_ReadCell.Location = new System.Drawing.Point(7, 143);
+            this.button_HMI_ReadCell.Name = "button_HMI_ReadCell";
+            this.button_HMI_ReadCell.Size = new System.Drawing.Size(120, 30);
+            this.button_HMI_ReadCell.TabIndex = 10;
+            this.button_HMI_ReadCell.Text = "查询电芯电压";
+            this.button_HMI_ReadCell.UseVisualStyleBackColor = true;
+            this.button_HMI_ReadCell.Click += new System.EventHandler(this.button_HMI_ReadCell_Click);
+            // 
+            // button_HMI_Ready
+            // 
+            this.button_HMI_Ready.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_HMI_Ready.Location = new System.Drawing.Point(7, 38);
+            this.button_HMI_Ready.Name = "button_HMI_Ready";
+            this.button_HMI_Ready.Size = new System.Drawing.Size(120, 30);
+            this.button_HMI_Ready.TabIndex = 10;
+            this.button_HMI_Ready.Text = "关机就绪";
+            this.button_HMI_Ready.UseVisualStyleBackColor = true;
+            this.button_HMI_Ready.Click += new System.EventHandler(this.button_HMI_Ready_Click);
+            // 
+            // button_HMI_ReadDesignInfo
+            // 
+            this.button_HMI_ReadDesignInfo.Location = new System.Drawing.Point(7, 108);
+            this.button_HMI_ReadDesignInfo.Name = "button_HMI_ReadDesignInfo";
+            this.button_HMI_ReadDesignInfo.Size = new System.Drawing.Size(120, 30);
+            this.button_HMI_ReadDesignInfo.TabIndex = 3;
+            this.button_HMI_ReadDesignInfo.Text = "查询设计信息";
+            this.button_HMI_ReadDesignInfo.UseVisualStyleBackColor = true;
+            this.button_HMI_ReadDesignInfo.Click += new System.EventHandler(this.button_HMI_ReadDesignInfo_Click);
+            // 
+            // button_HMI_ReadVerInfo
+            // 
+            this.button_HMI_ReadVerInfo.Location = new System.Drawing.Point(7, 73);
+            this.button_HMI_ReadVerInfo.Name = "button_HMI_ReadVerInfo";
+            this.button_HMI_ReadVerInfo.Size = new System.Drawing.Size(120, 30);
+            this.button_HMI_ReadVerInfo.TabIndex = 3;
+            this.button_HMI_ReadVerInfo.Text = "查询版本信息";
+            this.button_HMI_ReadVerInfo.UseVisualStyleBackColor = true;
+            this.button_HMI_ReadVerInfo.Click += new System.EventHandler(this.button_HMI_ReadVerInfo_Click);
+            // 
+            // label9
+            // 
+            this.label9.AutoSize = true;
+            this.label9.Location = new System.Drawing.Point(6, 18);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(0, 20);
+            this.label9.TabIndex = 2;
+            // 
+            // richTextBox_Data
+            // 
+            this.richTextBox_Data.Location = new System.Drawing.Point(8, 28);
+            this.richTextBox_Data.Name = "richTextBox_Data";
+            this.richTextBox_Data.ReadOnly = true;
+            this.richTextBox_Data.Size = new System.Drawing.Size(238, 527);
+            this.richTextBox_Data.TabIndex = 5;
+            this.richTextBox_Data.Text = "";
+            // 
+            // groupBox5
+            // 
+            this.groupBox5.Controls.Add(this.richTextBox_Data);
+            this.groupBox5.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.groupBox5.Location = new System.Drawing.Point(700, 12);
+            this.groupBox5.Name = "groupBox5";
+            this.groupBox5.Size = new System.Drawing.Size(254, 569);
+            this.groupBox5.TabIndex = 6;
+            this.groupBox5.TabStop = false;
+            this.groupBox5.Text = "数据解析";
+            // 
+            // groupBox6
+            // 
+            this.groupBox6.Controls.Add(this.textBox_SendData);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadLog);
+            this.groupBox6.Controls.Add(this.button_CDL_Reset);
+            this.groupBox6.Controls.Add(this.button_CDL_WriteSN);
+            this.groupBox6.Controls.Add(this.button_CDL_WriteModel);
+            this.groupBox6.Controls.Add(this.button_CDL_WriteFac);
+            this.groupBox6.Controls.Add(this.button_CDL_Write_User3);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadUser3);
+            this.groupBox6.Controls.Add(this.button_CDL_Write_User2);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadUser2);
+            this.groupBox6.Controls.Add(this.button_CDL_Write_User1);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadUser1);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadHistory);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadFac);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadDesign);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadCell);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadRunInfo);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadVer);
+            this.groupBox6.Controls.Add(this.button_CDL_WriteCheckNum);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadCheckNum);
+            this.groupBox6.Controls.Add(this.button_CDL_ReadID);
+            this.groupBox6.Controls.Add(this.label4);
+            this.groupBox6.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.groupBox6.Location = new System.Drawing.Point(429, 153);
+            this.groupBox6.Name = "groupBox6";
+            this.groupBox6.Size = new System.Drawing.Size(265, 428);
+            this.groupBox6.TabIndex = 4;
+            this.groupBox6.TabStop = false;
+            this.groupBox6.Text = "模拟CDL";
+            // 
+            // textBox_SendData
+            // 
+            this.textBox_SendData.Location = new System.Drawing.Point(6, 396);
+            this.textBox_SendData.Name = "textBox_SendData";
+            this.textBox_SendData.Size = new System.Drawing.Size(246, 26);
+            this.textBox_SendData.TabIndex = 31;
+            // 
+            // button_CDL_ReadLog
+            // 
+            this.button_CDL_ReadLog.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadLog.Location = new System.Drawing.Point(132, 362);
+            this.button_CDL_ReadLog.Name = "button_CDL_ReadLog";
+            this.button_CDL_ReadLog.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadLog.TabIndex = 30;
+            this.button_CDL_ReadLog.Text = "读取日志";
+            this.button_CDL_ReadLog.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadLog.Click += new System.EventHandler(this.button_CDL_ReadLog_Click);
+            // 
+            // button_CDL_Reset
+            // 
+            this.button_CDL_Reset.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_Reset.Location = new System.Drawing.Point(6, 362);
+            this.button_CDL_Reset.Name = "button_CDL_Reset";
+            this.button_CDL_Reset.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_Reset.TabIndex = 29;
+            this.button_CDL_Reset.Text = "复位";
+            this.button_CDL_Reset.UseVisualStyleBackColor = true;
+            this.button_CDL_Reset.Click += new System.EventHandler(this.button_CDL_Reset_Click);
+            // 
+            // button_CDL_WriteSN
+            // 
+            this.button_CDL_WriteSN.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_WriteSN.Location = new System.Drawing.Point(132, 326);
+            this.button_CDL_WriteSN.Name = "button_CDL_WriteSN";
+            this.button_CDL_WriteSN.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_WriteSN.TabIndex = 28;
+            this.button_CDL_WriteSN.Text = "写入SN号";
+            this.button_CDL_WriteSN.UseVisualStyleBackColor = true;
+            this.button_CDL_WriteSN.Click += new System.EventHandler(this.button_CDL_WriteSN_Click);
+            // 
+            // button_CDL_WriteModel
+            // 
+            this.button_CDL_WriteModel.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_WriteModel.Location = new System.Drawing.Point(6, 326);
+            this.button_CDL_WriteModel.Name = "button_CDL_WriteModel";
+            this.button_CDL_WriteModel.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_WriteModel.TabIndex = 27;
+            this.button_CDL_WriteModel.Text = "写入型号";
+            this.button_CDL_WriteModel.UseVisualStyleBackColor = true;
+            this.button_CDL_WriteModel.Click += new System.EventHandler(this.button_CDL_WriteModel_Click);
+            // 
+            // button_CDL_WriteFac
+            // 
+            this.button_CDL_WriteFac.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_WriteFac.Location = new System.Drawing.Point(132, 290);
+            this.button_CDL_WriteFac.Name = "button_CDL_WriteFac";
+            this.button_CDL_WriteFac.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_WriteFac.TabIndex = 26;
+            this.button_CDL_WriteFac.Text = "写入生产信息";
+            this.button_CDL_WriteFac.UseVisualStyleBackColor = true;
+            this.button_CDL_WriteFac.Click += new System.EventHandler(this.button_CDL_WriteFac_Click);
+            // 
+            // button_CDL_Write_User3
+            // 
+            this.button_CDL_Write_User3.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_Write_User3.Location = new System.Drawing.Point(6, 290);
+            this.button_CDL_Write_User3.Name = "button_CDL_Write_User3";
+            this.button_CDL_Write_User3.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_Write_User3.TabIndex = 25;
+            this.button_CDL_Write_User3.Text = "写入自定义3";
+            this.button_CDL_Write_User3.UseVisualStyleBackColor = true;
+            this.button_CDL_Write_User3.Click += new System.EventHandler(this.button_CDL_Write_User3_Click);
+            // 
+            // button_CDL_ReadUser3
+            // 
+            this.button_CDL_ReadUser3.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadUser3.Location = new System.Drawing.Point(132, 254);
+            this.button_CDL_ReadUser3.Name = "button_CDL_ReadUser3";
+            this.button_CDL_ReadUser3.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadUser3.TabIndex = 24;
+            this.button_CDL_ReadUser3.Text = "查询自定义3";
+            this.button_CDL_ReadUser3.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadUser3.Click += new System.EventHandler(this.button_CDL_ReadUser3_Click);
+            // 
+            // button_CDL_Write_User2
+            // 
+            this.button_CDL_Write_User2.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_Write_User2.Location = new System.Drawing.Point(6, 254);
+            this.button_CDL_Write_User2.Name = "button_CDL_Write_User2";
+            this.button_CDL_Write_User2.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_Write_User2.TabIndex = 23;
+            this.button_CDL_Write_User2.Text = "写入自定义2";
+            this.button_CDL_Write_User2.UseVisualStyleBackColor = true;
+            this.button_CDL_Write_User2.Click += new System.EventHandler(this.button_CDL_Write_User2_Click);
+            // 
+            // button_CDL_ReadUser2
+            // 
+            this.button_CDL_ReadUser2.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadUser2.Location = new System.Drawing.Point(132, 218);
+            this.button_CDL_ReadUser2.Name = "button_CDL_ReadUser2";
+            this.button_CDL_ReadUser2.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadUser2.TabIndex = 22;
+            this.button_CDL_ReadUser2.Text = "查询自定义2";
+            this.button_CDL_ReadUser2.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadUser2.Click += new System.EventHandler(this.button_CDL_ReadUser2_Click);
+            // 
+            // button_CDL_Write_User1
+            // 
+            this.button_CDL_Write_User1.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_Write_User1.Location = new System.Drawing.Point(6, 218);
+            this.button_CDL_Write_User1.Name = "button_CDL_Write_User1";
+            this.button_CDL_Write_User1.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_Write_User1.TabIndex = 21;
+            this.button_CDL_Write_User1.Text = "写入自定义1";
+            this.button_CDL_Write_User1.UseVisualStyleBackColor = true;
+            this.button_CDL_Write_User1.Click += new System.EventHandler(this.button_CDL_Write_User1_Click);
+            // 
+            // button_CDL_ReadUser1
+            // 
+            this.button_CDL_ReadUser1.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadUser1.Location = new System.Drawing.Point(132, 182);
+            this.button_CDL_ReadUser1.Name = "button_CDL_ReadUser1";
+            this.button_CDL_ReadUser1.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadUser1.TabIndex = 20;
+            this.button_CDL_ReadUser1.Text = "查询自定义1";
+            this.button_CDL_ReadUser1.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadUser1.Click += new System.EventHandler(this.button_CDL_ReadUser1_Click);
+            // 
+            // button_CDL_ReadHistory
+            // 
+            this.button_CDL_ReadHistory.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadHistory.Location = new System.Drawing.Point(6, 182);
+            this.button_CDL_ReadHistory.Name = "button_CDL_ReadHistory";
+            this.button_CDL_ReadHistory.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadHistory.TabIndex = 19;
+            this.button_CDL_ReadHistory.Text = "查询历史信息";
+            this.button_CDL_ReadHistory.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadHistory.Click += new System.EventHandler(this.button_CDL_ReadHistory_Click);
+            // 
+            // button_CDL_ReadFac
+            // 
+            this.button_CDL_ReadFac.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadFac.Location = new System.Drawing.Point(132, 146);
+            this.button_CDL_ReadFac.Name = "button_CDL_ReadFac";
+            this.button_CDL_ReadFac.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadFac.TabIndex = 18;
+            this.button_CDL_ReadFac.Text = "查询生产信息";
+            this.button_CDL_ReadFac.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadFac.Click += new System.EventHandler(this.button_CDL_ReadFac_Click);
+            // 
+            // button_CDL_ReadDesign
+            // 
+            this.button_CDL_ReadDesign.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadDesign.Location = new System.Drawing.Point(6, 146);
+            this.button_CDL_ReadDesign.Name = "button_CDL_ReadDesign";
+            this.button_CDL_ReadDesign.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadDesign.TabIndex = 17;
+            this.button_CDL_ReadDesign.Text = "查询设计信息";
+            this.button_CDL_ReadDesign.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadDesign.Click += new System.EventHandler(this.button_CDL_ReadDesign_Click);
+            // 
+            // button_CDL_ReadCell
+            // 
+            this.button_CDL_ReadCell.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadCell.Location = new System.Drawing.Point(132, 110);
+            this.button_CDL_ReadCell.Name = "button_CDL_ReadCell";
+            this.button_CDL_ReadCell.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadCell.TabIndex = 16;
+            this.button_CDL_ReadCell.Text = "查询电芯电压";
+            this.button_CDL_ReadCell.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadCell.Click += new System.EventHandler(this.button_CDL_ReadCell_Click);
+            // 
+            // button_CDL_ReadRunInfo
+            // 
+            this.button_CDL_ReadRunInfo.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadRunInfo.Location = new System.Drawing.Point(6, 110);
+            this.button_CDL_ReadRunInfo.Name = "button_CDL_ReadRunInfo";
+            this.button_CDL_ReadRunInfo.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadRunInfo.TabIndex = 15;
+            this.button_CDL_ReadRunInfo.Text = "查询运行信息";
+            this.button_CDL_ReadRunInfo.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadRunInfo.Click += new System.EventHandler(this.button_CDL_ReadRunInfo_Click);
+            // 
+            // button_CDL_ReadVer
+            // 
+            this.button_CDL_ReadVer.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadVer.Location = new System.Drawing.Point(132, 74);
+            this.button_CDL_ReadVer.Name = "button_CDL_ReadVer";
+            this.button_CDL_ReadVer.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadVer.TabIndex = 14;
+            this.button_CDL_ReadVer.Text = "查询版本信息";
+            this.button_CDL_ReadVer.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadVer.Click += new System.EventHandler(this.button_CDL_ReadVer_Click);
+            // 
+            // button_CDL_WriteCheckNum
+            // 
+            this.button_CDL_WriteCheckNum.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_WriteCheckNum.Location = new System.Drawing.Point(6, 74);
+            this.button_CDL_WriteCheckNum.Name = "button_CDL_WriteCheckNum";
+            this.button_CDL_WriteCheckNum.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_WriteCheckNum.TabIndex = 13;
+            this.button_CDL_WriteCheckNum.Text = "写入校验码";
+            this.button_CDL_WriteCheckNum.UseVisualStyleBackColor = true;
+            this.button_CDL_WriteCheckNum.Click += new System.EventHandler(this.button_CDL_WriteCheckNum_Click);
+            // 
+            // button_CDL_ReadCheckNum
+            // 
+            this.button_CDL_ReadCheckNum.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadCheckNum.Location = new System.Drawing.Point(132, 38);
+            this.button_CDL_ReadCheckNum.Name = "button_CDL_ReadCheckNum";
+            this.button_CDL_ReadCheckNum.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadCheckNum.TabIndex = 12;
+            this.button_CDL_ReadCheckNum.Text = "查询校验码";
+            this.button_CDL_ReadCheckNum.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadCheckNum.Click += new System.EventHandler(this.button_CDL_ReadCheckNum_Click);
+            // 
+            // button_CDL_ReadID
+            // 
+            this.button_CDL_ReadID.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+            this.button_CDL_ReadID.Location = new System.Drawing.Point(6, 38);
+            this.button_CDL_ReadID.Name = "button_CDL_ReadID";
+            this.button_CDL_ReadID.Size = new System.Drawing.Size(120, 30);
+            this.button_CDL_ReadID.TabIndex = 11;
+            this.button_CDL_ReadID.Text = "查询物理ID";
+            this.button_CDL_ReadID.UseVisualStyleBackColor = true;
+            this.button_CDL_ReadID.Click += new System.EventHandler(this.button_CDL_ReadID_Click);
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(6, 18);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(0, 20);
+            this.label4.TabIndex = 2;
+            // 
+            // groupBox7
+            // 
+            this.groupBox7.Controls.Add(this.richTextBox_Rev);
+            this.groupBox7.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.groupBox7.Location = new System.Drawing.Point(238, 12);
+            this.groupBox7.Name = "groupBox7";
+            this.groupBox7.Size = new System.Drawing.Size(456, 135);
+            this.groupBox7.TabIndex = 7;
+            this.groupBox7.TabStop = false;
+            this.groupBox7.Text = "接收数据";
+            // 
+            // richTextBox_Rev
+            // 
+            this.richTextBox_Rev.Location = new System.Drawing.Point(10, 28);
+            this.richTextBox_Rev.Name = "richTextBox_Rev";
+            this.richTextBox_Rev.ReadOnly = true;
+            this.richTextBox_Rev.Size = new System.Drawing.Size(433, 87);
+            this.richTextBox_Rev.TabIndex = 5;
+            this.richTextBox_Rev.Text = "";
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.ClientSize = new System.Drawing.Size(964, 596);
+            this.Controls.Add(this.groupBox7);
+            this.Controls.Add(this.groupBox6);
+            this.Controls.Add(this.groupBox5);
+            this.Controls.Add(this.groupBox4);
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MaximizeBox = false;
+            this.Name = "Form1";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "MOTINOVA_BMS_Test";
+            this.Load += new System.EventHandler(this.Form1_Load);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox3.PerformLayout();
+            this.groupBox4.ResumeLayout(false);
+            this.groupBox4.PerformLayout();
+            this.groupBox5.ResumeLayout(false);
+            this.groupBox6.ResumeLayout(false);
+            this.groupBox6.PerformLayout();
+            this.groupBox7.ResumeLayout(false);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.ComboBox comboBox_Baudrate;
+        private System.Windows.Forms.ComboBox comboBox_ComIndex;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Button button_ComOpen;
+        private System.IO.Ports.SerialPort serialPort1;
+        private System.Windows.Forms.Timer timer1;
+        private System.Windows.Forms.Label label58;
+        private System.Windows.Forms.TextBox textBox_RevCnt;
+        private System.Windows.Forms.Button button_RefreshPort;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.Button button_MC_ReadDesignInfo;
+        private System.Windows.Forms.Button button_MC_ReadCheckNum;
+        private System.Windows.Forms.Button button_MC_ReadID;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.Button button_OBC_ReadRunInfo;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.GroupBox groupBox4;
+        private System.Windows.Forms.Button button_HMI_ReadDesignInfo;
+        private System.Windows.Forms.Button button_HMI_ReadVerInfo;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.RichTextBox richTextBox_Data;
+        private System.Windows.Forms.GroupBox groupBox5;
+        private System.Windows.Forms.GroupBox groupBox6;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.GroupBox groupBox7;
+        private System.Windows.Forms.RichTextBox richTextBox_Rev;
+        private System.Windows.Forms.Button button_MC_Check;
+        private System.Windows.Forms.Button button_MC_Ready;
+        private System.Windows.Forms.Button button_OBC_ReadVer;
+        private System.Windows.Forms.Button button_OBC_Ready;
+        private System.Windows.Forms.Button button_OBC_ReadCell;
+        private System.Windows.Forms.Button button_OBC_ReadDesign;
+        private System.Windows.Forms.Button button_HMI_ReadCell;
+        private System.Windows.Forms.Button button_HMI_Ready;
+        private System.Windows.Forms.Button button_CDL_ReadCheckNum;
+        private System.Windows.Forms.Button button_CDL_ReadID;
+        private System.Windows.Forms.Button button_CDL_ReadLog;
+        private System.Windows.Forms.Button button_CDL_Reset;
+        private System.Windows.Forms.Button button_CDL_WriteSN;
+        private System.Windows.Forms.Button button_CDL_WriteModel;
+        private System.Windows.Forms.Button button_CDL_WriteFac;
+        private System.Windows.Forms.Button button_CDL_Write_User3;
+        private System.Windows.Forms.Button button_CDL_ReadUser3;
+        private System.Windows.Forms.Button button_CDL_Write_User2;
+        private System.Windows.Forms.Button button_CDL_ReadUser2;
+        private System.Windows.Forms.Button button_CDL_Write_User1;
+        private System.Windows.Forms.Button button_CDL_ReadUser1;
+        private System.Windows.Forms.Button button_CDL_ReadHistory;
+        private System.Windows.Forms.Button button_CDL_ReadFac;
+        private System.Windows.Forms.Button button_CDL_ReadDesign;
+        private System.Windows.Forms.Button button_CDL_ReadCell;
+        private System.Windows.Forms.Button button_CDL_ReadRunInfo;
+        private System.Windows.Forms.Button button_CDL_ReadVer;
+        private System.Windows.Forms.Button button_CDL_WriteCheckNum;
+        private System.Windows.Forms.TextBox textBox_SendData;
+    }
+}
+

+ 1349 - 0
MOTINOVA_MC_Test/Form1.cs

@@ -0,0 +1,1349 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.IO.Ports;
+
+namespace MOTINOVA_MC_Test
+{
+    public partial class Form1 : Form
+    {
+        #region------------------------本地变量-----------------------------
+
+        #region 串口相关
+
+        private List<byte> buffer = new List<byte>(4096);
+
+        private byte[] binary_data_1 = new byte[128];
+
+        private bool Listening = false;// 侦听串口是否是接收数据标志位
+
+        public static string m_strDataBits = "8";
+        public static string m_strStopBits = "1";
+        public static string m_strCheckBits = "None";
+
+        public static bool g_blnIsOpen = false;
+
+        #endregion
+
+
+        #endregion
+        public Form1()
+        {
+            InitializeComponent();
+        }
+
+        #region 打开或关闭串口
+        private void button_ComOpen_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                if (!serialPort1.IsOpen)
+                {
+                    serialPort1.PortName = comboBox_ComIndex.Text;
+                    serialPort1.BaudRate = int.Parse(comboBox_Baudrate.Text);
+                    serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), m_strCheckBits);
+                    serialPort1.DataBits = Int32.Parse(m_strDataBits);
+                    serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), (m_strStopBits == "1.5") ? "3" : m_strStopBits);
+                    serialPort1.Open();
+                    comboBox_ComIndex.Enabled = false;
+                    comboBox_Baudrate.Enabled = false;
+                    button_ComOpen.Text = "断开";
+                    g_blnIsOpen = true;
+                    timer1.Enabled = true;
+                    button_RefreshPort.Enabled = false;
+                }
+                else
+                {
+                    while (Listening) Application.DoEvents();
+                    //打开时点击,则关闭串口
+                    serialPort1.Close();
+                    comboBox_ComIndex.Enabled = true;
+                    comboBox_Baudrate.Enabled = true;
+                    button_ComOpen.Text = "连接";
+                    g_blnIsOpen = false;
+                    timer1.Enabled = false;
+                    button_RefreshPort.Enabled = true;
+                }
+            }
+            catch (System.Exception ex)
+            {
+                MessageBox.Show(ex.Message);
+                return;
+            }
+        }
+        #endregion
+
+        private void Form1_Load(object sender, EventArgs e)
+        {
+            string[] ports = SerialPort.GetPortNames();
+            Array.Sort(ports);
+            comboBox_ComIndex.Items.AddRange(ports);
+            comboBox_ComIndex.SelectedIndex = comboBox_ComIndex.Items.Count > 0 ? 0 : -1;
+            comboBox_Baudrate.SelectedIndex = comboBox_Baudrate.Items.IndexOf("115200");
+      
+        }
+
+        #region CRC校验
+        static UInt32[] crc32_table = new UInt32[256]
+        {
+            0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, 0x130476DC, 0x17C56B6B,
+            0x1A864DB2, 0x1E475005, 0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61,
+            0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD, 0x4C11DB70, 0x48D0C6C7,
+            0x4593E01E, 0x4152FDA9, 0x5F15ADAC, 0x5BD4B01B, 0x569796C2, 0x52568B75,
+            0x6A1936C8, 0x6ED82B7F, 0x639B0DA6, 0x675A1011, 0x791D4014, 0x7DDC5DA3,
+            0x709F7B7A, 0x745E66CD, 0x9823B6E0, 0x9CE2AB57, 0x91A18D8E, 0x95609039,
+            0x8B27C03C, 0x8FE6DD8B, 0x82A5FB52, 0x8664E6E5, 0xBE2B5B58, 0xBAEA46EF,
+            0xB7A96036, 0xB3687D81, 0xAD2F2D84, 0xA9EE3033, 0xA4AD16EA, 0xA06C0B5D,
+            0xD4326D90, 0xD0F37027, 0xDDB056FE, 0xD9714B49, 0xC7361B4C, 0xC3F706FB,
+            0xCEB42022, 0xCA753D95, 0xF23A8028, 0xF6FB9D9F, 0xFBB8BB46, 0xFF79A6F1,
+            0xE13EF6F4, 0xE5FFEB43, 0xE8BCCD9A, 0xEC7DD02D, 0x34867077, 0x30476DC0,
+            0x3D044B19, 0x39C556AE, 0x278206AB, 0x23431B1C, 0x2E003DC5, 0x2AC12072,
+            0x128E9DCF, 0x164F8078, 0x1B0CA6A1, 0x1FCDBB16, 0x018AEB13, 0x054BF6A4,
+            0x0808D07D, 0x0CC9CDCA, 0x7897AB07, 0x7C56B6B0, 0x71159069, 0x75D48DDE,
+            0x6B93DDDB, 0x6F52C06C, 0x6211E6B5, 0x66D0FB02, 0x5E9F46BF, 0x5A5E5B08,
+            0x571D7DD1, 0x53DC6066, 0x4D9B3063, 0x495A2DD4, 0x44190B0D, 0x40D816BA,
+            0xACA5C697, 0xA864DB20, 0xA527FDF9, 0xA1E6E04E, 0xBFA1B04B, 0xBB60ADFC,
+            0xB6238B25, 0xB2E29692, 0x8AAD2B2F, 0x8E6C3698, 0x832F1041, 0x87EE0DF6,
+            0x99A95DF3, 0x9D684044, 0x902B669D, 0x94EA7B2A, 0xE0B41DE7, 0xE4750050,
+            0xE9362689, 0xEDF73B3E, 0xF3B06B3B, 0xF771768C, 0xFA325055, 0xFEF34DE2,
+            0xC6BCF05F, 0xC27DEDE8, 0xCF3ECB31, 0xCBFFD686, 0xD5B88683, 0xD1799B34,
+            0xDC3ABDED, 0xD8FBA05A, 0x690CE0EE, 0x6DCDFD59, 0x608EDB80, 0x644FC637,
+            0x7A089632, 0x7EC98B85, 0x738AAD5C, 0x774BB0EB, 0x4F040D56, 0x4BC510E1,
+            0x46863638, 0x42472B8F, 0x5C007B8A, 0x58C1663D, 0x558240E4, 0x51435D53,
+            0x251D3B9E, 0x21DC2629, 0x2C9F00F0, 0x285E1D47, 0x36194D42, 0x32D850F5,
+            0x3F9B762C, 0x3B5A6B9B, 0x0315D626, 0x07D4CB91, 0x0A97ED48, 0x0E56F0FF,
+            0x1011A0FA, 0x14D0BD4D, 0x19939B94, 0x1D528623, 0xF12F560E, 0xF5EE4BB9,
+            0xF8AD6D60, 0xFC6C70D7, 0xE22B20D2, 0xE6EA3D65, 0xEBA91BBC, 0xEF68060B,
+            0xD727BBB6, 0xD3E6A601, 0xDEA580D8, 0xDA649D6F, 0xC423CD6A, 0xC0E2D0DD,
+            0xCDA1F604, 0xC960EBB3, 0xBD3E8D7E, 0xB9FF90C9, 0xB4BCB610, 0xB07DABA7,
+            0xAE3AFBA2, 0xAAFBE615, 0xA7B8C0CC, 0xA379DD7B, 0x9B3660C6, 0x9FF77D71,
+            0x92B45BA8, 0x9675461F, 0x8832161A, 0x8CF30BAD, 0x81B02D74, 0x857130C3,
+            0x5D8A9099, 0x594B8D2E, 0x5408ABF7, 0x50C9B640, 0x4E8EE645, 0x4A4FFBF2,
+            0x470CDD2B, 0x43CDC09C, 0x7B827D21, 0x7F436096, 0x7200464F, 0x76C15BF8,
+            0x68860BFD, 0x6C47164A, 0x61043093, 0x65C52D24, 0x119B4BE9, 0x155A565E,
+            0x18197087, 0x1CD86D30, 0x029F3D35, 0x065E2082, 0x0B1D065B, 0x0FDC1BEC,
+            0x3793A651, 0x3352BBE6, 0x3E119D3F, 0x3AD08088, 0x2497D08D, 0x2056CD3A,
+            0x2D15EBE3, 0x29D4F654, 0xC5A92679, 0xC1683BCE, 0xCC2B1D17, 0xC8EA00A0,
+            0xD6AD50A5, 0xD26C4D12, 0xDF2F6BCB, 0xDBEE767C, 0xE3A1CBC1, 0xE760D676,
+            0xEA23F0AF, 0xEEE2ED18, 0xF0A5BD1D, 0xF464A0AA, 0xF9278673, 0xFDE69BC4,
+            0x89B8FD09, 0x8D79E0BE, 0x803AC667, 0x84FBDBD0, 0x9ABC8BD5, 0x9E7D9662,
+            0x933EB0BB, 0x97FFAD0C, 0xAFB010B1, 0xAB710D06, 0xA6322BDF, 0xA2F33668,
+            0xBCB4666D, 0xB8757BDA, 0xB5365D03, 0xB1F740B4
+        };
+
+        static UInt32 crc32_cal(byte[] pData, UInt16 Length)
+        {
+            UInt32 nReg;
+            UInt32 nTemp = 0;
+            UInt16 i, n;
+
+            nReg = 0xFFFFFFFF;
+            for (n = 0; n < Length; n++)
+            {
+                nReg ^= (UInt32)pData[n];
+                for (i = 0; i < 4; i++)
+                {
+                    nTemp = crc32_table[((nReg >> 24) & 0xFF)];
+                    nReg <<= 8;
+                    nReg ^= nTemp;
+                }
+            }
+            return nReg;
+        }
+        #endregion
+
+
+        #region 发送指令函数
+        private void SendCmd(ushort ID, byte Mode, ushort Cmd, byte[] Data)
+        {
+            if (!serialPort1.IsOpen)
+            {
+                MessageBox.Show("串口未连接");
+                return;
+            }
+
+            ushort DataLength = (ushort)(Cmd & 0xFF);
+
+            var SendCmdTmp = new byte[DataLength + 13];
+
+            //帧头
+            SendCmdTmp[0] = 0x55;
+            SendCmdTmp[1] = 0xAA;
+            //ID
+            SendCmdTmp[2] = (byte)(ID >> 8);
+            SendCmdTmp[3] = (byte)(ID & 0xFF);
+            //MODE
+            SendCmdTmp[4] = Mode;
+            //长度
+            SendCmdTmp[5] = (byte)((Cmd & 0xFF) + 2);
+            //命令字
+            SendCmdTmp[6] = (byte)(Cmd >> 8);
+            SendCmdTmp[7] = (byte)(Cmd & 0xFF);
+            //数据段
+            for (UInt16 i = 0; i < (Cmd & 0xFF); i++)
+            {
+                SendCmdTmp[8 + i] = Data[i];
+            }
+            //校验
+            UInt32 CRC_Result = crc32_cal(SendCmdTmp, (ushort)(DataLength + 8));
+            SendCmdTmp[DataLength + 8] = Convert.ToByte(CRC_Result >> 24);
+            SendCmdTmp[DataLength + 9] = Convert.ToByte((CRC_Result >> 16) % 256);
+            SendCmdTmp[DataLength + 10] = Convert.ToByte((CRC_Result >> 8) % 256);
+            SendCmdTmp[DataLength + 11] = Convert.ToByte(CRC_Result % 256);
+            //帧尾
+            SendCmdTmp[DataLength + 12] = 0xF0;
+
+            //发送数据
+            serialPort1.Write(SendCmdTmp, 0, SendCmdTmp.Length);
+
+        }
+        #endregion
+
+        //串口数据接收
+        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
+        {
+            try
+            {
+                Listening = true;
+
+                int n = serialPort1.BytesToRead;
+                byte[] buf = new byte[n];//将一次串口事件中接收到的数据暂存于buf中(注:对于超过8个字节的数据,C#的
+                //串口接收事件将按每次处理8个字节的方式多次处理
+                serialPort1.Read(buf, 0, n);//将接收到的数据读入buf
+
+                this.Invoke((EventHandler)delegate
+                {
+
+                });
+
+                buffer.AddRange(buf);//将读取的数据放入buffer中
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message);
+                return;
+            }
+            finally
+            {
+                Listening = false;
+            }
+        }
+
+        //接收计数清零
+        private void label58_Click(object sender, EventArgs e)
+        {
+            textBox_RevCnt.Text = "0";
+        }
+
+        //端口刷新
+        private void button_RefreshPort_Click(object sender, EventArgs e)
+        {
+            string[] ports = SerialPort.GetPortNames();
+            Array.Sort(ports);
+            comboBox_ComIndex.Items.Clear();
+            comboBox_ComIndex.Items.AddRange(ports);
+            comboBox_ComIndex.SelectedIndex = comboBox_ComIndex.Items.Count > 0 ? 0 : -1;
+        }
+
+        //time1定时任务
+        private void timer1_Tick(object sender, EventArgs e)
+        {
+            
+
+            //...
+            
+            //串口解析
+            byte DataNum = 0;   //记录每条命令数据段的长度
+            while (buffer.Count >= 13)//当buffer中的数据的个数大于等于4个时,即每一帧的数据长度所在位(第4位)出现时
+            {
+                if (buffer[0] == 0x55 && buffer[1] == 0xAA)//判断帧头
+                {
+                    int CmdLen = buffer[5];
+                    if (buffer.Count < CmdLen + 11) break;//如果接收到的数据没有达到一帧数据的指定长度, 则执行下次循环
+
+                    buffer.RemoveRange(0, 6);//数据达到要求长度后删去帧头,ID,模式,和命令长度
+                    while (CmdLen > 0)          //读取命令段
+                    {
+                        DataNum = (byte)(buffer[1]);//命令字的第二个字节的表示数据位的长度
+                        if (DataNum <= (CmdLen - 2))
+                        {
+                            for (int i = 0; i < DataNum + 2; i++)
+                            {
+                                binary_data_1[i] = buffer[i];
+                            }
+                            DataCmdProcess();//对于不同的命令段,做不同的处理                          
+                            buffer.RemoveRange(0, DataNum + 2);//移除处理过的命令段与数据段
+                            CmdLen -= (DataNum + 2);
+                            if (CmdLen < 2)
+                            {
+                                buffer.RemoveRange(0, CmdLen + 2);
+                                return;
+                            }
+                        }
+                        else
+                        {
+                            buffer.RemoveRange(0, CmdLen + 11);
+                        }
+
+                    }
+                }
+                else
+                {
+                    buffer.RemoveAt(0);//帧头不对,删除帧头高字节
+                }
+            }            
+        }
+
+        #region 字符串转换为字节流
+        public static byte[] HexStringToBytes(string hexStr, bool Flag_Space)
+        {
+            if (string.IsNullOrEmpty(hexStr))
+            {
+                return new byte[0];
+            }
+            if (hexStr.StartsWith("0x"))
+            {
+                hexStr = hexStr.Remove(0, 2);
+            }
+
+            var count = hexStr.Length;
+            var byteCount = 0;
+            if (Flag_Space == true)//相邻字节含空格
+            {
+                if ((count % 3) == 0)//最后字节含空格
+                {
+                    byteCount = count / 3;
+                }
+                else if ((count % 3) == 2)//最后字节不含空格
+                {
+                    byteCount = (count + 1) / 3;
+                }
+                else//数据无效
+                {
+                    MessageBox.Show("相邻字节请插入空格!", "提示");
+                }
+                var result = new byte[byteCount];
+                for (int ii = 0; ii < byteCount; ++ii)
+                {
+                    var tempBytes = Byte.Parse(hexStr.Substring(3 * ii, 2), System.Globalization.NumberStyles.HexNumber);
+                    result[ii] = tempBytes;
+                }
+                return result;
+            }
+            else if (Flag_Space == false)//相邻字节不含空格
+            {
+                if (count % 2 == 1)
+                {
+                    MessageBox.Show("请删除相邻字节之间空格!", "提示");
+                }
+                byteCount = count / 2;
+                var result = new byte[byteCount];
+                for (int ii = 0; ii < byteCount; ++ii)
+                {
+                    var tempBytes = Byte.Parse(hexStr.Substring(2 * ii, 2), System.Globalization.NumberStyles.HexNumber);
+                    result[ii] = tempBytes;
+                }
+                return result;
+            }
+            else
+            {
+                return new byte[0];
+            }
+        }
+        #endregion
+
+        #region 命令段处理函数
+        private void DataCmdProcess()
+        {
+            ushort CmdTemp = (ushort)(binary_data_1[0] * 256 + binary_data_1[1]);
+            ushort DataTemp;
+            short Data_Temp_Int;
+            sbyte Data_Int8;
+            UInt32 DataTemp32;
+            textBox_RevCnt.Text = Convert.ToString(Convert.ToInt16(textBox_RevCnt.Text) + 1);
+            richTextBox_Rev.Text = "";
+            richTextBox_Data.Text = "";
+            //显示接收的数据
+            richTextBox_Rev.Text += "CMD: " + Convert.ToString(binary_data_1[0], 16).PadLeft(2, '0').ToUpper() + " " + Convert.ToString(binary_data_1[1], 16).PadLeft(2, '0').ToUpper() + "\r\n";
+            richTextBox_Rev.Text += "DATA: ";
+            for (int i = 0; i < binary_data_1[1]; i++)
+            {
+                richTextBox_Rev.Text += Convert.ToString(binary_data_1[2 + i], 16).PadLeft(2, '0').ToUpper() + " ";
+            }
+            //数据解析
+            switch (CmdTemp)
+            {
+                case 0x1010://BMS运行信息
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                DataTemp = (ushort)(binary_data_1[3] * 256 + binary_data_1[2]);//电压
+                                richTextBox_Data.Text = "母线电压: " + DataTemp.ToString() + " mV\r\n";
+                                Data_Temp_Int = (short)(binary_data_1[5] * 256 + binary_data_1[4]);//电流
+                                richTextBox_Data.Text += "母线电流: " +  Data_Temp_Int.ToString() + " mA\r\n";
+                                DataTemp = (ushort)(binary_data_1[7] * 256 + binary_data_1[6]);//剩余容量
+                                richTextBox_Data.Text += "剩余容量: " + DataTemp.ToString() + " mAh\r\n";
+                                DataTemp = (ushort)(binary_data_1[9] * 256 + binary_data_1[8]);//满充容量
+                                richTextBox_Data.Text += "满充容量: " + DataTemp.ToString() + " mAh\r\n";
+                                Data_Temp_Int = (short)binary_data_1[10];//电芯温度
+                                richTextBox_Data.Text += "电芯温度: " + (Data_Temp_Int - 40).ToString() + " Degree C\r\n";
+                                DataTemp = (ushort)binary_data_1[11];//剩余电量
+                                richTextBox_Data.Text += "剩余电量: " +  DataTemp.ToString() + " %\r\n";
+                                DataTemp = (ushort)binary_data_1[12];//运行状态
+                                richTextBox_Data.Text += "运行状态: " + "0x" + Convert.ToString(DataTemp, 16).PadLeft(2, '0').ToUpper() + "\r\n";
+                                DataTemp = (ushort)binary_data_1[13];//SOH
+                                richTextBox_Data.Text += "剩余寿命: " + DataTemp.ToString() + " %\r\n";
+                            }));
+                        }
+                        break;
+                    }
+                case 0x1120://BMS电芯电压
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                for (int i = 0; i < 16; i++)
+                                {
+                                    DataTemp = (ushort)(binary_data_1[3 + i * 2] * 256 + binary_data_1[2 + i * 2]);//电压
+                                    if (DataTemp == 0)
+                                        break;
+                                    richTextBox_Data.Text += "电芯" + (i + 1).ToString() + ": " + DataTemp.ToString() + " mV\r\n";
+                                }
+                            }));
+                        }
+                        break;
+                    }
+                case 0x1204://故障码
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                
+                            }));
+                        }
+                        break;
+                    }
+                case 0x1308://关机指令
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "接收数据:";
+                                for (int i = 0; i < 8; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[2 + i])).ToString();                                
+                            }));
+                        }
+                        break;
+                    }
+                case 0x1410://BMS设计信息
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                DataTemp = (ushort)(binary_data_1[3] * 256 + binary_data_1[2]);
+                                richTextBox_Data.Text = "设计容量: " + DataTemp.ToString() + " mAh\r\n";
+                                DataTemp = (ushort)binary_data_1[4];
+                                richTextBox_Data.Text += "设计电压: " + DataTemp.ToString() + " V\r\n";
+                                richTextBox_Data.Text += "电芯型号: ";
+                                for (ushort i = 0; i < 8; i++)
+                                {
+                                    richTextBox_Data.Text += ((char)binary_data_1[5 + i]).ToString();
+                                }
+                                richTextBox_Data.Text += "\r\n";
+                            }));
+                        }
+                        break;
+                    }
+                case 0x1540://BMS版本信息
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                //型号
+                                richTextBox_Data.Text += "型号: ";
+                                for (ushort i = 0; i < 16; i++)
+                                {
+                                    richTextBox_Data.Text += ((char)binary_data_1[2 + i]).ToString();
+                                }
+                                richTextBox_Data.Text += "\r\n";
+                                //SN
+                                richTextBox_Data.Text += "序列号: ";
+                                for (ushort i = 0; i < 16; i++)
+                                {
+                                    richTextBox_Data.Text += ((char)binary_data_1[18 + i]).ToString();
+                                }
+                                richTextBox_Data.Text += "\r\n";
+                                //HW
+                                richTextBox_Data.Text += "硬件版本: ";
+                                for (ushort i = 0; i < 16; i++)
+                                {
+                                    richTextBox_Data.Text += ((char)binary_data_1[34 + i]).ToString();
+                                }
+                                richTextBox_Data.Text += "\r\n";
+                                //FW
+                                richTextBox_Data.Text += "软件版本: ";
+                                for (ushort i = 0; i < 16; i++)
+                                {
+                                    richTextBox_Data.Text += ((char)binary_data_1[50 + i]).ToString();
+                                }
+                                richTextBox_Data.Text += "\r\n";
+                            }));
+                        }
+                        break;
+                    }
+                case 0x160C://BMS物理ID
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "物理ID: ";
+                                richTextBox_Data.Text += "0x";
+                                for (ushort i = 0; i < 12; i++)
+                                {
+                                    richTextBox_Data.Text += Convert.ToString(binary_data_1[2 + i], 16).PadLeft(2, '0').ToUpper();
+                                }
+                                richTextBox_Data.Text += "\r\n";
+                            }));
+                        }
+                        break;
+                    }
+                case 0x170C://BMS校验码
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "校验码: ";
+                                richTextBox_Data.Text += "0x";
+                                for (ushort i = 0; i < 12; i++)
+                                {
+                                    richTextBox_Data.Text += Convert.ToString(binary_data_1[2 + i], 16).PadLeft(2, '0').ToUpper();
+                                }
+                                richTextBox_Data.Text += "\r\n";
+                            }));
+                        }
+                        break;
+                    }
+                case 0x3005://MC在线反馈
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "接收数据:";
+                                for (int i = 0; i < 5; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[2 + i])).ToString();
+                            }));
+                        }
+                        break;
+                    }
+                case 0x5028://电池历史信息
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                Data_Int8 = (sbyte)(binary_data_1[2]);//电芯最高温
+                                richTextBox_Data.Text += "电芯最高温: " + (Data_Int8 - 40).ToString() + " ℃\r\n";
+                                Data_Int8 = (sbyte)(binary_data_1[3]);//电芯最低温
+                                richTextBox_Data.Text += "电芯最低温: " + (Data_Int8 - 40).ToString() + " ℃\r\n";
+                                DataTemp = (ushort)(binary_data_1[5] * 256 + binary_data_1[4]);//最大放电电流
+                                richTextBox_Data.Text += "最大放电电流: " + DataTemp.ToString() + " mA\r\n";
+                                DataTemp = (ushort)(binary_data_1[7] * 256 + binary_data_1[6]);//最大放电电流
+                                richTextBox_Data.Text += "最大充电电流: " + DataTemp.ToString() + " mA\r\n";
+                                DataTemp = (ushort)(binary_data_1[9] * 256 + binary_data_1[8]);//最大放电电流
+                                richTextBox_Data.Text += "循环次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[11] * 256 + binary_data_1[10]);//最近充电间隔
+                                richTextBox_Data.Text += "最近充电间隔时间: " + DataTemp.ToString() + " h\r\n";
+                                DataTemp = (ushort)(binary_data_1[13] * 256 + binary_data_1[12]);//最大充电间隔
+                                richTextBox_Data.Text += "最大充电间隔时间: " + DataTemp.ToString() + " h\r\n";
+                                DataTemp = (ushort)(binary_data_1[15] * 256 + binary_data_1[14]);//充电过流保护次数
+                                richTextBox_Data.Text += "充电过流保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[17] * 256 + binary_data_1[16]);//放电过流保护次数
+                                richTextBox_Data.Text += "放电过流保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[19] * 256 + binary_data_1[18]);//过充保护次数
+                                richTextBox_Data.Text += "过充保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[21] * 256 + binary_data_1[20]);//过放保护次数
+                                richTextBox_Data.Text += "过放保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[23] * 256 + binary_data_1[22]);//短路保护次数
+                                richTextBox_Data.Text += "短路保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[25] * 256 + binary_data_1[24]);//充电低温保护次数
+                                richTextBox_Data.Text += "充电低温保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[27] * 256 + binary_data_1[26]);//充电高温保护次数
+                                richTextBox_Data.Text += "充电高温保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[29] * 256 + binary_data_1[28]);//放电低温保护次数
+                                richTextBox_Data.Text += "放电低温保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp = (ushort)(binary_data_1[31] * 256 + binary_data_1[30]);//放电高温保护次数
+                                richTextBox_Data.Text += "放电高温保护次数: " + DataTemp.ToString() + " 次\r\n";
+                                DataTemp32 = (UInt32)((binary_data_1[35] << 24) + (binary_data_1[34]) << 16 + binary_data_1[33] * 256 + binary_data_1[32]);//运行时间
+                                richTextBox_Data.Text += "运行时间: " + DataTemp32.ToString() + " min\r\n";
+                                DataTemp = (ushort)(binary_data_1[36]);//SOH
+                                richTextBox_Data.Text += "剩余寿命: " + DataTemp.ToString() + " %\r\n";
+                            }));
+                        }
+                        break;
+                    }
+                case 0x5120://电池生产信息
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "生产商:";
+                                for (int i = 0; i < 8; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[2 + i])).ToString();
+                                richTextBox_Data.Text += "\r\n";
+                                richTextBox_Data.Text += "生产地:";
+                                for (int i = 0; i < 8; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[10 + i])).ToString();
+                                richTextBox_Data.Text += "\r\n";
+                                richTextBox_Data.Text += "生产日期:";
+                                for (int i = 0; i < 8; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[18 + i])).ToString();
+
+                            }));
+                        }
+                        break;
+                    }
+                case 0x5210://自定义1
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "接收数据:";
+                                for (int i = 0; i < 16; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[2 + i])).ToString();
+                            }));
+                        }
+                        break;
+                    }
+                case 0x5310://自定义2
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "接收数据:";
+                                for (int i = 0; i < 16; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[2 + i])).ToString();
+                            }));
+                        }
+                        break;
+                    }
+                case 0x5410://自定义3
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "接收数据:";
+                                for (int i = 0; i < 16; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[2 + i])).ToString();
+                            }));
+                        }
+                        break;
+                    }
+                case 0x5503://反馈
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+                                richTextBox_Data.Text += "接收数据:";
+                                for (int i = 0; i < 3; i++)
+                                    richTextBox_Data.Text += ((char)(binary_data_1[2 + i])).ToString();
+                            }));
+                        }
+                        break;
+                    }
+                case 0x5688://日志
+                    {
+                        unchecked
+                        {
+                            this.Invoke((EventHandler)(delegate
+                            {
+
+
+                            }));
+                        }
+                        break;
+                    }
+                default: break;
+            }
+        }
+        #endregion
+
+        #region 模拟指令发送
+
+        #region MC模拟指令
+        /// <summary>
+        /// MC关机就绪
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_MC_Ready_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[5];
+
+            Code[0] = (byte)'R';
+            Code[1] = (byte)'E';
+            Code[2] = (byte)'A';
+            Code[3] = (byte)'D';
+            Code[4] = (byte)'Y';
+            SendCmd((ushort)0x710, (byte)0x0C, (ushort)0x1305, Code);
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// MC在线检测
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_MC_Check_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[9];
+
+            Code[0] = (byte)'H';
+            Code[1] = (byte)'A';
+            Code[2] = (byte)'N';
+            Code[3] = (byte)'D';
+            Code[4] = (byte)'S';
+            Code[5] = (byte)'H';
+            Code[6] = (byte)'K';
+            Code[7] = (byte)'A';
+            Code[8] = (byte)'E';
+
+            SendCmd((ushort)0x712, (byte)0x11, (ushort)0x3009, Code);
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// 查询物理ID
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_MC_ReadID_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x712, (byte)0x11, (ushort)0x3100, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// 查询校验码
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_MC_ReadCheckNum_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x712, (byte)0x11, (ushort)0x3200, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// 查询设计信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_MC_ReadDesignInfo_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x712, (byte)0x11, (ushort)0x3300, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+        #endregion
+
+        #region PBU/OBC模拟指令
+        /// <summary>
+        /// OBC关机就绪
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_OBC_Ready_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[5];
+
+            Code[0] = (byte)'R';
+            Code[1] = (byte)'E';
+            Code[2] = (byte)'A';
+            Code[3] = (byte)'D';
+            Code[4] = (byte)'Y';
+            SendCmd((ushort)0x730, (byte)0x0C, (ushort)0x1405, Code);
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// OBC查询BMS运行信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_OBC_ReadRunInfo_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x732, (byte)0x11, (ushort)0x5000, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// OBC查询BMS版本信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_OBC_ReadVer_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x732, (byte)0x11, (ushort)0x5100, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// OBC查询BMS设计信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_OBC_ReadDesign_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x732, (byte)0x11, (ushort)0x5200, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// OBC读取BMS电芯电压
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_OBC_ReadCell_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x732, (byte)0x11, (ushort)0x5300, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+        #endregion
+
+        #region HMI模拟指令
+        /// <summary>
+        /// HMI关机就绪
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_HMI_Ready_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[5];
+
+            Code[0] = (byte)'R';
+            Code[1] = (byte)'E';
+            Code[2] = (byte)'A';
+            Code[3] = (byte)'D';
+            Code[4] = (byte)'Y';
+            SendCmd((ushort)0x740, (byte)0x0C, (ushort)0x1305, Code);
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+        /// <summary>
+        /// HMI读取版本信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_HMI_ReadVerInfo_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x742, (byte)0x11, (ushort)0x5000, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// HMI读取设计信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_HMI_ReadDesignInfo_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x742, (byte)0x11, (ushort)0x5100, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// HMI读取电芯电压
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_HMI_ReadCell_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x742, (byte)0x11, (ushort)0x5200, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        #endregion
+
+        #region 模拟CDL发送指令
+        /// <summary>
+        /// CDL查询物理ID
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadID_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3000, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL查询校验码
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadCheckNum_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3100, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL写入校验码
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_WriteCheckNum_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[12];
+
+            if (HexStringToBytes(textBox_SendData.Text, true).Length !=12)
+            {
+                MessageBox.Show("Invalid length of bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            Code = HexStringToBytes(textBox_SendData.Text, true);
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x320C, Code);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取版本信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadVer_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3300, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取运行信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadRunInfo_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3400, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取电芯电压
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadCell_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3500, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取设计信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadDesign_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3600, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取生产信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadFac_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3700, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取历史信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadHistory_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3800, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取自定义信息1
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadUser1_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3900, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL写入自定义信息1
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_Write_User1_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[16];
+
+            if (textBox_SendData.Text.Length > 16)
+            {
+                MessageBox.Show("Length should be less 16 bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            for (ushort i = 0; i < textBox_SendData.Text.Length; i++)
+            {
+                Code[i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 16)
+            {
+                Code[textBox_SendData.Text.Length] = (byte)'.';
+                for (ushort i = 0; i < 16 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i] = 0x20;
+                }
+            }
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x3A10, Code);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL读取自定义信息2
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadUser2_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3B00, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL写入自定义信息2
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_Write_User2_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[16];
+
+            if (textBox_SendData.Text.Length > 16)
+            {
+                MessageBox.Show("Length should be less 16 bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            for (ushort i = 0; i < textBox_SendData.Text.Length; i++)
+            {
+                Code[i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 16)
+            {
+                Code[textBox_SendData.Text.Length] = (byte)'.';
+                for (ushort i = 0; i < 16 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i] = 0x20;
+                }
+            }
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x3C10, Code);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL查询自定义信息3
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadUser3_Click(object sender, EventArgs e)
+        {
+            SendCmd((ushort)0x752, (byte)0x11, (ushort)0x3D00, null);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL写入自定义信息3
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_Write_User3_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[16];
+
+            if (textBox_SendData.Text.Length > 16)
+            {
+                MessageBox.Show("Length should be less 16 bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            for (ushort i = 0; i < textBox_SendData.Text.Length; i++)
+            {
+                Code[i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 16)
+            {
+                Code[textBox_SendData.Text.Length] = (byte)'.';
+                for (ushort i = 0; i < 16 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i] = 0x20;
+                }
+            }
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x3E10, Code);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL写入生产信息
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_WriteFac_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[32];
+
+            if (textBox_SendData.Text.Length == 0)
+            {
+                MessageBox.Show("Invalid length of bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            //填入生产商
+            for (ushort i = 0; i < 8; i++)
+            {
+                Code[i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 8)
+            {
+                Code[textBox_SendData.Text.Length] = (byte)'.';
+                for (ushort i = 0; i < 8 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i] = 0x20;
+                }
+            }
+            //填入生产地
+            for (ushort i = 0; i < 8; i++)
+            {
+                Code[8 + i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 8)
+            {
+                Code[textBox_SendData.Text.Length + 8] = (byte)'.';
+                for (ushort i = 0; i < 8 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i + 8] = 0x20;
+                }
+            }
+            //填入生产日期
+            for (ushort i = 0; i < 8; i++)
+            {
+                Code[16 + i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 8)
+            {
+                Code[textBox_SendData.Text.Length + 16] = (byte)'.';
+                for (ushort i = 0; i < 8 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i + 16] = 0x20;
+                }
+            }
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x3F20, Code);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL写入型号
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_WriteModel_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[16];
+
+            if (textBox_SendData.Text.Length > 16)
+            {
+                MessageBox.Show("Length should be less 16 bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            for (ushort i = 0; i < textBox_SendData.Text.Length; i++)
+            {
+                Code[i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 16)
+            {
+                Code[textBox_SendData.Text.Length] = (byte)'.';
+                for (ushort i = 0; i < 16 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i] = 0x20;
+                }
+            }
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x4010, Code);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL写入SN
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_WriteSN_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[16];
+
+            if (textBox_SendData.Text.Length > 16)
+            {
+                MessageBox.Show("Length should be less 16 bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            for (ushort i = 0; i < textBox_SendData.Text.Length; i++)
+            {
+                Code[i] = (byte)textBox_SendData.Text[i];
+            }
+            if (textBox_SendData.Text.Length < 16)
+            {
+                Code[textBox_SendData.Text.Length] = (byte)'.';
+                for (ushort i = 0; i < 16 - textBox_SendData.Text.Length - 1; i++)
+                {
+                    Code[textBox_SendData.Text.Length + 1 + i] = 0x20;
+                }
+            }
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x4110, Code);
+
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// CDL发送复位
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_Reset_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[5];
+
+            Code[0] = (byte)'R';
+            Code[1] = (byte)'E';
+            Code[2] = (byte)'S';
+            Code[3] = (byte)'E';
+            Code[4] = (byte)'T';
+
+            SendCmd((ushort)0x752, (byte)0x16, (ushort)0x4205, Code);
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+
+        /// <summary>
+        /// 读取日志
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button_CDL_ReadLog_Click(object sender, EventArgs e)
+        {
+            var Code = new byte[8];
+            string AddBegin, AddEnd;
+            var CodeTemp = new byte[4];
+
+            if (textBox_SendData.Text.Length != 17)
+            {
+                MessageBox.Show("Length should be 17 bytes!", "Notice", MessageBoxButtons.OK);
+                return;
+            }
+            AddBegin = textBox_SendData.Text.Split(' ')[0];
+            AddEnd = textBox_SendData.Text.Split(' ')[1];
+
+            CodeTemp = HexStringToBytes(AddBegin, false);
+            for (int i = 0; i < 4; i++)
+                Code[i] = CodeTemp[3 - i];
+            CodeTemp = HexStringToBytes(AddEnd, false);
+            for (int i = 0; i < 4; i++)
+                Code[4 + i] = CodeTemp[3 - i];
+            SendCmd((ushort)0x712, (byte)0x11, (ushort)0x4308, Code);
+            richTextBox_Data.Text = "";
+            richTextBox_Rev.Text = "";
+        }
+    }
+
+
+    #endregion
+
+    #endregion
+
+
+}

+ 709 - 0
MOTINOVA_MC_Test/Form1.resx

@@ -0,0 +1,709 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="serialPort1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>131, 17</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>47</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
+        AAABAAUAQEAAAAAAAAAoQgAAVgAAABAQAAAAAAAAaAQAAH5CAAAYGAAAAAAAAIgJAADmRgAAICAAAAAA
+        AACoEAAAblAAADAwAAAAAAAAqCUAABZhAAAoAAAAQAAAAIAAAAABACAAAAAAAABCAAAAAAAAAAAAAAAA
+        AAAAAAAA////AP///wCrggAAq4IAAKuCAACrggAAq4IAAKuCAACrggAAq4EAAKuBAACrgwAAqIEAAKF5
+        AACfdAAAqoEAABgTAAAAAAAAAAAAAAAAAAEAAAADAAAABQAAAAYAAAAGAAAABgAAAAUAAAAEAAAAAwAA
+        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8Aq4IAAKuCAACrggAAq4IAAKuCAACrggAAq4IAAKuB
+        AACrgQAAq4MAAKiBAACheQAAn3QAAKqBAAAYEwAAAAAAAAAAAAEAAAADAAAACAAAAA0AAAARAAAAEwAA
+        ABMAAAAQAAAADAAAAAgAAAAFAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AKuCAACrggAAq4IAAKuC
+        AACrggAAq4IAAKuCAACrgQAAq4EAAKuDAACogQAAoXkAAJ90AACqgQAAHRcAAAAAAAAAAAADAAAACAAA
+        ABAAAAAZAAAAIQAAACUAAAAkAAAAIAAAABkAAAASAAAADAAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP//
+        /wCrggAAq4IAAKuCAACrggAAq4IAAKuCAACrggAAq4EAAKuBAACrgwAAqIEAAKB3AEeccQBusoYAVGpS
+        ACMAAAAFAwMAAAAAAAYAAAAVAAAAIgAAAC8AAAA1AAAANwAAADIAAAAqAAAAIgAAABkAAAASAAAADAAA
+        AAgAAAAFAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAP///wD///8Aq4IAAKuCAACrggAAq4IAAKuCAACrggAAq4IAAKuBAACrgQAAqYEABqiA
+        AH64kgDTtZIAzKiEAMWddgDEl3EAq3JVAHk1KAA/BwYDKAQECDIAAAEyAAAAPQAAAEcAAABHAAAAQAAA
+        ADYAAAAtAAAAIwAAABsAAAATAAAADAAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AKuCAACrggAAq4IAAKuCAACrggAAq4IAAKuC
+        AACrggAAqX8ADKuDAJbFnQDS3rcApeLINbnYx1ffzbY1zrueFsasigLYnXcC6YppDuF9YybNUkQrmRsZ
+        FWYAAAJPAAAAUQAAAFMAAABMAAAAQgAAADgAAAAuAAAAIgAAABgAAAARAAAACwAAAAYAAAAEAAAAAgAA
+        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wCrggAAq4IAAKuC
+        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
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8ArHgAAKp2AAC1gAB62p8Aye+zCJz61UKu/+BZwP/a
+        T77/2lC+/tlQvvrUTr/yzku/3LtI3c2vR+/EqEPltJw/5bKeS/SqlUn5n4lA+piBO/uTezf7kHcz/I91
+        MfyOdDD8jXQx/Ix2M/yMdzf8jHk5/I17O/yPfj78koJB/JaHQvycjEX8opNV/aeabP6sn33/r6F+/6aV
+        XvuTeiz3i2cM/XxXBO5EMAGuCgcAcgAAAFwAAABUAAAASAAAADoAAAAsAAAAIAAAABcAAAAOAAAACQAA
+        AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AK13AACrdgAGwYgAseOl
+        ALXzvRyg/eJbvf/aVcD/10++/9ZQvvrSTr/ux0rB2rhEyL6iQu2ulj/sn4Y16Jp6KO+hdSX8pWwW/aln
+        Df6tZQz/sGYM/7FmDv+yZg7/sWYO/7BmDv+uZAz/qmIL/6ViDP+fYQ/+m2IR/pZkFf6SZx3+kG0l/ZB0
+        Lv2RfDr9lIVP/paMZ/+akHX/nJBv/5KCTfuBaiD6flsI/mxLAuMyIwCgAwIAagAAAFkAAABPAAAAQgAA
+        ADQAAAAnAAAAHAAAABIAAAAKAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP//
+        /wCsdQAArHUAH82QAMjoqACo9805rf7nZ8X/1lG+/tRPvvrQTr/sxUrC17RExLmeP9eihDL1oHEb9K1q
+        Dvu/bRD/y3QY/9V8Jf/agy7/3YY0/9+JOP/gjDv/4o0+/+KNPv/hjD7/34w9/92JOv/ahjj/1YIy/9B8
+        K//IdSH/wG4a/7doE/+sYwv/ol8M/5lhDv6RZhv+jHA5/4h5Vv+JgGj/i4Fj/oN0QPt6YRj8e1cF/WJE
+        AdYkGQCOAQAAYAAAAFIAAABIAAAAOgAAACwAAAAgAAAAFAAAAAwAAAAGAAAAAgAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAP///wD///8At30AALd9AE/UlQDL7KwIovneV7z/5GfH/9FOvfvPTr/uxErB1LFFxbeU
+        Nc+sdxvwvG4Q/9B4Gv/ehCr/5Yw2/+uSPv/wl0T/85pK//adTv/3n1H/+KFT//qjVv/7pFb/+6VX//ul
+        Wf/7pFj/+aNX//ehVv/1oFX/8ZxT/+yYTv/mk0j/3otA/9WDNv/Jdyb/vGsY/61iC/+eXQz/kGIi/4du
+        RP+GfGP/iH5d/n9uNvt4XRL+eVQD9lY7AMIXEAB6AAAAVQAAAEoAAAA+AAAAMQAAACMAAAAYAAAADQAA
+        AAYAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AMaIAADGiABp2pcAyu6zF6P863HK/91ixfvL
+        TL7yxkzB3LZHwryOLNa+chH31nob/+WJLv/skTn/8ZZA//aaRv/7n0z//KNQ//6mVP//qln//6xc//+u
+        Xv//r2D//7Bi//+xY///smT//7Jl//+yZf//sWX//7Bk//+uY//+rGH//alf//qlW//2oVj/75tT/+aU
+        S//aiT//y3su/7lpFv+mXQn/lF4Z/4ZsQ/+FfGT/hnlV/YBrLvuAXwz+fFQA6000AKgOCgBkAAAASAAA
+        AEEAAAA0AAAAJQAAABYAAAALAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAA////AP///wDSkAAA0o8AcNuY
+        AMfxy0W5//668P7aY8f2xUm/47lJwcaRKNnLdhP95IUo/+6RNv/0lj3/+ZtD//2gSf//pE///6hU//+t
+        Wf//sF3//7Jh//+1ZP//t2f//7lp//+7a///u2z//71t//+9bv//vW7//7xu//+7bv/9uGz//bdr//y0
+        af/8sGf//K1k//yqYv/6p17/9aFZ/+2bU//hkUj/z4A1/7lqGv+iWwr/i2Am/4N2Wf+Ngmj/koJS/Y9z
+        KPuPZQb5fVMA1T0oAIwDAgBNAAAAOwAAADAAAAAfAAAAEQAAAAgAAAADAAAAAAAAAAAAAAAAAAAAAP//
+        /wD///8A0o8AANGOAGrWlQDI89lv0f/////844XY7r1CutGcMdTTehX964su//OVOP/5mj///Z9F//+j
+        S///p1D//6xV//+wW//+s1///rdi//++a///wG7//8Bu///BcP//wnH//8Ny///EdP//xXX//8R1//7E
+        dP/8wXT/+b5y//W6b//zt23/8rRr//Kyav/zsGj/965m//qtZP/8qWH/+KVb/+2cVP/cjUX/xXcs/6pf
+        Dv+OWxj/hHVS/5KGbf+omHT/rZdX/Z97HviVZQDrd04AvRsSAFoAAAA0AAAAJwAAABgAAAANAAAABgAA
+        AAIAAAAAAAAAAAAAAAD///8A////AMeFAADIhgBC05EAye3QY9L/////+/je9OW5Ts3UfhX07Ywt//aW
+        Of/8mz7//6BE//+lSv//qU///65V//+yW//9sFb/3Ior/9KGLf/ckTX/66dN//i8Zf/+xnP//858///O
+        fP//zXv//817//7Kef/7yHj/98R2//C+c//ntm7/4LBq/96saP/fq2f/4qxn/+muaP/zsWn/+rFp//+v
+        Zv/9qWH/8qBY/+KTS//IezH/qmAT/4xcF/+Le1H/o5Nx/7+tjP/MuIf/uplF96RvBPJQMwCSAAAANAAA
+        AC0AAAAfAAAAEgAAAAkAAAADAAAAAAAAAAAAAAAA////AP///wC7fAAAvHwABdCNALHdrB3I/fve9fz/
+        ///htXj85oIZ/vmXOP/+nD7//6BD//+kSP//qU7//61T//+yWf//tl///rZb//aWKP/vkjL/5ZdG/92L
+        N//ZhSf/348v/+afPf/vslT/+MRr//vNeP/90YD/+9GC//LIfP/ku3P/1Kxp/8ehYv/CnF//w5te/8qe
+        YP/XpmX/57Bq//W2bf/8tmz//7Jp//6rYv/zoVn/4JFJ/8J2LP+fWg//iWQm/Z6IT/69pnL/18Ka/9W6
+        cPupeBH4fE8AuQMCADwAAAAwAAAAJAAAABcAAAAMAAAABAAAAAEAAAAAAAAAAP///wD///8Au3wAALp7
+        AADDgwBH1JMA0eXDVdD5+u/945lK//WPKv//nTz//6FB//+kRv//qEv//6xQ//+wVv//tVv//7lg//+/
+        Z//+vWD//ac3//+gM///s1n//rlp//esW//vmkT/65E1/+SKJ//jkCz/45k2/+ChRP/irFX/261e/8Wg
+        Xv+0klb/qolS/6yNWP+3lF3/yaBk/9+vbP/xuXL/+7xz//64bv//smn//Klg/+2bVP/VhTr/smYa/49c
+        F/6ZfUH7uphO/de+hP/dw4D8soMc9IdYA9sKBgBEAAAAMQAAACkAAAAcAAAADwAAAAYAAAABAAAAAAAA
+        AAD///8A////AL5+AAC+fgAAv38AAM6LAHDXlgDS3bFB1euPK//7lzX//6A///+jRP//p0j//6tN//+v
+        Uf//s1f//7hd//+8Yv//wGb//8Vt///Jcv/8ulb/+6Ix//2jNP//sk///75l///BbP//vWj//LBc//Ke
+        Rv/tlDj/tmsd/2I5CP89KAz/VEQt/4hrQv+GXSX/kGgw/6V7PP/BkUz/2aRZ/+uwZP/6uW7//7Vq//+s
+        Yf/0n1T/3ow//71uHv+UWQ//noFE/bqUSfjUtXD65c2X/r2SL/GdZgfuNSEAZQAAADEAAAAuAAAAIAAA
+        ABEAAAAGAAAAAQAAAAAAAAAA////AP///wCwdAAAsHQAALJ2AAC4ewAAwIEAaNiMANnvjCL//59B//+n
+        Sv//qUr//6xN//+vUP//slT//7ZY//+5XP//vWL//8Jn///Fa///yW///893///Qdv/9v1r//Kk4//ud
+        KP/9oDD//qg+//6wS///vFv/qHpA/w8KB/8CBgv/CQwQ/wADCP88OTf/gVgr/4FKEP+PUxT/oV0R/7Bl
+        D/+qYQv/46FR//+4aP//rFz/+KBR/+OOPf/DcBr/mFoM/6SERvzFnlP62bVl+OzVov/MpEfyp24J+0Eo
+        AIgAAAAyAAAAMgAAACQAAAATAAAABwAAAAEAAAAAAAAAAP///wD///8ACwgAAAsIAAALCAAACwcAAAgG
+        AAB9TABJ9o8e+f+xWv//xHP//75o//+4Xv//t1v//7dZ//+5Wv//u1z//75f///BY///xGf//8dr///L
+        cP//znP//9N6///Wff/+0HH//cJc//qxQv/7pjP//J0n/1A6IP9pb3b/XV1e/0lJSf8hISD/BQkM/2xS
+        Mv+VWRP/o2EV/7xwGP/Qfhr/1YYi/++rWP/+tGP//6pZ//mfTf/kjDb/wm0O/5peD/+vjU780qlb/OK0
+        Xvfx1qL/2bRl9KtzD/hwRgKwAAAAOwAAADYAAAAnAAAAFQAAAAcAAAACAAAAAAAAAAD///8A////AAAA
+        AAAAAAAAAAAAAAAAAAAAAAAACwUAAeJ/FMT/w2////W0///nnf//zHv//79m//+6Xv//ulz//71e//++
+        X///wGH//8Rl///Haf//ymz//8xv///Ocf//0XT//9R4///Xff//24L//9h9///Vdf94Z0P/rK6y/7y8
+        vP9ycnL/MzMz/wECBP9SSz7/k3M7/6N/Q/+/k1D/16Na/+qwY//1s2L/+69c//+oVP/4nEj/4IYp/7ll
+        AP+fbCX+v5tY/N+xY/zruV/49NSX/ufIgvqzfBnzhlQE2AQCAEYAAAA5AAAAKgAAABYAAAAJAAAAAgAA
+        AAAAAAAA////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcVQJv/7ZQ////1P///8z//+aZ///L
+        d///wGb//71h//++X///wmP//8Nk///DZf//xWf//sdp//zIa//7yW3/+stv//vOcv/90XX//tN3///W
+        ev//34H/o4hM/3R3e//BwcH/g4OD/0ZGRv8HBwj/LCoo/5Z9U/+hf0f/upBS/9CeWf/jqFz/8Ktb//mr
+        V//9o07/8ZU8/9d7EP+vYgL/sIdG/dOoYPzruWj7871j+fTMhvrv0pr+vIgo8JZfB+smFgBfAAAAOgAA
+        AC0AAAAZAAAACgAAAAQAAAAAAAAAAP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAARC0RM/CP
+        I/H/4aD////2///9yP//45T//814//awUP/ZiSb/3pM1/+2oRf/6u1n//cNk//zGav/0wWf/67xl/+m7
+        Zv/tv2n/88Zu//nNcv/+0Xb//9t7/7uZU/9ra2z/w8TE/4uLi/9VVVX/FRUV/w8RFP+Ba0r/oHtC/7OI
+        S//JlVH/3J9T/+ukVP/4o0//+ZtD/+eIJP/EagD/r3Yp/s2kYP3ks2b8879r/Pi+aPn1yXf59Nmn/8ma
+        PvCmaAn4QCYAgwAAADcAAAAvAAAAHQAAAA4AAAAGAAAAAgAAAAD///8A////AAAAAAAAAAAAAAAAAAAA
+        AAAAAAACAAAAAEZANWaxfTnX/6Y6/f/32P////r///vA///ik//8vmD/9pQi/+qSNP/gjzj/2ogp/92O
+        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
+        td3r1bjh7Ni65ezcveft38Dp7N/B6ubdwOzh2r3vbWtf+GpqbP93d3f/aWlp/zMzNP8VGBj+k4Jm+rhv
+        If3is2/9/v/+//7u0v/6rm/99qxy/e6mbP1lTDn/h4yQ/4aLkP9RUlL/UUpB/0o8Kv8lGAj/FBAK/0k5
+        K/5cQCz+b04z/oNdPP6abEb9s31Q/cqNWv3dmmP87KZp/PWrbPv5rm37+69u+/uubvv7rW369qdj9/bI
+        mP3nu4T6tGwa8ohMBNkGAwBIAAAANwAAACcAAAAXAAAAC////wD///8AAAAAAAMDAgBvXkaKk31dqodz
+        VIGGdFiH3c+00ufSs9zn0rXd6dS34evWueTr2bvm6Nq86OLVuerWzLHts62W8ENEQv1vcHH/X19f/1lZ
+        Wf8bGxv/KSom/amnlfe7eDD82ZVJ/f316v//////+9Sl/vKjZ/3qoGr9clQ//mxrZv+aeEr/nV8R/65j
+        Cv+yZQv/rGEJ/5lWB/+DTQz/akMX/11BKv5uTTT+hVw8/Z9uR/25f1L90ZBd/OSeZfvxpmr796ps+/qr
+        bfv7q236+qtt+vekY/j0uoX68Mic/r52Ku+XVAftKRUAYAAAADQAAAAqAAAAGwAAAA7///8A////AAAA
+        AAAWEw4SgW5RtZR+XZOCbVB6oZB0nObUt9njzrDa5dGy3efTteHp1Lfj6NS35t/Qs+jPxKzrurWi7mpo
+        XfU+Pj//WFtd/0ZKT/9DQ0X/CgoL/0NDPPyusqT2xJ1s+dB4H/3xzqD+//////r++P/wzqr+359v/aBo
+        Mf6rZA//2X0Z/+OHK//ljDb/5I06/9+LO//TgTP/w3Ql/61kFP+JTw//aEQl/nRQN/6OYT/9qHNL/cSG
+        V/3blmD766Fn+/Sma/v4qGz7+qhs+vqpbfr4o2b59LF1+fTPqP/LikPwp1sJ+UUkAIYAAAAxAAAALQAA
+        ACAAAAAT////AP///wAAAAAAOzMlO5R+XbaTfVyGgW1Pd7ipjLDn1Lfc4cyu2ePPsd3m0bPg5tCz4t7K
+        r+bMwKnotKSE7quCSfeUXBb9l1wX/4xaHv9sTSb/NTAp/wAABP9aWlD6oqOS9sjHsfbRi0P72YMv/fPW
+        uP76////7vf//9Otev/XehH/8JAy//eaQ//8oEv//KRS//ymV//7plv/9qRc/+qZU//ShkD/um8l/5NV
+        D/9vSCf+f1c7/ZpoRP23fFH80o5c/OWaZPvwoWn79qNq+vmla/r6pWv6+qNo+vShZfb40ar/2Z5k9Kpc
+        DvpjNQKpAAAANQAAADAAAAAnAAAAGf///wD///8AAAAAAEA3KV+ZgmCykn1cfIl1V3vNuZ2/4cuv2ODM
+        rtjizrDc48+x3uDLr+LPv6nlv5hm8NJ/I/3oiCj/85Q4//KXQf/okD3/04Av/51dGP81IQj/XF9W+ZSU
+        gve+wa/129K09daHOPzWfSn958GT/eHNsP/ahSX/9pU3//+kS///qVL//69Z//+zYP//t2b//7hr//+4
+        bv//s23/9KZh/9mNSf+5cCn/jVIR/3ZOMf2PXj/9r3NK/MuFVvzfkl777Jhj+vSdZvr4oGn6+qVt+vus
+        dPr2q3L277WI9+OrevewYxnziEkE1AYDAEIAAAA1AAAALAAAAB3///8A////AAUEAwBxYUh7l4JfppN+
+        XHSRfmB/2smtzN3Iq9Xfyq3X4c2v2+HNr97YyK/hyaNv7eeIJf//okb//61X//+zYP//t2j//7lv//2x
+        a//qmVP/tG4n/3JfQPqFiHn3srKc9djcxvPn4MH02pdT+stxIP3TfRz/9ZMx//+mS///r1X//7Zd//+7
+        Y///v2n//8Nw///Gd///x33//8R8//+6df/1pmL/04dE/61mHf+AUCD+iGJI/ap5Vf3Gj2X93KF1/Ouw
+        gfz0vY39+cWV/fvHlvz6wY/89a14+Np9P+XNcS/evmYb65xRB+4gDgBZAAAAOAAAADIAAAAi////AP//
+        /wAIBwUCf21QkZqDYZmWgF5zoYxtiNfDpcjcyKrU3cms1uDLrtney7Dd0ryb4+WROPr/p0j//7dd//++
+        Zf//wm3//8d1///MgP//yoT//7t4/+aWU/+gZSj+fntn96iplPXS0rfz6uzS8uzw2fLYrHL45oEX//+i
+        RP//rlL//7dd//++ZP//xGv//8hw///Md///0ID//9KH///Phv//xn///7Zw/+iZU//Cdi7/klwc/4mG
+        d/+qqJL/x8Gj/9zPrP/q0Kj+8cec/fO4h/vyp2/575da9+uKR/bTax/pyVoI5sZbCPGtXRfxNyIOcQAA
+        ADkAAAA2AAAAJf///wD///8AAAAAAF1QO3GchWKrmIJgd6GLa4THs5W33cms1NzIqtTeyazY2sqy29mq
+        c+v7mzf//7db///CZ///yW///810///Sfv//2Yz//9eP///KhP/5rGf/wnYt/4hxTfmipJH0zs2y8ufn
+        yfLr8dfx5MGF9/WOJv//qUv//7VY//++Yv//xmv//8xx///Pdf//0Xv//9iH///bjv//1oz//8uD//+8
+        df/1olr/0II5/6BeFP+FYDr9n3VV/bqCWPzNiFb72YhP+d+FRvjigTz44nwy+d90JvnZbyD7ymUX861b
+        GNyNXjC+gGxOyjEsIoUAAAA3AAAANwAAACX///8A////AAAAAAA/Nig+moNhtZiCX3+ZhGR6vKiJpdzI
+        q9HbyKnT3Miq19fHrdrjpF7w/6VB//++Yv//yW3//9F1///Vev//2oX//9+R///Zjf//zIL//rFn/9OA
+        NP+TbDr7pKSS887LsPHn5cbw6+7S8OiwY/n7lS///65P//+5XP//w2f//8tv///Sdv//1nr//9d////d
+        jP//3Y///9aJ///Kf///vHH/+aVa/9mHOf+pYxT/gEIK/pFIFvytVxn8v18c+8lnHvrRayD61HAl+tN4
+        MvfWjFDy3KZz7tCxjd6Mel6jc2VOj39uUbVdUDqsAgIBOQAAADIAAAAj////AP///wAAAAAAGxgRDop2
+        V66ag2CNmoVjeLOef5XWwqTH2sap09rGqdbVxKrZ6aRa8v+uTP//yXD//9V7///bgP//3YL//9l+///U
+        gP//z33//8Nz//6rW//Vfin/mm41+qupl/HSzLLw5+LF7+zsz+/sr1/5/Zcy//+zV///wmf//8xx///R
+        d///13z//9yB///afv//1Hz//9N////OfP//xXX//7hq//qjU//chjL/rGIP/4ZYKPuacE/3tYVZ9ceW
+        aPPRpXjw3LeO7ObKp+fp0rTn6drA5+3jzuny69nt1sy41JSEZ5yAbU+ZdmRKwhkVEEgAAAAjAAAAG///
+        /wD///8AAAAAAAQDAgB3ZUqDmoNgp5uEYnW8p4aSz7ubtdnFp9DZxajU1MWu1+anY+3/tlX//+2k///z
+        pP//6pT//9yC///Pcf//x2z//8Nq//+3Yf/7oEf/znQT/555Rvi3s5/v19C17+nhxO7t69Dt7bdu9v2Y
+        MP//wWv//9eD///gjP//4Iv//+CI///dg///1Hf//8tu///Ibv//xW3//71o//+xXf/4nUj/2oEm/6pf
+        B/+Oe1n1qqiW7MbAp+na0bfn5Nm+5+naveTs3sbr7+TQ7vHq1+vl4MrbzMGpwbCfg6eUgGGSjXhZk5F8
+        W8dRRTN8AAAADAAAAA7///8A////AAAAAAAAAAAAPjYnRJmEYLmYgV16ybeYnO7m19jVwaTF1sGhzdbF
+        q9PbsoHh/bFP/v/94v///+b///Sl///Wev//ymv//8Jj//+6XP//rFD/85Aq/75qBP+plXTyysGq7d/V
+        ue3q4MPs7enP7O3IjvL8lSj//9SH///7vf///Ln///Wl///lj///2H3//89x///Ja///w2f//71i//+1
+        W///qVH/9JQ4/9R5E/+iXgz9l4lv8Liwn/LTyLTz4ta86+3n2/X69ez+9/Xq8uLcy9a7rJKwmYVnlol0
+        VI+MdlWeloBduJN+Xb58aU6ePTMmSwEBAQYAAAAF////AP///wAAAAAAAAAAAAgHBQJ8a06bmoNfn6+Z
+        d4T6+PLw+fby9uTVv9jZxqjP08Cj0OuhSu3/2JT////9///6u///03f//8Fi//+6W///slL//p45/+B5
+        A/+0fTb3wLeh69rNsurn2rzq7uHC6O/kxujs3Lfq95kw+//Mef///+3////s///+wP//6ZT//9N4///K
+        a///xGb//79g//+4Wv//rlH//6FE/+uKJP/JbAD/png+/ru8uPzZ29z/7u/v//Xz8fzy8Orv3dPE0Lam
+        iqaWgF+MjXZVkJJ8WquXgV6/h3NUsFtNOXcqIxoyBQQDBwAAAAAAAAADAAAAAf///wD///8AAAAAAAAA
+        AAAAAAAAPjUnLZmDYLqYgFySwK+Un/z7+Pb//////Pv3+e/o3Orp17/p96lL+P/EZP//14T//8Nm//+2
+        U///r0z//540/+l/A//GfSD3wa+R59jKreTm17fk69295e/iy+zy59Hy8erZ8vO+e/b+ojT///XO////
+        /////9n//+ua///Nc///w2T//75e//+5Wf//sVH//6ZG//iVM//gfgn/uGcB/aGQd+WuqaDXtKuezLWq
+        k7eqlnmgnYlolJV9WY6UfFmfm4Rgt5N+Xbx4Z0uSPzUnTg4MCRMAAAAAAAAAAAAAAAEAAAABAAAAAAAA
+        AAD///8A////AAAAAAAAAAAAAAAAADUuIgCIdVZBlX9et5qBXaGrlXOQ1Mi0vvXw6Of////+///////5
+        8v/+x4j//qU+//6fNP/8mi7/9pIf/+iPJf/brHD/3tXJ+erl3Pf07+L4+/jr+f799fz/////////////
+        ///+/fr++q9Z/f+uRv//8rz////L///mmP//xm3//7pb//+2Vf//sE///6hH//6bN//shxP/z3EA/41g
+        JdNyZEynfGhKpYNtTamQeVawmIFdtJuDX7ePelm2gnBSmVdLN2cnIRgnAwMCAwAAAAAAAAAAAAAAAgAA
+        AAIAAAABAAAAAAAAAAAAAAAA////AP///wAAAAAAAAAAAAAAAAA4LyMAgm9SAE1CMCV/bVCRnIRgt5uC
+        XKSgimeXrph4mca2m67Qx7nC1M7CxdrHq83guorX4LmA39/FluTh2sjn5+rm5+3t5Ofv7N/i7ujZ3evh
+        0tji18nR1sy6x9HGtcPKv6i2wLKVprSbdaHahR7Y/6Iv///CZ///wWv//7ZY//+vTf//qkf//6RB//6Z
+        Mf/zixP/3HwB/55sKeRzZEy+d2ZLs3tqTaV7aU2QV0o3dkQ5KmFDOSo/GhYRGQMDAgYAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8AAAAAAAAAAAAAAAAAOC8jAId0
+        VgApIxkAAgIBAjoyJDJkVT52jHdXo5iBXbObg12tnYNcqJmBXKSbhWOcnopqmp6MbpqejW6Zn4pqmaCK
+        aJigi2eYoYpmmKCIZJifh2GYnIRemZiAWp2Yf1qknYNdq52FYK2dh2SunodhtcKFNtnohhXw/5sg/v+e
+        Lf//my7//5cn//+UF//vhwj/vWkAyls4C24oJR83EA4LIwcGBBkHBgQQBQQDBQEBAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AAAA
+        AAAAAAAAAAAAADgvIwCHdFYAKiQaAAAAAAAAAAAAAwIBAAkIBQc6MSQhRz0tSkg+LmN5Z0x0iHRVh4Zz
+        VJSHc1Sbh3NToYdzVKSIdFSmiHVVpodzVKWHc1Sih3NVn4dzVJmGclSMdmVKeUtBL2pHPCxeRjwrT0M6
+        LDs1MisgKhsIF288AE+eWACD0XUAm8FsAJl7RAB+VC8ARxAJABEAAAAAAAAAAwAAAAMAAAABAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////AP///wAAAAAAAAAAAAAAAAA4LyMAh3RWACokGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAABQQDAAcGBAAIBgUCCAcFBwgHBQoIBwUMCAcFDggHBQ4IBwUNCAcFDAcHBQoHBgQHBgYEAgQD
+        AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEAAAoFAAAHAwAAAAAAAAAAAAAAAAADAAAABAAA
+        AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8AAAAAAAAAAAAAAAAAOC8jAId0VgAqJBoAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
+        AAIAAAACAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AAAAAAAAAAAAAAAAADgv
+        IwCHdFYAKiQaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP//4Af////////AAf///////8AAf//////4IAAf/////+AAAAf/////wAAAAf////+A
+        AAAA/////4AAAAA/////AAAAAA////4AAAAAA////AAAAAAB///8AAAAAAD///gAAAAAAD//+AAAAAAA
+        D//wAAAAAAAH//AAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf+AAAAAAAAA/4AAAAAAAAB/gAAAAAAAAD+AA
+        AAAAAAAP4gAAAAAAAAfiAAAAAAAAB+AAAAAAAAAD8AAAAAAAAAP4AAAAAAAAA/wAAAAAAAAD/gAAAAAA
+        AAP+AAAAAAAAA/8AAAAAAAAD/QAAAAAAAAH9AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD6AAAAAAAAAPQA
+        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
+        Nv/Qfi7/w3Ul/rJtG/6iah3+lHA5/4t4UP+HdkL/cVkW8DonAKkIBABbAAAANQAAACIAAAAPAAAAAwAA
+        AAAAAAAAAAAAAMiGAD7jqhi+/+duy/nNT7zPoDbOxnkd9uWGK//3l0D//qNP//+tXP//sWL//7Nk//+0
+        Z///tmj//7Vp//+zaP//rmP/+6Vb//CYTP/ahDT/u28h/5lmK/+Hc0v/inY+/3RUDeExHgCJAwEAQQAA
+        ACcAAAAPAAAAAgAAAAAAAAAAzocANuS3RNL/+tLu47NDy9mAHff3kzf//6JI//+qUv/7q1T/7qVQ//W1
+        Yf/+w3H//8l4///Kev//yXr/+8N3//S7cP/ytGz/9rJq//2vaP/5plz/24c5/6djGv+HcUn/qJht/7KP
+        Pf5tSgW5CQUAPwAAABkAAAAIAAAAAAAAAAC9ewAO1JwXqvj11f/nqWP7+I4o//+jRv//qU7//7Rc//uy
+        Vf/rky//6Jc9/+ujS//wrVT/9Llg//jDbP/zw3L/1Ktn/8GcXv/NpGX/77hz//+9dP//rWb/34xB/51e
+        Ff+chVL92sWR/76PLfkoFwBmAAAAHgAAABAAAAABAAAAALx9AADGhAAz3KUozfWbPP//nDv//6hH//+w
+        Uv//uF3//8Jp///EZ///tlD//axH//moR//4p0j/4JM7/2tEE/9FNyH/fWE5/5lsMf/AiD//46NU//+2
+        av/2n1P/t2sc/5x1L/zYvHv70KdN/0ksAIsAAAAjAAAAFwAAAAIAAAAAxYQAANGNAACwbQA13Y4w5P/N
+        ev//ul7//7ZY//++YP//wmX//8lu///Rdv//zW3//8Nc//+/T/+nfkL/UFhk/yAnL/8zKBz/l2Ef/7ly
+        Hf/Zkzn//7Rj//ieSv+6ahH/rYQ9/OjDefrkvW3/b0YDuAAAADAAAAAbAAAAAgAAAABoPwQAbUMEAFEu
+        AACmaiGV///G///mov/+vF7/9K9P//i7XP//yGj//81v//zQdf/91Xv//+CB/8CoZv+mp6n/aGhq/xcW
+        Fv+Qdkn/x5tX/+quYf/+rFr/7ows/7JsE//OpF3898Vz+u/Kg/+SYhHbCAIARAAAAB0AAAAFAAAAAB8a
+        FgAeGRYAFxYUAGtMI373w3f7///u//7glP/wmzL/6ZUz/+ugQ//SlT//yplJ/9utW//7z3P/1rRk/5aV
+        kv+BgoT/ExUZ/2xXN/+6ikn/3JpQ//SVOf/MdAz/x5VL/fK+cPz8w2369tCL/bN+KfMhEQBgAAAAHgAA
+        AAsAAAABJB8XACEdFQAsJhwheGpSmrGAQa7+zIb9//3R///ikv//uE//2I01/0U2KP9HMx7/qmoj/96L
+        KP/LgR//joZ6/5SXmv8kJir/Rjgl/7B4Ov/KeSn/zHYQ/9CXSf3yvHT8/MFx/Pu+a/v6zYr8zZlH/z4h
+        AIIAAAAfAAAAFAAAAAQcGBIAFxQPAEg+LVqMdlaasaaQp/bNlO/4uGD8/9SC///Ref+rg07/ZGx3/yIk
+        Jv+hayX/96U8/+2cM/+Ug27/m5+j/0BCQ/8lHxn/jlYY/6JiFf7Pl1X99rp2/P2+c/z8vXH8+7pr+/vF
+        gfvhr2X/ZDkAqwAAACkAAAAaAAAABgUEBAADAgMGb19GkI56Wozayq/N8+jP6OzYsev1u3D2654//YNu
+        Vv9gaXL/NCcY/8iDM//9p0T/+6U9/5p6V/+coaf/Wlpa/xUUFf9oSin+o3hM/d2lav33tnH8/Lly/Py5
+        cfz7t237+7t1+u6/fv+IUgvQCAQAPAAAAB0AAAAHAgEAACwmGziHclKhn41xlfDdv+Lu3Lzm7uXJ6ff0
+        2ey9tpj0cG9t/05UW/9GKwz/1Ycu/vKfPv/zkSn+nHNG/pOZoP9gZGf/EBcf/0E1K/+QaUX9vYlX/eKi
+        Zvz1sG78+rRw/Puzbvv7smz59sWL/6tuIewbDABbAAAAIAAAAAohHBUAXlE6dIp2VZbCs5i58dy/5ezZ
+        uuXu4MHp7+XI7IiLgfdtb3P/NzxA/2NLLfzdq239/+/Z//+wbv2jeVn+dX2D/2NZSv88KxT/NCIO/2JF
+        Lv6JYkH+uoNU/eGeZfz2rG37+7Bu+/uraPn5wYz8x4k+/DgbAH8AAAAiAAAADzAqHxh7aEyTloJkj93M
+        rtPp1bbh69a45ODVvOewp47vWE9D/U5OTf8XHSL/iIRy+NiZUvv76tn//OTQ/rZ9S/6rbSb/14Am/9yE
+        Lf/CdCX/kFUW/mtHJv6QY0P9yIlX/e2iZ/v5qGz7+6Nm+fq4gvrepWT/YDAApwAAACcAAAAXQTkqNIl0
+        VJOolXaY48+z2uTRst3czLPiyaFw8M+DMvzUgzP/sG4t/0YwFv6FjYT307qQ9uGbV/3hyar/55U9//+f
+        P///sFv//7Vo//+0bP/rmlH/oWAe/3pQLv2wdk/84pdj+/Wlb/v8rnb7+rSA+OalbvuHSAnQAQAAOQAA
+        ACBDOSpLmYNfjreihJ/izbDZ3s612deyhOjzmzv//7ld///Jdv//yX7/145I/4V1WPnH0r/z5tWv9NuH
+        Lf39oT///7xi///FbP//zHr//9GI///Ef//djEH/jV8s/qSPd/7cto7+8buM/PWudvvrjkv2zmIT6aRX
+        FeMVDQZTAAAAJjszJjKTfVuSrpl5kdvHqdDaybHZ6Khh8v+3Uv//0HP//9qG///dk//6r2T/onNA+7vA
+        q/Hs79Hx86hS/P+sSf//xWf//9J3///ZhP//24///8uB//OfU/+hXxv/klov/cN0OvvWezf33IA79uKY
+        XPm0hlrMfmhKsyUiGWoAAAAhNi8jD31rTImvmnaM1cGkwNXCqNTsrWTx/96M///nkv//1Hj//8p1//ih
+        Rf+ueTz6xse17+zlxe/4p077/8Vr///ehf//3oP//9V5///LdP//wG3/9JhA/6VjF/2dh2ny0raT7unR
+        sfDv4svt5eDM27+3obiZhWWvWEs2jAAAAA4UEg0ASj8sWK+adaXu5tjW5dnJ3uK3geL93qj///O1///G
+        Y///sEr/4X4O/reYau/f173p7ufM6/W1Yvn/4Kf////a///iif//yWv//75h//+vVf/pgxj/rH5D/crP
+        zPfv6+Hv6eHT38O0mb2ahmWtgWxOnWVWP3U0LCEwBgUEAQQEAgAjHRUKinVTe72rj73s5Njh9fDo7PvY
+        q/f/wmv7/6xF//WgPv/ctIH76eXW8Pry4PH59/D19+DC8vu/b/j/+M///9+O//+8Xf//tFT//54w/811
+        DfuTf1/ToZR/wJuIa62GcVKXa1o/e1JFMUwnIRgSNi4iAB8ZEwAHBgUABwYEACgiGQBpW0IKSDwpS4Fs
+        TYejkHOnsaWPubqfe77Bn3DHv6+QysjArsvMvKPIxLOZwremjLypnIWwroRNuNmUNOL2p0H6/KE4//ST
+        JP3BbQjKWkIffDMvJVdCNSRDTD8tMEU7Kho4MCMFSj8uACgiGgA5MSQAIhwVAAcGBAAHBgQAKSMaAGRW
+        PwAtJxwAOzIkAi4mGBhaSjIyeGdMP11TP0leUTtNXk40TlxMM01cSzNJaVc7PFFCLDFAPDIiMSQVEo5J
+        ADfvhABUiUsAPCkYAwkbGBIAERANACojGwBEOSsASD0sAD41JwBLQC8AKCIZADkxJAAiHBUABwYEAP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A/4P///iA///wAD//4AAP/8AAA//AAAH/gAAAf4AAAD8AAAAPAAAABwAAAAMAAAADAAAAAYAA
+        AAHAAAAB4AAAAeAAAADAAAAAwAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAA
+        AAfAAAAf8AAH//////8oAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////AKmA
+        AACpgAAAqYAAAKmAAACpgAAAqYAAAKmAAACpgQAAonkAAKV5AACeeAAAJBwAAAAAAAAAAAACAAAABQAA
+        AAcAAAAHAAAABwAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////AKmAAACpgAAAqYAAAKmAAACpgAAAqYAAAKmAAACpgQAAonkAAKV5AACeeAAAIhoAAAAA
+        AAAAAAAGAAAAEAAAABgAAAAbAAAAGQAAABIAAAAKAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        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
+        Yffrz2H46s5f+OrOXvjqzlz47NJl+u7Zgf7t3J//5dWh/tG8dPy4mDP+lHAM8lpBA78cEwF8AAAAVQAA
+        AEwAAABBAAAAMAAAACEAAAAUAAAACwAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////AKx5AACqdgAKv4oAnumuAbT6zy6l/99Vvf/dUb7/3VC+/91PvPXSTsviwk7r3b9K4tW6
+        T+jTu1r3yrNW+MOtU/m/qlP6vahS+r2oUvu9qVL7v6lR+sGrT/rGsVn8ybhx/cy9jf/IuYz9uKNg/KWG
+        Kf+DYAfrSTMAsBMNAHIAAABRAAAARwAAADwAAAArAAAAGwAAAA8AAAAHAAAAAgAAAAEAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA////AKt2AACteQAz0JUAuvK5Eaf93E21/91VwP/aT77+2E++99JMvt6/
+        StzKr0nruqJB47CbR/KnkEP6nYM5+5Z7M/uTdy/8kXUu/JB1LvyPdjD8j3cz/I96N/yRfjj8loQ8/JyN
+        SP2lmGP+raN+/6yhe/2lkVH/lXUe/3NSA+Q4JgCjCAUAaQAAAFAAAABDAAAAMwAAACIAAAAVAAAACwAA
+        AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AKh0AAC0fQBe3p8Av/fJLqn/4l7B/9dQv/7V
+        T77zzEy/2blHx7SbP+uihTDuoHYh8apyHvyxbhj+tmwW/7ltF/+7bhr/u24a/7luGv+3axj/sWoX/6to
+        F/6kZhb+nWUX/pdmGf2TbB/9kXQx/pOBUP+Vi23/lIto/417Qf+AYhT+XkIA2CocAJcFAwBhAAAASAAA
+        AD0AAAAsAAAAHAAAAA8AAAAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAA////AK52AAW/gwCD56cDufrZ
+        TLb/4GHD/9JNvfTLTb/Us0XCso8w3Kp0HPq7cRb8znke/96CKv/njDf/7JFB/+6VRv/xmUr/8ppM//Ka
+        TP/xmkz/75dK/+qURv/ljkD/3YU3/9J+Lf/FdCL/t2sY/6dlEf6YZBz/jWs3/4h2Vf+FfFj+hHAz/3lb
+        DfpSOADIHhMAfwAAAFEAAAA/AAAAMQAAACEAAAASAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAA////AMKF
+        ABLNjACc67AUt/3mZ8P/11rD+MpNvdq0RcK6hiXfxXUX+t6BJf/tjzb/9JhD//qeTP/8o1H//qdX//+q
+        W///rV7//69g//+wYv//sWT//7Fk//+wZP//r2T//6xi//yoXv/3olj/75lP/+ONQv/Sfi7/u20b/6Rh
+        FP+QZS7/hXRT/oN4Uv+GbSn/d1UF7UsxAK8SCwBlAAAAPwAAADMAAAAkAAAAEgAAAAUAAAABAAAAAAAA
+        AAAAAAAA////ANKPABbVjwCg7MRFzP/4r+X80VfC5LhDv8mKJOPXex3/744y//iZQP/9n0j//6RO//+r
+        V///s2D//7dm//+6af//umr//7tr//+8bf//vm7//79w//++cP//vHD//rpu//23bP/9s2n//a9m//yr
+        Y//4pF3/7ppQ/9qIO/+9bRz/nV0V/4dqQP+JgGX/l4RP/5t3Iv99VQDaPScAjQwIAEwAAAAwAAAAHAAA
+        AAwAAAAEAAAAAAAAAAAAAAAA////AM2KAA3PigCT68lf3v//+Pv12oPS1pYk1t6AH//1lDf//J1A//+i
+        SP//qE///65X//yuVv/qnkf/6qRN//W1Xv/+w3D//8p5///Me///ynr//8p5//7Hd//6w3b/8rxy/+y2
+        bf/qsmv/67Bp//Cwaf/5sGf//q5l//qnX//ol0//ynks/6JdEP+GaDb/l4xv/7SkfP+6nFL/qXoV9Vs7
+        AKEDAgA3AAAAIwAAABQAAAAIAAAAAQAAAAAAAAAA////AL19AAHFggBh4K8r2P7/7/jx5cv54Ism+PaQ
+        Lv/+nUD//6JG//+oTf//rlT//7Ve//uwU//pjSb/4Y0z/+GTPv/kmkD/66dK//K2W//5xW3//Mx4//rO
+        fv/0yXz/57xz/9SraP/JoWL/zaJj/9mpZ//ts23/+7du//+zaf/8qWH/6plS/8d4Lf+ZWhD/jXQ8/bSg
+        dP/XxJr/yaRM/4tbANURCgBJAAAAJwAAABwAAAAMAAAAAwAAAAAAAAAA////ALp6AAC+fgAX0I4AperP
+        ceftzJ/874wr//+bOP//o0T//6dJ//+sUP//slj//7lf//+/Zv//t1X//aY8//qmRP/3qlL/8qVO/+6e
+        Rf/rnD3/6Zw+/+ulRv/ipk//upJN/6eHUP+mhk//qYdQ/76YXf/drmv/9r11//+9c///smn/+aZe/9+O
+        RP+wZRj/j2Qj/a2PS/zZv4T+1LRn/J9sCOskFQBgAAAAKAAAACIAAAARAAAABAAAAAAAAAAA////AL18
+        AADBgAAAzIgALdKTA6/mmSL0+pQz//+iQf//pkb//6tM//+wUv//tln//7xg///BZ///yXH//8hs//64
+        Uf//rkL//q1E//+xT///slb/+7BU/9eNPP9bMQf/HxEA/ychGf9qVTj/hlki/5NiJv+zejH/xoc3/+Sj
+        Vf//t2r//qlc/+qVRv+9bRr/lWUf/7KQSvrZuXT638N/+rN/F/lDKACEAAAALAAAACgAAAAUAAAABAAA
+        AAAAAAAA////ALp6AAC+fgAAy4oAALB1ACTCcQi6/6dH//+7Zv//tVr//7RW//+1V///uVr//71f///B
+        ZP//xWn//8ty///Sef/+zW///sFb//22Sv/7rD7//646/4diM/84QUz/NDg+/xEWG/8kIR//g1Ui/5lX
+        Dv+zZxL/wXAO/92XQP//t2b//6hX/+2UQP+/axD/m2oi/sGcVfvju27668+R+8GOK/1gOgCpAAAANQAA
+        ACwAAAAWAAAABQAAAAAAAAAA////ACATAAAhFAAAIxYAABMMAABrNwJU/7dT+f/0s///35H//8Fq//+5
+        Xf//vl///8Jj///DZP//xWf//8hq///Mb///0nf//9d8///XfP/+1Hf//9Fs/5R+T/+hpav/nJyc/zk6
+        Ov8LDA//cl47/6V9Pf/CkUv/4aZX//OxYP/8r13//qVR/+mNMf+3ZQT/p3w4/dWrYPzuvmn69NWX/c6g
+        R/x+TgDNBQIARQAAAC8AAAAZAAAABwAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAgBCIwUY2o0tzf/7
+        x////dL//9yK///Caf/2sFH/76tM//m6Wv//xmb//8ls//zIbP/2xmz/9slu//rOdP/903n//+CB/7Wb
+        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
+        ev//zIL//8eB//61cf/cjkf/oV8a/4JmR/6okXj+0LCL/ujBmP30x5v9+MOT/Pi4hPvxnmP21G8p481k
+        FO6nVQvsIxIEXwAAADMAAAAl////AB8aEx2HdFWZm4RhgqmUdY3WwqTK3sqs1t7LsdjWwKHg6pxJ+P+v
+        Tv//w2n//8lw///Qff//2I3//9CL//anYP+mbTP9j4139srLsvLs9Nvx5ty29O2SMv7/pUT//7hc///D
+        Z///y3D//852///Vg///2Y3//9GK///Bev/xn1j/uW4j/4llOP+fh2z+xp10/tuhb/zkmV/654tJ+eV+
+        NfnecyX5xF8Q6qlYFtaOYzfTKSIYcQAAADMAAAAo////ACwnHQZoWUJ8nodjlZ6JaX3Lt5m53sqs1trK
+        sNbat4zj96JE/P+8XP//zXD//9V5///bhv//3pD//9OJ//+yZv+9dC7+lodp9snJsvHq7dLv6tGd9PiZ
+        Nf7/rU3//79h///Kbf//03b//9h9///biP//3I7//9KG///Bd//4pFj/yHkp/4tMDP6PShv8tV4j+8dp
+        JvnScy3413049diLTfPgqXbzyKiF2oZ1W597bVOvQzssjgAAAC8AAAAk////ABEQCwBLQC9SnIRgo5+K
+        aHvCrY2k2sWmz9jIsdXctYnj+atO/P/Ve///4oj//9+F///We///z3n//8Zz//2nUv/AciH+oI9v9M/M
+        tu/q6tHu7c2X8/qaNv7/uFz//850///VfP//24H//9yA///TeP//znn//8h1//+7a//5oU7/ynQb/5Bf
+        JPybgWTywaF779S0jOzgw53o6dS26e/jy+3y7drq497L2KqdhKWKdVabcWBGsBIPCzcAAAAQ////AC4p
+        HQA9NSYmiHRUoaaPa4XWx6yv3cuxzdTCpc3WuJPZ9K9X9//0wv///sr//+KJ///LbP//wmT//7he//WT
+        Lf+2cR38sqaO8NrTue7s583s7dap7/qeOv7/0oL///Su///wn///44v//9V5///Lbf//xGj//71k//+x
+        Wv/1lzv/wmoJ/5V0Q/ixsqTw2dO+7+zl0/D48+X38+/g7dzTvtC4q5CxoY5wo5mDYqqWgF+2fWtPoyEb
+        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
+</value>
+  </data>
+</root>

+ 115 - 0
MOTINOVA_MC_Test/MOTINOVA_MC_Test.csproj

@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.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>{3F9958A2-3FFC-4B41-8A1A-F8C3EC0054FD}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MOTINOVA_BMS_Test</RootNamespace>
+    <AssemblyName>MOTINOVA_BMS_Test</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <PublishUrl>发布\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>shortcut_default.ico</ApplicationIcon>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.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="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>
+    <Content Include="shortcut_default.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </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>

+ 13 - 0
MOTINOVA_MC_Test/MOTINOVA_MC_Test.csproj.user

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <PublishUrlHistory>发布\</PublishUrlHistory>
+    <InstallUrlHistory />
+    <SupportUrlHistory />
+    <UpdateUrlHistory />
+    <BootstrapperUrlHistory />
+    <ErrorReportUrlHistory />
+    <FallbackCulture>zh-CN</FallbackCulture>
+    <VerifyUploadedFiles>false</VerifyUploadedFiles>
+  </PropertyGroup>
+</Project>

+ 20 - 0
MOTINOVA_MC_Test/Program.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace MOTINOVA_MC_Test
+{
+    static class Program
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
+        }
+    }
+}

+ 36 - 0
MOTINOVA_MC_Test/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过以下
+// 特性集控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("MOTINOVA_MC_Test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("MOTINOVA_MC_Test")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。  如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("3f23b0c8-7fb4-483a-aa8a-6264e92d2c9e")]
+
+// 程序集的版本信息由下面四个值组成: 
+//
+//      主版本
+//      次版本 
+//      生成号
+//      修订号
+//
+// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”: 
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 63 - 0
MOTINOVA_MC_Test/Properties/Resources.Designer.cs

@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MOTINOVA_BMS_Test.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   一个强类型的资源类,用于查找本地化的字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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("MOTINOVA_BMS_Test.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;
+            }
+        }
+    }
+}

+ 117 - 0
MOTINOVA_MC_Test/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?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.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: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" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </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" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 26 - 0
MOTINOVA_MC_Test/Properties/Settings.Designer.cs

@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MOTINOVA_BMS_Test.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.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;
+            }
+        }
+    }
+}

+ 7 - 0
MOTINOVA_MC_Test/Properties/Settings.settings

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

BIN
MOTINOVA_MC_Test/bin/Debug/MOTINOVA_BMS_Test.exe


BIN
MOTINOVA_MC_Test/bin/Debug/MOTINOVA_BMS_Test.pdb


BIN
MOTINOVA_MC_Test/bin/Debug/MOTINOVA_BMS_Test.vshost.exe


+ 11 - 0
MOTINOVA_MC_Test/bin/Debug/MOTINOVA_MC_Test.vshost.exe.manifest

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <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">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>

BIN
MOTINOVA_MC_Test/bin/Debug/NetFx20SP2_x86.exe


BIN
MOTINOVA_MC_Test/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
MOTINOVA_MC_Test/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_BMS_Test.Properties.Resources.resources


BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_BMS_Test.exe


BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_BMS_Test.pdb


BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.Form1.resources


BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.AssemblyReference.cache


+ 1 - 0
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+357adac8346cf1aa35cf8bd5e326ec468837520e

+ 49 - 0
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.FileListAbsolute.txt

@@ -0,0 +1,49 @@
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.exe
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.pdb
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csprojResolveAssemblyReference.cache
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Form1.resources
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Properties.Resources.resources
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.GenerateResource.Cache
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.exe
+F:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.pdb
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.exe
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.pdb
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.exe
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.pdb
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csprojResolveAssemblyReference.cache
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Form1.resources
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Properties.Resources.resources
+E:\Documents\ProjectFiles\MOTINOVA\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.GenerateResource.Cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.pdb
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Form1.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Properties.Resources.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.GenerateResource.Cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.pdb
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test_V1.0.0\MOTINOVA_MC_Test\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csprojResolveAssemblyReference.cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.pdb
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_MC_Test.pdb
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csprojResolveAssemblyReference.cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Form1.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Properties.Resources.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_MC_Test\MOTINOVA_MC_Test_V1.0.0\ReadOnly\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.GenerateResource.Cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csprojResolveAssemblyReference.cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Form1.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.GenerateResource.Cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_BMS_Test.Properties.Resources.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_BMS_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_BMS_Test.pdb
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_BMS_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.0\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_BMS_Test.pdb
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_BMS_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\bin\Debug\MOTINOVA_BMS_Test.pdb
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.AssemblyReference.cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.Form1.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_BMS_Test.Properties.Resources.resources
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.GenerateResource.cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_MC_Test.csproj.CoreCompileInputs.cache
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_BMS_Test.exe
+D:\SoftDesign\20171216_PC_MortorTest\MOTINOVA_BMS_Test\MOTINOVA_BMS_Test_V1.0.1\MOTINOVA_MC_Test\obj\Debug\MOTINOVA_BMS_Test.pdb

BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csproj.GenerateResource.cache


BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csprojAssemblyReference.cache


BIN
MOTINOVA_MC_Test/obj/Debug/MOTINOVA_MC_Test.csprojResolveAssemblyReference.cache


BIN
MOTINOVA_MC_Test/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll


BIN
MOTINOVA_MC_Test/shortcut_default.ico