Bladeren bron

1、增加BMS通信检测;
2、增加一路断电开关的检测;
3、界面进行微调。

该版本目前测试正常,连接局域网FTP正常,阿里云目前连接失败。

dail 3 jaren geleden
bovenliggende
commit
4ebc3f11f9
52 gewijzigde bestanden met toevoegingen van 4119 en 566 verwijderingen
  1. 2 0
      .gitignore
  2. BIN
      .vs/MOTINOVA_Motor_Factory_Set/v16/.suo
  3. 675 0
      CheckForm.Designer.cs
  4. 1372 0
      CheckForm.cs
  5. 581 0
      CheckForm.resx
  6. 151 0
      Enter.Designer.cs
  7. 29 0
      Enter.cs
  8. 149 0
      Enter.resx
  9. 320 61
      ExportForm.Designer.cs
  10. 40 8
      ExportForm.cs
  11. 149 291
      ImportForm.Designer.cs
  12. 166 69
      ImportForm.cs
  13. 15 0
      MOTINOVA_Motor_Factory_Set.csproj
  14. 16 0
      MOTINOVA_Motor_Factory_Set.csproj.user
  15. BIN
      MOTINOVA_Motor_Factory_Set_TemporaryKey.pfx
  16. 14 70
      ManageForm.Designer.cs
  17. 9 25
      ManageForm.cs
  18. 30 0
      Properties/Resources.Designer.cs
  19. 13 4
      Properties/Resources.resx
  20. 69 0
      Properties/app.manifest
  21. BIN
      Resources/836618239619717251.jpg
  22. BIN
      Resources/ttium.bmp
  23. 33 18
      StartForm.Designer.cs
  24. 74 16
      StartForm.cs
  25. 48 0
      TorqueCheckParam.cs
  26. 18 0
      bin/Debug/MOTINOVA_Motor_Factory_Set.application
  27. BIN
      bin/Debug/MOTINOVA_Motor_Factory_Set.exe
  28. 72 0
      bin/Debug/MOTINOVA_Motor_Factory_Set.exe.manifest
  29. BIN
      bin/Debug/MOTINOVA_Motor_Factory_Set.pdb
  30. 1 1
      bin/Debug/SerialNum
  31. 20 0
      bin/Debug/Server
  32. 5 0
      bin/Debug/TorqueCheckParam
  33. 2 0
      bin/Debug/UserPath
  34. BIN
      bin/Debug/app.publish/MOTINOVA_Motor_Factory_Set.exe
  35. BIN
      bin/Debug/errorlog/2021-10-27/VS7500%#1111_2021-10-27_115015_测试记录.png
  36. BIN
      bin/Debug/errorlog/2021-10-27/VS7500%#M210101A0001A_2021-10-27_113316_测试记录.png
  37. BIN
      bin/Debug/errorlog/2021-10-27/VS7500%#M210111A0001A_2021-10-27_113013_测试记录.png
  38. BIN
      bin/Debug/notice.wav
  39. 6 2
      ftp.cs
  40. BIN
      images/075-check.ico
  41. BIN
      images/6477DB93-5726-4E9D-9171-FB481875B811.ico
  42. BIN
      obj/Debug/DesignTimeResolveAssemblyReferences.cache
  43. BIN
      obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  44. BIN
      obj/Debug/MOTINOVA_Motor_Factory_Set.Properties.Resources.resources
  45. 1 1
      obj/Debug/MOTINOVA_Motor_Factory_Set.csproj.CoreCompileInputs.cache
  46. 1 0
      obj/Debug/MOTINOVA_Motor_Factory_Set.csproj.FileListAbsolute.txt
  47. BIN
      obj/Debug/MOTINOVA_Motor_Factory_Set.csproj.GenerateResource.cache
  48. BIN
      obj/Debug/MOTINOVA_Motor_Factory_Set.csprojAssemblyReference.cache
  49. BIN
      obj/Debug/MOTINOVA_Motor_Factory_Set.exe
  50. BIN
      obj/Debug/MOTINOVA_Motor_Factory_Set.pdb
  51. BIN
      obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
  52. 38 0
      server_cfg.cs

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+/bin/Debug/log
+log

BIN
.vs/MOTINOVA_Motor_Factory_Set/v16/.suo


+ 675 - 0
CheckForm.Designer.cs

@@ -0,0 +1,675 @@
+namespace MOTINOVA_Motor_Factory_Set
+{
+    partial class CheckForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CheckForm));
+            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+            this.toolStripMenuIte_PortSet = new System.Windows.Forms.ToolStripMenuItem();
+            this.ToolStripMenuItem_PowerKey = new System.Windows.Forms.ToolStripMenuItem();
+            this.开ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.关ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.groupBox4 = new System.Windows.Forms.GroupBox();
+            this.comboBox_cfgFileDate = new System.Windows.Forms.ComboBox();
+            this.checkBox_LocalFile = new System.Windows.Forms.CheckBox();
+            this.comboBox_File = new System.Windows.Forms.ComboBox();
+            this.label_SystemTime = new System.Windows.Forms.Label();
+            this.label_NetStatus = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
+            this.richTextBox_CfgFile = new System.Windows.Forms.RichTextBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.textBox_TQ_Start = new System.Windows.Forms.TextBox();
+            this.textBox_TQ_Zero = new System.Windows.Forms.TextBox();
+            this.textBox_TQ_K = new System.Windows.Forms.TextBox();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.richTextBox_VerInfo = new System.Windows.Forms.RichTextBox();
+            this.richTextBox_ReadCfg = new System.Windows.Forms.RichTextBox();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.richTextBox_TestRecord = new System.Windows.Forms.RichTextBox();
+            this.label_error_code = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.textBox_PDinfo = new System.Windows.Forms.TextBox();
+            this.groupBox5 = new System.Windows.Forms.GroupBox();
+            this.label32 = new System.Windows.Forms.Label();
+            this.label_SerialNum = new System.Windows.Forms.Label();
+            this.button_Start = new System.Windows.Forms.Button();
+            this.label_Step = new System.Windows.Forms.Label();
+            this.label_Result = new System.Windows.Forms.Label();
+            this.timer1 = new System.Windows.Forms.Timer(this.components);
+            this.timer2 = new System.Windows.Forms.Timer(this.components);
+            this.groupBox7 = new System.Windows.Forms.GroupBox();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.richTextBox_TQ = new System.Windows.Forms.RichTextBox();
+            this.groupBox6 = new System.Windows.Forms.GroupBox();
+            this.groupBox8 = new System.Windows.Forms.GroupBox();
+            this.pictureBox2 = new System.Windows.Forms.PictureBox();
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
+            this.menuStrip1.SuspendLayout();
+            this.groupBox4.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            this.groupBox5.SuspendLayout();
+            this.groupBox7.SuspendLayout();
+            this.groupBox1.SuspendLayout();
+            this.groupBox6.SuspendLayout();
+            this.groupBox8.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // menuStrip1
+            // 
+            this.menuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.menuStrip1.Font = new System.Drawing.Font("微软雅黑", 12F);
+            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuIte_PortSet,
+            this.ToolStripMenuItem_PowerKey});
+            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+            this.menuStrip1.Name = "menuStrip1";
+            this.menuStrip1.Padding = new System.Windows.Forms.Padding(10, 4, 0, 4);
+            this.menuStrip1.Size = new System.Drawing.Size(1234, 33);
+            this.menuStrip1.TabIndex = 0;
+            this.menuStrip1.Text = "menuStrip1";
+            // 
+            // toolStripMenuIte_PortSet
+            // 
+            this.toolStripMenuIte_PortSet.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.toolStripMenuIte_PortSet.Name = "toolStripMenuIte_PortSet";
+            this.toolStripMenuIte_PortSet.Size = new System.Drawing.Size(86, 25);
+            this.toolStripMenuIte_PortSet.Text = "端口设置";
+            this.toolStripMenuIte_PortSet.Click += new System.EventHandler(this.toolStripMenuIte_PortSet_Click);
+            // 
+            // ToolStripMenuItem_PowerKey
+            // 
+            this.ToolStripMenuItem_PowerKey.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.开ToolStripMenuItem,
+            this.关ToolStripMenuItem});
+            this.ToolStripMenuItem_PowerKey.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.ToolStripMenuItem_PowerKey.Name = "ToolStripMenuItem_PowerKey";
+            this.ToolStripMenuItem_PowerKey.Size = new System.Drawing.Size(86, 25);
+            this.ToolStripMenuItem_PowerKey.Text = "系统开关";
+            // 
+            // 开ToolStripMenuItem
+            // 
+            this.开ToolStripMenuItem.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.开ToolStripMenuItem.Name = "开ToolStripMenuItem";
+            this.开ToolStripMenuItem.Size = new System.Drawing.Size(96, 26);
+            this.开ToolStripMenuItem.Text = "开";
+            this.开ToolStripMenuItem.Click += new System.EventHandler(this.开ToolStripMenuItem_Click);
+            // 
+            // 关ToolStripMenuItem
+            // 
+            this.关ToolStripMenuItem.Checked = true;
+            this.关ToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.关ToolStripMenuItem.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.关ToolStripMenuItem.Name = "关ToolStripMenuItem";
+            this.关ToolStripMenuItem.Size = new System.Drawing.Size(96, 26);
+            this.关ToolStripMenuItem.Text = "关";
+            this.关ToolStripMenuItem.Click += new System.EventHandler(this.关ToolStripMenuItem_Click);
+            // 
+            // groupBox4
+            // 
+            this.groupBox4.Controls.Add(this.comboBox_cfgFileDate);
+            this.groupBox4.Controls.Add(this.checkBox_LocalFile);
+            this.groupBox4.Controls.Add(this.comboBox_File);
+            this.groupBox4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox4.Location = new System.Drawing.Point(12, 36);
+            this.groupBox4.Name = "groupBox4";
+            this.groupBox4.Size = new System.Drawing.Size(964, 65);
+            this.groupBox4.TabIndex = 10;
+            this.groupBox4.TabStop = false;
+            this.groupBox4.Text = "配置文件";
+            // 
+            // comboBox_cfgFileDate
+            // 
+            this.comboBox_cfgFileDate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.comboBox_cfgFileDate.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.comboBox_cfgFileDate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.comboBox_cfgFileDate.FormattingEnabled = true;
+            this.comboBox_cfgFileDate.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.comboBox_cfgFileDate.Location = new System.Drawing.Point(10, 26);
+            this.comboBox_cfgFileDate.Name = "comboBox_cfgFileDate";
+            this.comboBox_cfgFileDate.Size = new System.Drawing.Size(144, 29);
+            this.comboBox_cfgFileDate.TabIndex = 3;
+            this.comboBox_cfgFileDate.SelectionChangeCommitted += new System.EventHandler(this.comboBox_cfgFileDate_SelectionChangeCommitted);
+            // 
+            // checkBox_LocalFile
+            // 
+            this.checkBox_LocalFile.AutoSize = true;
+            this.checkBox_LocalFile.Location = new System.Drawing.Point(891, 26);
+            this.checkBox_LocalFile.Name = "checkBox_LocalFile";
+            this.checkBox_LocalFile.Size = new System.Drawing.Size(61, 25);
+            this.checkBox_LocalFile.TabIndex = 2;
+            this.checkBox_LocalFile.Text = "本地";
+            this.checkBox_LocalFile.UseVisualStyleBackColor = true;
+            this.checkBox_LocalFile.CheckedChanged += new System.EventHandler(this.checkBox_LocalFile_CheckedChanged);
+            // 
+            // comboBox_File
+            // 
+            this.comboBox_File.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.comboBox_File.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.comboBox_File.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.comboBox_File.FormattingEnabled = true;
+            this.comboBox_File.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.comboBox_File.Location = new System.Drawing.Point(160, 26);
+            this.comboBox_File.Name = "comboBox_File";
+            this.comboBox_File.Size = new System.Drawing.Size(725, 29);
+            this.comboBox_File.TabIndex = 1;
+            this.comboBox_File.SelectionChangeCommitted += new System.EventHandler(this.comboBox_File_SelectionChangeCommitted);
+            // 
+            // label_SystemTime
+            // 
+            this.label_SystemTime.AutoSize = true;
+            this.label_SystemTime.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label_SystemTime.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label_SystemTime.Location = new System.Drawing.Point(1066, 787);
+            this.label_SystemTime.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
+            this.label_SystemTime.Name = "label_SystemTime";
+            this.label_SystemTime.Size = new System.Drawing.Size(154, 21);
+            this.label_SystemTime.TabIndex = 11;
+            this.label_SystemTime.Text = "2020-9-23 12:00:00";
+            // 
+            // label_NetStatus
+            // 
+            this.label_NetStatus.BackColor = System.Drawing.Color.Red;
+            this.label_NetStatus.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label_NetStatus.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.label_NetStatus.Location = new System.Drawing.Point(589, 787);
+            this.label_NetStatus.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
+            this.label_NetStatus.Name = "label_NetStatus";
+            this.label_NetStatus.Size = new System.Drawing.Size(462, 21);
+            this.label_NetStatus.TabIndex = 12;
+            this.label_NetStatus.Text = "网络连接失败";
+            this.label_NetStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label2.Location = new System.Drawing.Point(8, 787);
+            this.label2.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(423, 21);
+            this.label2.TabIndex = 13;
+            this.label2.Text = "Copyright © 2021 MOTINOVA Inc. All Rights Reserved";
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label6.Location = new System.Drawing.Point(150, 28);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(58, 21);
+            this.label6.TabIndex = 16;
+            this.label6.Text = "启动值";
+            // 
+            // richTextBox_CfgFile
+            // 
+            this.richTextBox_CfgFile.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.richTextBox_CfgFile.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.richTextBox_CfgFile.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.richTextBox_CfgFile.Location = new System.Drawing.Point(6, 31);
+            this.richTextBox_CfgFile.Name = "richTextBox_CfgFile";
+            this.richTextBox_CfgFile.ReadOnly = true;
+            this.richTextBox_CfgFile.Size = new System.Drawing.Size(238, 555);
+            this.richTextBox_CfgFile.TabIndex = 1;
+            this.richTextBox_CfgFile.Text = "";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label5.Location = new System.Drawing.Point(6, 61);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(42, 21);
+            this.label5.TabIndex = 16;
+            this.label5.Text = "系数";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label3.Location = new System.Drawing.Point(6, 29);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(42, 21);
+            this.label3.TabIndex = 16;
+            this.label3.Text = "零点";
+            // 
+            // textBox_TQ_Start
+            // 
+            this.textBox_TQ_Start.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.textBox_TQ_Start.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.textBox_TQ_Start.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.textBox_TQ_Start.Location = new System.Drawing.Point(214, 25);
+            this.textBox_TQ_Start.Name = "textBox_TQ_Start";
+            this.textBox_TQ_Start.ReadOnly = true;
+            this.textBox_TQ_Start.Size = new System.Drawing.Size(80, 26);
+            this.textBox_TQ_Start.TabIndex = 15;
+            this.textBox_TQ_Start.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            // 
+            // textBox_TQ_Zero
+            // 
+            this.textBox_TQ_Zero.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.textBox_TQ_Zero.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.textBox_TQ_Zero.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.textBox_TQ_Zero.Location = new System.Drawing.Point(53, 25);
+            this.textBox_TQ_Zero.Name = "textBox_TQ_Zero";
+            this.textBox_TQ_Zero.ReadOnly = true;
+            this.textBox_TQ_Zero.Size = new System.Drawing.Size(80, 26);
+            this.textBox_TQ_Zero.TabIndex = 15;
+            this.textBox_TQ_Zero.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            // 
+            // textBox_TQ_K
+            // 
+            this.textBox_TQ_K.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.textBox_TQ_K.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.textBox_TQ_K.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.textBox_TQ_K.Location = new System.Drawing.Point(53, 57);
+            this.textBox_TQ_K.Name = "textBox_TQ_K";
+            this.textBox_TQ_K.ReadOnly = true;
+            this.textBox_TQ_K.Size = new System.Drawing.Size(80, 26);
+            this.textBox_TQ_K.TabIndex = 15;
+            this.textBox_TQ_K.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.richTextBox_VerInfo);
+            this.groupBox2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox2.Location = new System.Drawing.Point(12, 192);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(300, 190);
+            this.groupBox2.TabIndex = 14;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "电机信息";
+            // 
+            // richTextBox_VerInfo
+            // 
+            this.richTextBox_VerInfo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.richTextBox_VerInfo.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.richTextBox_VerInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.richTextBox_VerInfo.Location = new System.Drawing.Point(10, 28);
+            this.richTextBox_VerInfo.Name = "richTextBox_VerInfo";
+            this.richTextBox_VerInfo.ReadOnly = true;
+            this.richTextBox_VerInfo.Size = new System.Drawing.Size(284, 150);
+            this.richTextBox_VerInfo.TabIndex = 1;
+            this.richTextBox_VerInfo.Text = "MODEL:\nSN:\nHW:\nFW:\nSPEICAL:\nTE:";
+            // 
+            // richTextBox_ReadCfg
+            // 
+            this.richTextBox_ReadCfg.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.richTextBox_ReadCfg.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.richTextBox_ReadCfg.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.richTextBox_ReadCfg.Location = new System.Drawing.Point(6, 31);
+            this.richTextBox_ReadCfg.Name = "richTextBox_ReadCfg";
+            this.richTextBox_ReadCfg.ReadOnly = true;
+            this.richTextBox_ReadCfg.Size = new System.Drawing.Size(238, 555);
+            this.richTextBox_ReadCfg.TabIndex = 1;
+            this.richTextBox_ReadCfg.Text = "";
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.richTextBox_TestRecord);
+            this.groupBox3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox3.Location = new System.Drawing.Point(860, 192);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(362, 592);
+            this.groupBox3.TabIndex = 14;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "检验记录";
+            // 
+            // richTextBox_TestRecord
+            // 
+            this.richTextBox_TestRecord.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.richTextBox_TestRecord.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.richTextBox_TestRecord.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.richTextBox_TestRecord.Location = new System.Drawing.Point(6, 31);
+            this.richTextBox_TestRecord.Name = "richTextBox_TestRecord";
+            this.richTextBox_TestRecord.ReadOnly = true;
+            this.richTextBox_TestRecord.Size = new System.Drawing.Size(350, 555);
+            this.richTextBox_TestRecord.TabIndex = 1;
+            this.richTextBox_TestRecord.Text = "";
+            // 
+            // label_error_code
+            // 
+            this.label_error_code.BackColor = System.Drawing.Color.Green;
+            this.label_error_code.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.label_error_code.Location = new System.Drawing.Point(463, 151);
+            this.label_error_code.Name = "label_error_code";
+            this.label_error_code.Size = new System.Drawing.Size(120, 30);
+            this.label_error_code.TabIndex = 3;
+            this.label_error_code.Text = "20000000H";
+            this.label_error_code.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            this.label_error_code.MouseHover += new System.EventHandler(this.label_error_code_MouseHover);
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label1.Location = new System.Drawing.Point(486, 124);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(58, 21);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "故障码";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label4.Location = new System.Drawing.Point(26, 24);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(218, 21);
+            this.label4.TabIndex = 16;
+            this.label4.Text = "扫码或手动填入电机打标信息";
+            // 
+            // textBox_PDinfo
+            // 
+            this.textBox_PDinfo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.textBox_PDinfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.textBox_PDinfo.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_PDinfo.Location = new System.Drawing.Point(10, 50);
+            this.textBox_PDinfo.Name = "textBox_PDinfo";
+            this.textBox_PDinfo.Size = new System.Drawing.Size(250, 29);
+            this.textBox_PDinfo.TabIndex = 15;
+            this.textBox_PDinfo.Click += new System.EventHandler(this.textBox_PDinfo_Click);
+            this.textBox_PDinfo.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBox_PDinfo_KeyUp);
+            // 
+            // groupBox5
+            // 
+            this.groupBox5.Controls.Add(this.label32);
+            this.groupBox5.Controls.Add(this.label_SerialNum);
+            this.groupBox5.Controls.Add(this.button_Start);
+            this.groupBox5.Controls.Add(this.label4);
+            this.groupBox5.Controls.Add(this.textBox_PDinfo);
+            this.groupBox5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox5.Location = new System.Drawing.Point(12, 103);
+            this.groupBox5.Name = "groupBox5";
+            this.groupBox5.Size = new System.Drawing.Size(445, 86);
+            this.groupBox5.TabIndex = 17;
+            this.groupBox5.TabStop = false;
+            this.groupBox5.Text = "操作";
+            // 
+            // label32
+            // 
+            this.label32.AutoSize = true;
+            this.label32.BackColor = System.Drawing.Color.White;
+            this.label32.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label32.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label32.Location = new System.Drawing.Point(280, 24);
+            this.label32.Name = "label32";
+            this.label32.Size = new System.Drawing.Size(58, 21);
+            this.label32.TabIndex = 18;
+            this.label32.Text = "流水号";
+            this.label32.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            this.label32.DoubleClick += new System.EventHandler(this.label32_DoubleClick);
+            // 
+            // label_SerialNum
+            // 
+            this.label_SerialNum.BackColor = System.Drawing.Color.White;
+            this.label_SerialNum.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label_SerialNum.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label_SerialNum.Location = new System.Drawing.Point(269, 51);
+            this.label_SerialNum.Name = "label_SerialNum";
+            this.label_SerialNum.Size = new System.Drawing.Size(80, 29);
+            this.label_SerialNum.TabIndex = 19;
+            this.label_SerialNum.Text = "0";
+            this.label_SerialNum.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // button_Start
+            // 
+            this.button_Start.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.button_Start.ForeColor = System.Drawing.Color.White;
+            this.button_Start.Location = new System.Drawing.Point(352, 21);
+            this.button_Start.Name = "button_Start";
+            this.button_Start.Size = new System.Drawing.Size(87, 57);
+            this.button_Start.TabIndex = 17;
+            this.button_Start.Text = "开始\r\n测试";
+            this.button_Start.UseVisualStyleBackColor = false;
+            this.button_Start.Click += new System.EventHandler(this.button_Start_Click);
+            // 
+            // label_Step
+            // 
+            this.label_Step.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.label_Step.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label_Step.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.label_Step.Location = new System.Drawing.Point(860, 115);
+            this.label_Step.Name = "label_Step";
+            this.label_Step.Size = new System.Drawing.Size(362, 67);
+            this.label_Step.TabIndex = 18;
+            this.label_Step.Text = "准备就绪";
+            this.label_Step.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label_Result
+            // 
+            this.label_Result.BackColor = System.Drawing.Color.Red;
+            this.label_Result.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label_Result.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.label_Result.Location = new System.Drawing.Point(589, 115);
+            this.label_Result.Name = "label_Result";
+            this.label_Result.Size = new System.Drawing.Size(265, 67);
+            this.label_Result.TabIndex = 19;
+            this.label_Result.Text = "不合格";
+            this.label_Result.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // timer1
+            // 
+            this.timer1.Interval = 20;
+            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
+            // 
+            // timer2
+            // 
+            this.timer2.Interval = 1000;
+            this.timer2.Tick += new System.EventHandler(this.timer2_Tick);
+            // 
+            // groupBox7
+            // 
+            this.groupBox7.Controls.Add(this.label3);
+            this.groupBox7.Controls.Add(this.label6);
+            this.groupBox7.Controls.Add(this.textBox_TQ_Start);
+            this.groupBox7.Controls.Add(this.textBox_TQ_K);
+            this.groupBox7.Controls.Add(this.label5);
+            this.groupBox7.Controls.Add(this.textBox_TQ_Zero);
+            this.groupBox7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox7.Location = new System.Drawing.Point(12, 384);
+            this.groupBox7.Name = "groupBox7";
+            this.groupBox7.Size = new System.Drawing.Size(300, 90);
+            this.groupBox7.TabIndex = 14;
+            this.groupBox7.TabStop = false;
+            this.groupBox7.Text = "力矩传感器参数范围";
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.richTextBox_TQ);
+            this.groupBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox1.Location = new System.Drawing.Point(12, 480);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(300, 304);
+            this.groupBox1.TabIndex = 14;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "力矩传感器标定结果";
+            // 
+            // richTextBox_TQ
+            // 
+            this.richTextBox_TQ.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            this.richTextBox_TQ.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.richTextBox_TQ.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.richTextBox_TQ.Location = new System.Drawing.Point(10, 28);
+            this.richTextBox_TQ.Name = "richTextBox_TQ";
+            this.richTextBox_TQ.ReadOnly = true;
+            this.richTextBox_TQ.Size = new System.Drawing.Size(284, 270);
+            this.richTextBox_TQ.TabIndex = 1;
+            this.richTextBox_TQ.Text = "零点1:\n\n零点2:\n\n零点3:\n\n校正系数1:\n校正系数2:\n校正系数3:\n启动值:";
+            // 
+            // groupBox6
+            // 
+            this.groupBox6.Controls.Add(this.richTextBox_ReadCfg);
+            this.groupBox6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox6.Location = new System.Drawing.Point(589, 192);
+            this.groupBox6.Name = "groupBox6";
+            this.groupBox6.Size = new System.Drawing.Size(265, 592);
+            this.groupBox6.TabIndex = 14;
+            this.groupBox6.TabStop = false;
+            this.groupBox6.Text = "电机配置参数";
+            // 
+            // groupBox8
+            // 
+            this.groupBox8.Controls.Add(this.richTextBox_CfgFile);
+            this.groupBox8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.groupBox8.Location = new System.Drawing.Point(318, 192);
+            this.groupBox8.Name = "groupBox8";
+            this.groupBox8.Size = new System.Drawing.Size(265, 592);
+            this.groupBox8.TabIndex = 14;
+            this.groupBox8.TabStop = false;
+            this.groupBox8.Text = "电机配置文件";
+            // 
+            // pictureBox2
+            // 
+            this.pictureBox2.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources._836618239619717251;
+            this.pictureBox2.Location = new System.Drawing.Point(993, 54);
+            this.pictureBox2.Name = "pictureBox2";
+            this.pictureBox2.Size = new System.Drawing.Size(83, 43);
+            this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox2.TabIndex = 31;
+            this.pictureBox2.TabStop = false;
+            // 
+            // pictureBox1
+            // 
+            this.pictureBox1.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources.title1;
+            this.pictureBox1.Location = new System.Drawing.Point(1085, 64);
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.Size = new System.Drawing.Size(136, 33);
+            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox1.TabIndex = 30;
+            this.pictureBox1.TabStop = false;
+            // 
+            // CheckForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.Color.White;
+            this.ClientSize = new System.Drawing.Size(1234, 817);
+            this.Controls.Add(this.pictureBox2);
+            this.Controls.Add(this.pictureBox1);
+            this.Controls.Add(this.label_error_code);
+            this.Controls.Add(this.groupBox6);
+            this.Controls.Add(this.groupBox1);
+            this.Controls.Add(this.groupBox8);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.groupBox7);
+            this.Controls.Add(this.label_Step);
+            this.Controls.Add(this.label_Result);
+            this.Controls.Add(this.groupBox5);
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.label_SystemTime);
+            this.Controls.Add(this.label_NetStatus);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.groupBox4);
+            this.Controls.Add(this.menuStrip1);
+            this.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MainMenuStrip = this.menuStrip1;
+            this.Margin = new System.Windows.Forms.Padding(5);
+            this.MaximizeBox = false;
+            this.Name = "CheckForm";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "检验模式";
+            this.Load += new System.EventHandler(this.CheckForm_Load);
+            this.menuStrip1.ResumeLayout(false);
+            this.menuStrip1.PerformLayout();
+            this.groupBox4.ResumeLayout(false);
+            this.groupBox4.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox5.ResumeLayout(false);
+            this.groupBox5.PerformLayout();
+            this.groupBox7.ResumeLayout(false);
+            this.groupBox7.PerformLayout();
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox6.ResumeLayout(false);
+            this.groupBox8.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.MenuStrip menuStrip1;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuIte_PortSet;
+        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem_PowerKey;
+        private System.Windows.Forms.GroupBox groupBox4;
+        private System.Windows.Forms.ComboBox comboBox_File;
+        private System.Windows.Forms.Label label_SystemTime;
+        public System.Windows.Forms.Label label_NetStatus;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.TextBox textBox_PDinfo;
+        private System.Windows.Forms.GroupBox groupBox5;
+        private System.Windows.Forms.Button button_Start;
+        private System.Windows.Forms.Label label_Step;
+        private System.Windows.Forms.Label label_Result;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.RichTextBox richTextBox_CfgFile;
+        private System.Windows.Forms.RichTextBox richTextBox_ReadCfg;
+        private System.Windows.Forms.RichTextBox richTextBox_TestRecord;
+        private System.Windows.Forms.ToolStripMenuItem 开ToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem 关ToolStripMenuItem;
+        private System.Windows.Forms.Label label_error_code;
+        private System.Windows.Forms.Timer timer2;
+        private System.Windows.Forms.ComboBox comboBox_cfgFileDate;
+        public System.Windows.Forms.CheckBox checkBox_LocalFile;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.TextBox textBox_TQ_Start;
+        private System.Windows.Forms.TextBox textBox_TQ_K;
+        private System.Windows.Forms.TextBox textBox_TQ_Zero;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.RichTextBox richTextBox_VerInfo;
+        private System.Windows.Forms.GroupBox groupBox7;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.RichTextBox richTextBox_TQ;
+        private System.Windows.Forms.GroupBox groupBox6;
+        private System.Windows.Forms.Label label32;
+        private System.Windows.Forms.Label label_SerialNum;
+        private System.Windows.Forms.GroupBox groupBox8;
+        private System.Windows.Forms.Button button1;
+        public System.Windows.Forms.Timer timer1;
+        private System.Windows.Forms.PictureBox pictureBox2;
+        private System.Windows.Forms.PictureBox pictureBox1;
+    }
+}

+ 1372 - 0
CheckForm.cs

@@ -0,0 +1,1372 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading;
+using System.Windows.Forms;
+
+namespace MOTINOVA_Motor_Factory_Set
+{
+    public partial class CheckForm : Form
+    {
+        #region 文件路径
+        public string LocalCfgFilePath = "";
+        public string LogSavePath = "";
+        public string LogSaveFileName = "";
+        #endregion
+
+        #region 端口设置界面
+        public static PortSettings portsettings_form = new PortSettings();
+        #endregion
+
+        #region 力矩传感器判断标准
+        TorqueCheckParam TorqueCheck = new TorqueCheckParam();
+        #endregion
+
+        #region 串口缓存
+        public static List<byte> buffer = new List<byte>(4096);
+        private byte[] binary_data_1 = new byte[1024];
+        #endregion
+
+        #region MC故障码超时计数
+        bool MC_ErrorCode_Refresh = false;
+        ushort MC_ErrorCode_Refresh_Cnt = 0;
+        #endregion
+
+        #region 配置文件信息
+        ArrayList array_CfgInfo = new ArrayList();
+        #endregion
+
+        #region CRC32校验
+        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 (!portsettings_form.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;
+
+            //发送数据
+            portsettings_form.serialPort1.Write(SendCmdTmp, 0, SendCmdTmp.Length);
+        }
+        #endregion
+
+        #region 串口数据解析   
+        private void Serial_DataReceived_Process()
+        {
+            //串口解析
+            byte DataNum = 0;   //记录每条命令数据段的长度
+            while (buffer.Count >= 13)//当buffer中的数据的个数大于等于4个时,即每一帧的数据长度所在位(第4位)出现时
+            {
+                if (buffer[0] == 0x55 && buffer[1] == 0xAA)//判断帧头
+                {
+                    ushort PackageID;
+                    PackageID = (ushort)(buffer[2] * 256 + buffer[3]);
+                    if ((PackageID == 0x0710) || (PackageID == 0x0715) || (PackageID == 0x0610) || (PackageID == 0x0615) || (PackageID == 0x07FF))
+                    {
+                        int CmdLen = buffer[5];
+                        if (buffer.Count < CmdLen + 11) break;//如果接收到的数据没有达到一帧数据的指定长度, 则执行下次循环
+
+                        buffer.RemoveRange(0, 6);//数据达到要求长度后删去帧头,ID,模式,和命令长度
+                        DataNum = (byte)(buffer[1]);//命令字的第二个字节的表示数据位的长度
+                        if (DataNum == (CmdLen - 2))
+                        {
+                            for (int i = 0; i < DataNum + 2; i++)
+                            {
+                                binary_data_1[i] = buffer[i];
+                            }
+                            DataCmdProcess(PackageID);//对于不同的命令段,做不同的处理                          
+                        }
+                        buffer.RemoveRange(0, CmdLen + 5);//解析完成
+                    }
+                    else
+                    {
+                        buffer.RemoveAt(0);//ID不对
+                    }
+                }
+                else
+                {
+                    buffer.RemoveAt(0);//帧头不对,删除帧头高字节
+                }
+            }
+        }
+        #endregion
+
+        #region 故障转换和显示
+        List<string> ErrorInfo = new List<string>{ "过流保护", "低压保护", "过压保护", "堵转保护","过热保护","速度传感器故障","力矩传感器故障","霍尔故障",
+        "马达缺相","NTC故障","","","","MCU故障","踏频传感器故障","指拨故障","MOS短路","电压异常","电路故障","TE故障","TE电路故障","","","","","","","","","",
+        "",""};
+        private string ErrorInfoDisplay(UInt32 Code)
+        {
+            string Result = "";
+            if (Code == 0)
+            {
+                Result = "无故障";
+            }
+            else
+            {
+                for (int i = 0; i < 32; i++)
+                {
+                    if ((Code & 0x01) == 0x01)
+                    {
+                        Result += ErrorInfo[i] + " ";
+                    }
+                    Code >>= 1;
+                }
+            }
+            return Result;
+        }
+        #endregion
+
+        #region 数据解析处理
+        private void DataCmdProcess(ushort ID)
+        {
+            ushort CmdTemp = (ushort)(binary_data_1[0] * 256 + binary_data_1[1]);
+            ushort DataTemp;
+
+            #region 主控信息
+            if ((ID == 0x715) || (ID == 0x710))
+            {
+                switch (CmdTemp)
+                {
+                    case 0x1104://故障码
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    MC_ErrorCode_Refresh = true;
+                                    label_error_code.Text =
+                                        Convert.ToString(binary_data_1[5], 16).PadLeft(2, '0').ToUpper() +
+                                        Convert.ToString(binary_data_1[4], 16).PadLeft(2, '0').ToUpper() +
+                                        Convert.ToString(binary_data_1[3], 16).PadLeft(2, '0').ToUpper() +
+                                        Convert.ToString(binary_data_1[2], 16).PadLeft(2, '0').ToUpper() +
+                                        "H";
+                                    label_error_code.BackColor = Color.Red;
+                                }));
+                            }
+                            break;
+                        }
+
+                    case 0x1240://电机版本信息
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    //电机型号
+                                    richTextBox_VerInfo.Text += "型号:";
+                                    for (ushort i = 0; i < 16; i++)
+                                    {
+                                        if (binary_data_1[2 + i] == 0x2E)
+                                        {
+                                            break;
+                                        }
+                                        richTextBox_VerInfo.Text += ((char)binary_data_1[2 + i]).ToString();                                        
+                                    }
+                                    richTextBox_VerInfo.Text += "\r\n";
+
+                                    //电机SN
+                                    richTextBox_VerInfo.Text += "序列号:";
+                                    for (ushort i = 0; i < 16; i++)
+                                    {
+                                        if (binary_data_1[18 + i] == 0x2E)
+                                        {
+                                            break;
+                                        }
+                                        richTextBox_VerInfo.Text += ((char)binary_data_1[18 + i]).ToString();
+                                    }
+                                    richTextBox_VerInfo.Text += "\r\n";
+
+                                    //电机HW
+                                    richTextBox_VerInfo.Text += "硬件版本:";
+                                    for (ushort i = 0; i < 10; i++)//前10位是PCB版号,以'.'结束
+                                    {
+                                        if (binary_data_1[34 + i] == 0x2E)
+                                        {
+                                            break;
+                                        }
+                                        if (binary_data_1[34 + i] == 'r')
+                                        {
+                                            binary_data_1[34 + i] = (byte)'.';
+                                        }
+                                        richTextBox_VerInfo.Text += ((char)binary_data_1[34 + i]).ToString();
+                                    }
+                                    switch (binary_data_1[34 + 10])//第10位代表MCU品牌
+                                    {
+                                        case (byte)'1':
+                                            richTextBox_VerInfo.Text += " " + "ST" + " "; break;
+                                        case (byte)'2':
+                                            richTextBox_VerInfo.Text += " " + "APM" + " "; break;
+                                        case (byte)'3':
+                                            richTextBox_VerInfo.Text += " " + "HK" + " "; break;
+                                        case (byte)'4':
+                                            richTextBox_VerInfo.Text += " " + "GD" + " "; break;
+                                        default:
+                                            richTextBox_VerInfo.Text += " " + "NULL" + " "; break;
+                                    }
+                                    for (ushort i = 0; i < 4; i++)//后4位是MCU的ID校验码,用于识别板子的ID
+                                    {
+                                        richTextBox_VerInfo.Text += Convert.ToString(binary_data_1[46 + i], 16).PadLeft(2, '0').ToUpper();//MCU ID 的CRC32值
+                                    }
+                                    richTextBox_VerInfo.Text += "\r\n";
+
+                                    //电机FW
+                                    richTextBox_VerInfo.Text += "软件版本:";
+                                    for (ushort i = 0; i < 16; i++)
+                                    {
+                                        if (binary_data_1[50 + i] == 0x2E)
+                                        {
+                                            break;
+                                        }
+                                        if (binary_data_1[50 + i] == 'r')
+                                        {
+                                            binary_data_1[50 + i] = (byte)'.';
+                                        }
+                                        richTextBox_VerInfo.Text += ((char)binary_data_1[50 + i]).ToString();
+                                    }
+                                    richTextBox_VerInfo.Text += "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0x1720://电机程序特性信息
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    //程序特性
+                                    richTextBox_VerInfo.Text += "软件属性:";
+                                    for (ushort i = 0; i < 32; i++)
+                                    {
+                                        if (binary_data_1[2 + i] == 0x2E)
+                                        {
+                                            break;
+                                        }
+                                        if (binary_data_1[2 + i] == 'r')
+                                        {
+                                            binary_data_1[2 + i] = (byte)'.';
+                                        }
+                                        richTextBox_VerInfo.Text += ((char)binary_data_1[2 + i]).ToString();
+                                    }
+                                    richTextBox_VerInfo.Text += "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA020://用户参数1
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "[用户参数1]" + "\r\n";
+                                    richTextBox_ReadCfg.Text += "启动模式," + binary_data_1[3].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "停机时间," + ((ushort)(binary_data_1[5] * 256 + binary_data_1[4])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "限速值," + binary_data_1[6].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "下降速度," + binary_data_1[7].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "前飞," + binary_data_1[8].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "后飞," + binary_data_1[9].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "限流," + binary_data_1[10].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "温度预警," + (binary_data_1[11] - 40).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "温度保护," + (binary_data_1[12] - 40).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "码表," + binary_data_1[13].ToString()+",";
+                                    richTextBox_ReadCfg.Text += ((binary_data_1[13] == 0x55) ? "有" : "无") + "\r\n";
+                                    richTextBox_ReadCfg.Text += "轮胎周长," + binary_data_1[14].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "系列号," + binary_data_1[15].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "ECO增益," + binary_data_1[16].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "ECO加速," + binary_data_1[17].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "NORM增益," + binary_data_1[18].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "NORM加速," + binary_data_1[19].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "SPORT增益," + binary_data_1[20].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "SPORT加速," + binary_data_1[21].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "TURBO增益," + binary_data_1[22].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "TURBO加速," + binary_data_1[23].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "SMART增益," + binary_data_1[24].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "SMART加速," + binary_data_1[25].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "车速级数," + binary_data_1[26].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "踏频启动," + binary_data_1[27].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "指拨模式," + binary_data_1[2].ToString() + ",";
+                                    richTextBox_ReadCfg.Text += ((binary_data_1[2] == 0x55) ? "不支持" : "支持") + "\r\n";
+                                    richTextBox_ReadCfg.Text += "速度信号来源," + binary_data_1[28].ToString() + ",";
+                                    richTextBox_ReadCfg.Text += ((binary_data_1[28] == 0x55) ? "传感器" :
+                                                                (binary_data_1[28] == 0xAA) ? "踏频" :
+                                                                (binary_data_1[28] == 0xEE) ? "通信" : "") + "\r\n";
+                                    richTextBox_ReadCfg.Text += "周长微调," + ((int)binary_data_1[29]).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "低压保护," + ((ushort)(binary_data_1[31] * 256 + binary_data_1[30])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "推行限速," + binary_data_1[32].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "推行转速," + binary_data_1[33].ToString() + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA110://马达参数
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                    richTextBox_ReadCfg.Text += "[马达参数]" + "\r\n";
+                                    richTextBox_ReadCfg.Text += "额定功率," + ((ushort)(binary_data_1[3] * 256 + binary_data_1[2])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "额定转速," + ((ushort)(binary_data_1[5] * 256 + binary_data_1[4])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "定子电阻," + ((ushort)(binary_data_1[7] * 256 + binary_data_1[6])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "定子Lq," + ((ushort)(binary_data_1[9] * 256 + binary_data_1[8])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "定子Ld," + ((ushort)(binary_data_1[11] * 256 + binary_data_1[10])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "反电动势," + ((ushort)(binary_data_1[13] * 256 + binary_data_1[12])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "额定电压," + binary_data_1[14].ToString() + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA318://单传感器零点值
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_TQ.Text += "零点:";
+                                    for (int i = 0; i < 12; i++)
+                                    {
+                                        richTextBox_TQ.Text += ((ushort)((binary_data_1[3 + 2 * i] << 8) + binary_data_1[2 + 2 * i])).ToString() + ", ";
+                                    }
+                                    richTextBox_TQ.Text = richTextBox_TQ.Text.Substring(0, richTextBox_TQ.Text.Length - 2) + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA408://校验秘钥
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "校验密钥,";
+                                    for (int i = 0; i < 8; i++)
+                                    {
+                                        richTextBox_ReadCfg.Text += ((char)binary_data_1[2+i]).ToString();
+                                    }
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA520://生产信息
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                    richTextBox_ReadCfg.Text += "[其它信息]" + "\r\n";
+                                    richTextBox_ReadCfg.Text += "生产商,";
+                                    for (int i = 0; i < 8; i++)
+                                    {
+                                        if (binary_data_1[2 + i] == '.') break;
+                                        richTextBox_ReadCfg.Text += ((char)binary_data_1[2 + i]).ToString();
+                                    }
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                    richTextBox_ReadCfg.Text += "生产地,";
+                                    for (int i = 0; i < 8; i++)
+                                    {
+                                        if (binary_data_1[10 + i] == '.') break;
+                                        richTextBox_ReadCfg.Text += ((char)binary_data_1[10 + i]).ToString();
+                                    }
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                    richTextBox_ReadCfg.Text += "生产日期,";
+                                    for (int i = 0; i < 8; i++)
+                                    {
+                                        if (binary_data_1[18 + i] == '.') break;
+                                        richTextBox_ReadCfg.Text += ((char)binary_data_1[18 + i]).ToString();
+                                    }
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA610://自定义1
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "信息1,";
+                                    for (int i = 0; i < 16; i++)
+                                    {
+                                        if (binary_data_1[2 + i] == '.') break;
+                                        richTextBox_ReadCfg.Text += ((char)binary_data_1[2 + i]).ToString();
+                                    }
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA710://自定义2
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "信息2,";
+                                    for (int i = 0; i < 16; i++)
+                                    {
+                                        if (binary_data_1[2 + i] == '.') break;
+                                        richTextBox_ReadCfg.Text += ((char)binary_data_1[2 + i]).ToString();
+                                    }
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA810://自定义3
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "信息3,";
+                                    for (int i = 0; i < 16; i++)
+                                    {
+                                        if (binary_data_1[2 + i] == '.') break;
+                                        richTextBox_ReadCfg.Text += ((char)binary_data_1[2 + i]).ToString();
+                                    }
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xA903://写入反馈
+                        {
+                            
+                            break;
+                        }
+                    case 0xAA04://单传感器校正值
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_TQ.Text += "校正系数:";
+                                    richTextBox_TQ.Text += ((float)binary_data_1[4] / 100f).ToString("#0.00") + "\r\n";
+                                    richTextBox_TQ.Text += "启动值:";
+                                    richTextBox_TQ.Text += ((ushort)((binary_data_1[3] << 8) + binary_data_1[2])).ToString() + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xAD20://用户参数2
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_ReadCfg.Text += "\r\n";
+                                    richTextBox_ReadCfg.Text += "[用户参数2]" + "\r\n";
+                                    richTextBox_ReadCfg.Text+="姿态传感器," + binary_data_1[6].ToString() + ",";
+                                    richTextBox_ReadCfg.Text += ((binary_data_1[6] == 0x55) ? "不支持" : "支持") + "\r\n";
+                                    richTextBox_ReadCfg.Text += "俯仰角零偏," + ((ushort)(binary_data_1[3] * 256 + binary_data_1[2])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "横滚角零偏," + ((ushort)(binary_data_1[5] * 256 + binary_data_1[4])).ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "尾灯模式," + binary_data_1[7].ToString() + "\r\n";
+                                    richTextBox_ReadCfg.Text += "前灯电压," + binary_data_1[8].ToString() + ",";
+                                    richTextBox_ReadCfg.Text += ((binary_data_1[8] == 0xFF) ? "随电池" : (binary_data_1[8] == 0) ? "硬件配置" : (binary_data_1[8].ToString() + "V")) + "\r\n";
+                                    richTextBox_ReadCfg.Text += "尾灯电压," + binary_data_1[9].ToString() + ",";
+                                    richTextBox_ReadCfg.Text += ((binary_data_1[9] == 0xFF) ? "随电池" : (binary_data_1[9] == 0) ? "硬件配置" : (binary_data_1[9].ToString() + "V")) + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xAE1A://三传感器零点
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_TQ.Text += "传感器" + binary_data_1[2].ToString() + "零点:";
+                                    for (int i = 0; i < 12; i++)
+                                    {
+                                        richTextBox_TQ.Text += ((ushort)((binary_data_1[4 + 2 * i] << 8) + binary_data_1[3 + 2 * i])).ToString() + ", ";
+                                    }
+                                    richTextBox_TQ.Text = richTextBox_TQ.Text.Substring(0, richTextBox_TQ.Text.Length - 2) + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xAF02://三传感器校正系数
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_TQ.Text += "传感器" + binary_data_1[2].ToString() + "校正系数:";
+                                    richTextBox_TQ.Text += ((float)binary_data_1[3] / 100f).ToString("#0.00") + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+                    case 0xB002://三传感器启动值
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    richTextBox_TQ.Text += "启动值:";
+                                    richTextBox_TQ.Text += ((ushort)((binary_data_1[3] << 8) + binary_data_1[2])).ToString() + "\r\n";
+                                }));
+                            }
+                            break;
+                        }
+
+                    default: break;
+                }
+            }
+            #endregion
+
+            #region TE信息
+            else if ((ID == 0x615) || (ID == 0x610))
+            {
+                switch (CmdTemp)
+                {
+                    case 0x1240://TE APP版本信息
+                        {
+                            unchecked
+                            {
+                                this.Invoke((EventHandler)(delegate
+                                {
+                                    //TE 软件版本
+                                    richTextBox_VerInfo.Text += "TE软件版本:";
+                                    for (ushort i = 0; i < 16; i++)
+                                    {
+                                        if (binary_data_1[50 + i] == 0x2E)
+                                        {
+                                            break;
+                                        }
+                                        if (binary_data_1[50 + i] == 'r')
+                                        {
+                                            binary_data_1[50 + i] = (byte)'.';
+                                        }
+                                        richTextBox_VerInfo.Text += ((char)binary_data_1[50 + i]).ToString();
+                                    }
+                                }));
+                            }
+                            break;
+                        }
+                    default: break;
+                }
+                #endregion
+
+            }
+        }
+        #endregion
+
+        #region 20ms定时器
+        private void timer1_Tick(object sender, EventArgs e)
+        {
+            //串口数据解析
+            Serial_DataReceived_Process();
+        }
+        #endregion
+
+        #region 非独占性延时函数
+        public static void Delay_ms(int milliSecond)
+        {
+            int start = Environment.TickCount;
+            while (Math.Abs(Environment.TickCount - start) < milliSecond)//毫秒
+            {
+                Application.DoEvents();
+            }
+        }
+        #endregion
+
+        #region 获取配置文件日期
+        private void GetDateList()
+        {
+            string[] DateList = { "" };
+            if (checkBox_LocalFile.Checked == true)//从本地更新日期列表
+            {
+                DateList = System.IO.Directory.GetDirectories(LocalCfgFilePath);
+            }
+            else//从服务器更新日期列表
+            {
+                DateList = StartForm.myFtp.GetDirectoryList(StartForm.myServerCfg.RootPath + "/cfg");
+            }
+            comboBox_cfgFileDate.Items.Clear();
+            foreach (var file in DateList)
+            {
+                comboBox_cfgFileDate.Items.Add(file.Substring(file.LastIndexOf("\\") + 1));
+            }
+        }
+        #endregion
+
+        #region 获取配置文件列表
+        private void GetFileListFrom(string date)
+        {
+            string[] FileList = { "" };
+            if (checkBox_LocalFile.Checked == true)//从本地更新文件列表
+            {
+                FileList = System.IO.Directory.GetFiles(LocalCfgFilePath + date);
+            }
+            else//从服务器更新文件列表
+            {
+                FileList = StartForm.myFtp.GetFileNameList(StartForm.myServerCfg.RootPath + "/cfg/" + date);
+            }
+            comboBox_File.Items.Clear();
+            foreach (var file in FileList)
+            {
+                comboBox_File.Items.Add(file.Substring(file.LastIndexOf("\\") + 1));
+            }
+        }
+        #endregion
+
+        #region 选择文件日期后更新文件列表
+        private void comboBox_cfgFileDate_SelectionChangeCommitted(object sender, EventArgs e)
+        {
+            comboBox_File.Text = "";
+            GetFileListFrom(comboBox_cfgFileDate.SelectedItem.ToString());
+        }
+        #endregion
+
+        #region 选择文件后加载文件
+        private void comboBox_File_SelectionChangeCommitted(object sender, EventArgs e)
+        {
+            //清空原来数据
+            array_CfgInfo.Clear();
+            string SelectFile = "";
+            if (checkBox_LocalFile.Checked == false)//从服务器下载文件
+            {
+                SelectFile = comboBox_cfgFileDate.SelectedItem.ToString() + "\\" + comboBox_File.SelectedItem.ToString();
+                if (!File.Exists(LocalCfgFilePath + SelectFile))//检查本地是否存在选定文件
+                {
+                    SelectFile = comboBox_cfgFileDate.SelectedItem.ToString() + "/" + comboBox_File.SelectedItem.ToString();
+                    StartForm.myFtp.DownLoadNotReName(StartForm.myServerCfg.RootPath + "/cfg/" + SelectFile, LocalCfgFilePath + comboBox_cfgFileDate.SelectedItem.ToString());
+
+                }
+            }
+            SelectFile = comboBox_cfgFileDate.SelectedItem.ToString() + "\\" + comboBox_File.SelectedItem.ToString();
+            //打开选中文件
+            StreamReader objReader = new StreamReader(LocalCfgFilePath + SelectFile);
+            string sLine = "";
+            while (sLine != null)
+            {
+                sLine = objReader.ReadLine();
+                array_CfgInfo.Add(sLine);
+            }
+            objReader.Close();
+            //解析显示配置文件
+            richTextBox_CfgFile.Text = "";
+            try
+            {
+                foreach (string sOutput in array_CfgInfo)
+                {
+                    if (sOutput.Contains("[测试阈值]"))
+                    {
+                        //删除最后一行,不显示后面内容
+                        richTextBox_CfgFile.Text = richTextBox_CfgFile.Text.Remove(richTextBox_CfgFile.Text.Length - 1);
+                        break;
+                    }
+                    richTextBox_CfgFile.AppendText(sOutput + "\r\n");
+                }
+            }
+            catch (System.Exception)
+            {
+                return;
+            }
+            //加载力矩传感器判断标准
+            TorqueCheck.CheckParam_Load(LocalCfgFilePath + SelectFile);
+            textBox_TQ_Zero.Text = TorqueCheck.Zero_Min.ToString() + " - " + TorqueCheck.Zero_Max.ToString();
+            textBox_TQ_K.Text = TorqueCheck.Cal_K_Min.ToString("#0.00") + " - " + TorqueCheck.Cal_K_Max.ToString("#0.00");
+            textBox_TQ_Start.Text = TorqueCheck.Start_Min.ToString() + " - " + TorqueCheck.Start_Max.ToString(); 
+        }
+        #endregion
+
+        #region 修改获取文件方式,本地或服务器
+        private void checkBox_LocalFile_CheckedChanged(object sender, EventArgs e)
+        {
+            comboBox_cfgFileDate.Text = "";
+            comboBox_File.Text = "";
+            GetDateList();
+        }
+        #endregion
+
+
+        public CheckForm()
+        {
+            InitializeComponent();
+            System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
+        }
+
+        #region 端口设置
+        private void toolStripMenuIte_PortSet_Click(object sender, EventArgs e)
+        {
+            portsettings_form.Show();
+        }
+        #endregion
+
+        #region 打开电源
+        private void 开ToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            byte[] Data = new byte[1];
+
+            if (portsettings_form.serialPort1.IsOpen)
+            {
+                //开机
+                Data[0] = 0xF1;
+                SendCmd(0x7FF, 0x16, 0x2201, Data);
+                开ToolStripMenuItem.Checked = true;
+                关ToolStripMenuItem.Checked = false;
+            }
+            else
+            {
+                MessageBox.Show("串口未连接");
+                return;
+            }
+        }
+        #endregion
+
+        #region 关闭电源
+        private void 关ToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            byte[] Data = new byte[1];
+
+            if (portsettings_form.serialPort1.IsOpen)
+            {
+                //关机
+                Data[0] = 0xF0;
+                SendCmd(0x7FF, 0x16, 0x2201, Data);
+                开ToolStripMenuItem.Checked = false;
+                关ToolStripMenuItem.Checked = true;
+            }
+            else
+            {
+                MessageBox.Show("串口未连接");
+                return;
+            }
+        }
+        #endregion
+
+        #region 1s定时器更新时间
+        private void timer2_Tick(object sender, EventArgs e)
+        {
+            label_SystemTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+            //MC故障信息超时清除
+            if (MC_ErrorCode_Refresh == false)
+            {
+                MC_ErrorCode_Refresh_Cnt++;
+                if (MC_ErrorCode_Refresh_Cnt > 5)
+                {
+                    label_error_code.Text = "OK";
+                    label_error_code.BackColor = Color.Green;
+                    MC_ErrorCode_Refresh_Cnt = 0;
+                }
+            }
+            else
+            {
+                MC_ErrorCode_Refresh_Cnt = 0;
+            }
+            MC_ErrorCode_Refresh = false;
+        }
+        #endregion
+
+        #region 故障码标签鼠标滑过显示故障内容
+        private void label_error_code_MouseHover(object sender, EventArgs e)
+        {
+            // 创建the ToolTip 
+            ToolTip toolTip1 = new ToolTip();
+
+            // 设置显示样式
+            toolTip1.AutoPopDelay = 30000;//提示信息的可见时间
+            toolTip1.InitialDelay = 50;//事件触发多久后出现提示
+            toolTip1.ReshowDelay = 50;//指针从一个控件移向另一个控件时,经过多久才会显示下一个提示框
+            toolTip1.ShowAlways = true;//是否显示提示框
+
+            //  设置伴随的对象.
+            string ErrorCode = this.label_error_code.Text;
+            UInt32 Code = ErrorCode.Contains("H") ? Convert.ToUInt32(ErrorCode.Split('H')[0], 16) : 0;
+
+            toolTip1.SetToolTip(this.label_error_code, ErrorInfoDisplay(Code));//设置故障内容显示
+        }
+        #endregion
+
+        //创建线程执行一次测试任务
+        /*
+        执行流程如下:
+        1、读取电机版本信息 -> 确认SN是否存在为0、确认版本和cfg文件是否一致;
+        2、读取力矩传感器标定值 -> 依次判断零点、校正系数、启动值是否在允许范围内,判断零点值差异是否过大
+        3、依次读取配置参数,严格按照cfg文件的顺序读取 -> 对比两个richbox内容是否一致
+        4、显示测试结果
+        5、存储测试结果,上传ftp服务器
+        */
+        private void Thread_Task()
+        {
+            //开始测试
+            richTextBox_TestRecord.Text += "电机信息:" + textBox_PDinfo.Text + "\r\n";
+            richTextBox_TestRecord.Text += "配置文件:" + comboBox_File.Text + "\r\n";
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "开始测试" + "\r\n";
+            label_Result.Text = "不合格";
+            label_Result.BackColor = Color.Red;
+            label_Step.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+
+            //公有变量
+            var Code = new byte[32];//发送的指令数据
+
+            #region 版本查询和确认
+            label_Step.Text = "检查版本信息";
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "发送指令查询版本信息" + "\r\n";
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1200, null);
+            Delay_ms(200);
+            SendCmd((ushort)0x651, (byte)0x11, (ushort)0x1200, null);
+            Delay_ms(200);
+            string FW_Version_Check = comboBox_File.Text.Split('_')[2] + "_" + comboBox_File.Text.Split('_')[3];
+            string FW_Version_Result = "";
+            string TE_FW_Ver_Check = comboBox_File.Text.Split('_')[4] + "_" + comboBox_File.Text.Split('_')[5];
+            string TE_FW_Ver_Result = "";
+            try
+            {
+                FW_Version_Result = richTextBox_VerInfo.Lines[3].Split(':')[1];
+                FW_Version_Result = FW_Version_Result.Split('_')[0] + richTextBox_VerInfo.Lines[4].Split('-')[2].Replace('V', '.') + "_" + FW_Version_Result.Split('_')[1];
+                TE_FW_Ver_Result = richTextBox_VerInfo.Lines[5].Split(':')[1];
+            }
+            catch (System.Exception)
+            {
+                label_Step.Text = "版本错误,,测试结束!";
+                label_Step.ForeColor = Color.Red;
+            }
+            if (string.Equals(FW_Version_Check, FW_Version_Result) == false) //主控版本错误,直接结束
+            {
+                richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "主控版本错误" + "\r\n";
+                label_Step.Text = "主控软件版本错误,测试结束!";
+                label_Step.ForeColor = Color.Red;
+                button_Start.Enabled = true;
+                ErrorSaveLog();
+                return;
+            }
+            else
+            {
+                if (string.Equals(TE_FW_Ver_Check, TE_FW_Ver_Result) == false) //TE版本错误,给出提示
+                {
+                    if (MessageBox.Show("TE版本错误,请确认主控板是否为HK?", "TE版本错误", MessageBoxButtons.YesNo) == DialogResult.No)
+                    {
+                        richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "TE版本错误" + "\r\n";
+                        label_Step.Text = "TE软件版本错误,测试结束!";
+                        label_Step.ForeColor = Color.Red;
+                        button_Start.Enabled = true;
+                        ErrorSaveLog();
+                        return;
+                    }
+                }
+
+                if (string.Equals(richTextBox_VerInfo.Lines[0].Split(':')[1], textBox_PDinfo.Text.Substring(0, textBox_PDinfo.Text.LastIndexOf(' '))) == false)//型号不一致
+                {
+                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "型号错误" + "\r\n";
+                    label_Step.Text = "型号不一致,测试结束!";
+                    label_Step.ForeColor = Color.Red;
+                    button_Start.Enabled = true;
+                    ErrorSaveLog();
+                    return;
+                }
+                if (string.Equals(richTextBox_VerInfo.Lines[1].Split(':')[1], textBox_PDinfo.Text.Remove(0, textBox_PDinfo.Text.LastIndexOf(' ') + 1)) == false)//SN不一致
+                {
+                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "SN错误" + "\r\n";
+                    label_Step.Text = "SN不一致,测试结束!";
+                    label_Step.ForeColor = Color.Red;
+                    button_Start.Enabled = true;
+                    ErrorSaveLog();
+                    return;
+                }
+                richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "版本信息正确" + "\r\n";
+            }
+            Delay_ms(1000);
+            #endregion
+
+            #region 判断力矩传感器的标定值是否在允许范围内
+            label_Step.Text = "判断力矩传感器";
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "发送指令查询力矩传感器" + "\r\n";
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x2000, null);//单传感器零点
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x2900, null);//单传感器校正信息
+            Delay_ms(200);
+            Code[0] = 1;
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3201, Code);//传感器1零点
+            Delay_ms(200);
+            Code[0] = 2;
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3201, Code);//传感器2零点
+            Delay_ms(200);
+            Code[0] = 3;
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3201, Code);//传感器3零点
+            Delay_ms(200);
+            Code[0] = 1;
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3301, Code);//传感器1校正系数
+            Delay_ms(200);
+            Code[0] = 2;
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3301, Code);//传感器2校正系数
+            Delay_ms(200);
+            Code[0] = 3;
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3301, Code);//传感器3校正系数
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3500, null);//三传感器启动值
+            Delay_ms(200);
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "判断力矩传感器" + "\r\n";
+            for (int i = 0; i < richTextBox_TQ.Lines.Length; i++)
+            {
+                switch (richTextBox_TQ.Lines[i].Split(':')[0])
+                {
+                    case "零点": case "传感器1零点": case "传感器2零点": case "传感器3零点":
+                        {
+                            string[] zero = richTextBox_TQ.Lines[i].Split(':')[1].Split(new string[] { ", " }, StringSplitOptions.None);
+                            for (int j = 0; j < zero.Length; j++)
+                            {
+                                if ((Convert.ToUInt16(zero[j]) > TorqueCheck.Zero_Max) || (Convert.ToUInt16(zero[j]) < TorqueCheck.Zero_Min))//零点超差
+                                {
+                                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "传感器零点超范围" + "\r\n";
+                                    label_Step.Text = "传感器零点超范围,测试结束!";
+                                    label_Step.ForeColor = Color.Red;
+                                    button_Start.Enabled = true;
+                                    ErrorSaveLog();
+                                    return;
+                                }
+                            }
+                            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + richTextBox_TQ.Lines[i].Split(':')[0] + "正常" + "\r\n";
+                            break;
+                        }
+                    case "校正系数": case "传感器1校正系数": case "传感器2校正系数": case "传感器3校正系数":
+                        {
+                            ushort k = (ushort)(Convert.ToSingle(richTextBox_TQ.Lines[i].Split(':')[1]) * 100);
+                            if ((k > (ushort)(TorqueCheck.Cal_K_Max * 100f)) || (k < (ushort)(TorqueCheck.Cal_K_Min * 100f)))//校正系数超差
+                            {
+                                richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "校正系数超范围" + "\r\n";
+                                label_Step.Text = "校正系数超范围,测试结束!";
+                                label_Step.ForeColor = Color.Red;
+                                button_Start.Enabled = true;
+                                ErrorSaveLog();
+                                return;
+                            }
+                            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + richTextBox_TQ.Lines[i].Split(':')[0] + "正常" + "\r\n";
+                            break;
+                        }
+                    case "启动值":
+                        {
+                            string start = richTextBox_TQ.Lines[i].Split(':')[1];
+                            if ((Convert.ToUInt16(start) > TorqueCheck.Start_Max) || (Convert.ToUInt16(start) < TorqueCheck.Start_Min))//启动值超差
+                            {
+                                richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "启动值超范围" + "\r\n";
+                                label_Step.Text = "启动值超范围,测试结束!";
+                                label_Step.ForeColor = Color.Red;
+                                button_Start.Enabled = true;
+                                ErrorSaveLog();
+                                return;
+                            }
+                            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + richTextBox_TQ.Lines[i].Split(':')[0] + "正常" + "\r\n";
+                            break;
+                        }
+                    default:break;
+                }
+            }
+
+            #endregion
+
+            #region 依次读取配置参数
+            label_Step.Text = "判断配置参数";
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "发送指令查询电机配置参数" + "\r\n";
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1A00, null);//用户参数1
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x3000, null);//用户参数2
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1C00, null);//马达参数
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1F00, null);//生产信息
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1000, null);//校验秘钥
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1300, null);//自定义1
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1500, null);//自定义2
+            Delay_ms(200);
+            SendCmd((ushort)0x751, (byte)0x11, (ushort)0x1700, null);//自定义3
+            Delay_ms(200);
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "判断配置参数" + "\r\n";
+            for (int line = 0; line < richTextBox_CfgFile.Lines.Length; line++)
+            {
+                try
+                {
+                    if (richTextBox_ReadCfg.Lines[line].Equals(richTextBox_CfgFile.Lines[line]) == false)
+                    {
+                        richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + richTextBox_CfgFile.Lines[line].Split(',')[0] + "错误" + "\r\n";
+                        label_Step.Text = "检查配置参数失败,测试结束!";
+                        label_Step.ForeColor = Color.Red;
+                        button_Start.Enabled = true;
+                        ErrorSaveLog();
+                        return;
+                    }
+                }
+                catch (System.Exception)
+                {
+                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "读取电机配置参数失败" + "\r\n";
+                    label_Step.Text = "检查配置参数失败,测试结束!";
+                    label_Step.ForeColor = Color.Red;
+                    button_Start.Enabled = true;
+                    ErrorSaveLog();
+                    return;
+                }
+            }
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "电机配置参数正确" + "\r\n";
+            #endregion
+            #region 测试结束
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" +  "测试结束" + "\r\n";
+            label_Step.Text = "测试结束!";
+            label_Step.ForeColor = Color.Green;
+            label_Result.Text = "合格";
+            label_Result.BackColor = Color.Green;
+            button_Start.Enabled = true;
+
+            #region 按照产品信息设置测试文件路径
+            string ResultPathName = textBox_PDinfo.Text + "_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_");
+            if (System.IO.Directory.Exists(LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName) == false)
+                System.IO.Directory.CreateDirectory(LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName);
+            #endregion
+
+            //页面存储
+            Bitmap bit = new Bitmap(this.Width, this.Height);//实例化一个和窗体一样大的bitmap
+            Graphics g = Graphics.FromImage(bit);
+            g.CopyFromScreen(this.Left, this.Top, 0, 0, new Size(this.Width, this.Height));//保存整个窗体为图片  
+            LogSaveFileName = LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName + "\\测试记录" + ".png";
+            bit.Save(LogSaveFileName);
+            //测试页面上传服务器
+            if (StartForm.myFtp.IsNetConnected == true)
+            {
+                string DateNow = DateTime.Now.ToString("yyyy-MM-dd");
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/qcTest/log/", DateNow) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/qcTest/log/" + DateNow);
+                }
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/qcTest/log/", DateNow + "/" + ResultPathName) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/qcTest/log/" + DateNow + "/" + ResultPathName);
+                }
+                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/qcTest/log/" + DateNow + "/" + ResultPathName);
+                if (result == true)
+                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "测试页面上传服务器成功" + "\r\n";
+            }
+            //电机数据存储
+            LogSaveFileName = LogSavePath + "\\log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName + "\\电机参数" + ".txt";
+            string fileInfo = "";
+            fileInfo += "检验记录:\r\n" + richTextBox_TestRecord.Text.Replace("\n", "\r\n") + "\r\n\r\n";
+            fileInfo += "电机生产参数:\r\n";
+            fileInfo += richTextBox_CfgFile.Text.Replace("\n", "\r\n") + "\r\n\r\n";
+            fileInfo += "电机版本信息查询:\r\n";
+            fileInfo += richTextBox_VerInfo.Text.Replace("\n", "\r\n") + "\r\n\r\n";
+            fileInfo += "力矩传感器标定结果:\r\n";
+            fileInfo += richTextBox_TQ.Text.Replace("\n", "\r\n") + "\r\n\r\n";
+            fileInfo += "电机参数查询:\r\n";
+            fileInfo += richTextBox_ReadCfg.Text.Replace("\n", "\r\n") + "\r\n\r\n";
+            fileInfo += "电机故障码:\r\n";
+            fileInfo += label_error_code.Text.Replace("\n", "\r\n") + "\r\n\r\n";
+            fileInfo += "测试结果:\r\n";
+            fileInfo += label_Result.Text.Replace("\n", "\r\n") + "\r\n\r\n";
+            System.IO.File.WriteAllText(LogSaveFileName, fileInfo);
+            //电机数据上传服务器
+            if (StartForm.myFtp.IsNetConnected == true)
+            {
+                string DateNow = DateTime.Now.ToString("yyyy-MM-dd");
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/qcTest/log/", DateNow) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/qcTest/log/" + DateNow);
+                }
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/qcTest/log/" + DateNow, ResultPathName) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/qcTest/log/" + DateNow + "/" + ResultPathName);
+                }
+                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/qcTest/log/" + DateNow + "/" + ResultPathName);
+                if (result == true)
+                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "电机数据上传服务器成功" + "\r\n";
+            }
+            #endregion
+        }
+
+        private void CheckForm_Load(object sender, EventArgs e)
+        {
+            timer1.Enabled = true;
+            timer2.Enabled = true;
+
+            //窗口加载时,从FTP服务器或本地获取文件日期列表
+            GetDateList();
+            //装载序列号文件
+            string cfg_file = System.IO.Directory.GetCurrentDirectory() + "\\SerialNum";
+            StreamReader objReader = new StreamReader(cfg_file);
+            string sLine = "";
+            ArrayList arrText = new ArrayList();//创建一个动态数组
+            while (sLine != null)
+            {
+                sLine = objReader.ReadLine();
+                arrText.Add(sLine);
+            }
+            objReader.Close();
+            label_SerialNum.Text = arrText[1].ToString();//流水号
+        }
+
+        //测试失败存储测试界面
+        private void ErrorSaveLog()
+        {
+            //页面存储
+            Bitmap bit = new Bitmap(this.Width, this.Height);//实例化一个和窗体一样大的bitmap
+            Graphics g = Graphics.FromImage(bit);
+            g.CopyFromScreen(this.Left, this.Top, 0, 0, new Size(this.Width, this.Height));//保存整个窗体为图片  
+            string LogSaveFileName = LogSavePath + "\\errorlog\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\";
+            if (System.IO.Directory.Exists(LogSaveFileName) == false)
+                System.IO.Directory.CreateDirectory(LogSaveFileName);
+            LogSaveFileName += textBox_PDinfo.Text + "_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_") + "_测试记录" + ".png";
+            bit.Save(LogSaveFileName);
+            //测试页面上传服务器
+            if (StartForm.myFtp.IsNetConnected == true)
+            {
+                string DateNow = DateTime.Now.ToString("yyyy-MM-dd");
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/qcTest/errorlog/", DateNow) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/qcTest/errorlog/" + DateNow);
+                }
+                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/qcTest/errorlog/" + DateNow);
+                if (result == true)
+                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "测试异常页面上传服务器成功" + "\r\n";
+            } 
+        }
+
+        //开始测试按钮点击
+        private void button_Start_Click(object sender, EventArgs e)
+        {
+            TestStart();
+        }
+        
+        //开始一次测试
+        private void TestStart()
+        { 
+            //检查是否有故障
+            if (label_error_code.Text != "OK")
+            {
+                label_Step.Text = "电机存在故障!";
+                ErrorSaveLog();
+                return;
+            }
+
+            //显示数据清空
+            richTextBox_ReadCfg.Text = "";
+            richTextBox_TestRecord.Text = "";
+            richTextBox_TQ.Text = "";
+            richTextBox_VerInfo.Text = "";
+
+            if (!portsettings_form.serialPort1.IsOpen)
+            {
+                label_Step.Text = "串口未连接!";
+                return;
+            }
+
+            #region 检查配置文件
+            if (comboBox_File.Items.Count == 0) //配置文件目录为空
+            {
+                label_Step.Text = "无可用配置文件!";
+                return;
+            }
+            if (comboBox_File.Text.Trim().Length == 0)//未选择配置文件
+            {
+                label_Step.Text = "请选择配置文件!";
+                return;
+            }
+            #endregion
+
+            #region 检查产品信息是否符合格式要求
+            try
+            {
+                string Mode = textBox_PDinfo.Text.Split(new string[] { "  " }, StringSplitOptions.None)[0];
+                string Sn = textBox_PDinfo.Text.Split(new string[] { "  " }, StringSplitOptions.None)[1];
+                Regex regex = new Regex(@"^M[12][0-9](0?[1-9]|1[0-2])((0?[1-9])|((1|2)[0-9])|30|31)[A-Z]\d{4}[A-Z]$");
+                if (regex.IsMatch(Sn) == false)
+                {
+                    label_Step.Text = "SN格式错误!";
+                    label_Step.ForeColor = Color.Red;
+                    return;
+                }
+            }
+            catch (System.Exception ex)
+            {
+                label_Step.Text = "标签格式错误!";
+                label_Step.ForeColor = Color.Red;
+                return;
+            }
+            #endregion
+
+            //流水号累加和存储
+            label_SerialNum.Text = (Convert.ToInt32(label_SerialNum.Text) + 1).ToString();
+            string cfg_file = System.IO.Directory.GetCurrentDirectory() + "\\SerialNum";
+            StreamReader objReader = new StreamReader(cfg_file);
+            string sLine = "";
+            ArrayList arrText = new ArrayList();//创建一个动态数组
+            while (sLine != null)
+            {
+                sLine = objReader.ReadLine();
+                arrText.Add(sLine);
+            }
+            arrText.RemoveAt(arrText.Count - 1);
+            objReader.Close();
+            arrText[1] = label_SerialNum.Text;
+            using (StreamWriter file = new StreamWriter(cfg_file))
+            {
+                foreach (var entry in arrText)
+                {
+                    file.WriteLine(entry);
+                }
+            }
+
+            button_Start.Enabled = false;
+
+            //创建线程,执行测试任务
+            Thread th = new Thread(Thread_Task);
+            th.Start();
+
+        }
+
+        //双击清零流水号
+        private void label32_DoubleClick(object sender, EventArgs e)
+        {
+            //流水号清零
+            if (MessageBox.Show("流水号清零", "确认清零?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+            {
+                label_SerialNum.Text = "0";
+                //存储
+                string cfg_file = System.IO.Directory.GetCurrentDirectory() + "\\SerialNum";
+                StreamReader objReader = new StreamReader(cfg_file);
+                string sLine = "";
+                ArrayList arrText = new ArrayList();//创建一个动态数组
+                while (sLine != null)
+                {
+                    sLine = objReader.ReadLine();
+                    arrText.Add(sLine);
+                }
+                arrText.RemoveAt(arrText.Count - 1);
+                objReader.Close();
+                arrText[1] = label_SerialNum.Text;
+                using (StreamWriter file = new StreamWriter(cfg_file))
+                {
+                    foreach (var entry in arrText)
+                    {
+                        file.WriteLine(entry);
+                    }
+                }
+            }
+        }
+
+        private void textBox_PDinfo_KeyUp(object sender, KeyEventArgs e)
+        {
+            if (e.KeyCode == Keys.Enter)
+                TestStart();
+        }
+
+        private void textBox_PDinfo_Click(object sender, EventArgs e)
+        {
+            textBox_PDinfo.SelectAll();
+        }
+    }
+}

+ 581 - 0
CheckForm.resx

@@ -0,0 +1,581 @@
+<?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="menuStrip1.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>137, 17</value>
+  </metadata>
+  <metadata name="timer2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>227, 17</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>
+        AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA
+        CACoDgAAHgsAACAgAAABAAgAqAgAAMYZAAAQEAAAAQAIAGgFAABuIgAAAAAAAAEAIAAxBgAA1icAADAw
+        AAABACAAqCUAAAcuAAAgIAAAAQAgAKgQAACvUwAAEBAAAAEAIABoBAAAV2QAACgAAAAwAAAAYAAAAAEA
+        BAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA
+        wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAABmpmpmpmpmpmpmpmpmpmpmpmpmrgAAAACubq5u
+        bq5ubq5ubq5ubq5ubq5uZgAAAABqamampmpqamampmpqamampmpqagAAAADm5urm6ubq5urmrq5urmrm
+        6ubq5gAAAABqamampqamamauZmpqZq5qZqamagAAAABq5q5ubmrmrq5qaubmrmpurmrmrgAAAADmpupq
+        pq5q5mpupmpq5q5qauauZgAAAACm6maubmpmpuam6ubmpmpuZqZqagAAAABqZq5mpq5uamrmpqam6uam
+        rmrm5gAAAADmrmpu//////am5u//////auamrgAAAACm6m6m//////bqam//////ZqbmpgAAAABupmpq
+        //////pm6m//////rmpuagAAAABqbq5u//////bqZu//////auamrgAAAABupmpqZqZqZqam6mpmpmpm
+        5q5uZgAAAACmaubmrmrmrm5qZq6uaubqampqagAAAABurmpq5q5q5qaurmZq5qam5ubq5gAAAACmam6m
+        amamauZmaurmpurmpqamagAAAADq5qbq5urm5qaupmpq5qZq5q5q5gAAAABmrmpmpqZqaubqbq5mpurm
+        pupupgAAAACuam6ubmrmrmpmpmrq5qZq5qZqbgAAAABqbqZq//////aubq//////aubmpgAAAABupm6m
+        //////bqam//////Zqam6gAAAACmbqZu//////pm5u//////rm6mrgAAAADqam6m//////bqam//////
+        amrmZgAAAABm5qZqamamampq5qamamam5uamrgAAAACupurm5q5urm5mpubq5urmpqbqZgAAAABmpqam
+        rmpqZqauampmpqZq5qauagAAAACubm5upq5urm5q5uaubmrmpubqbgAAAABqampqbmpqZqampqbqam6m
+        6mpmpgAAAABubq5upq5urmrm6upmrqZqbm6ubgAAAACmpmpqbmpqauampmauZmrmpqZqagAAAADm6uau
+        am6uZqbm6uZq6uaubq6uZgAAAABqZq5qbqZmrmpqZq6mampmpmZq6gAAAABurmpupmrqZq5urmrmrm6u
+        aurmpgAAAACmam6mauZurmpqamauampmrmpq5gAAAABurqZq5q6mam5ubq5qbm6uam5mpwAAAACmZmrm
+        rmp65qempmp+pnfnjnqOjgAAAABurqZqZq5mrm6uauamauqOrn6ugAAAAACmauZurmauampmrmrm5o6u
+        eufoAAAAAADq5q6maupmrm6uamampuqOfnqAAAAAAABmpmpupnbqZqZqbq5upo6uqOgAAAAAAACuauam
+        6upm6urmpmpq6ufn6oAAAAAAAABq5q5qZmrqZmauZurmZq6o6AAAAAAAAABmrmpurqZurq5qamamro56
+        gAAAAAAAAADqZq5qZupqZqaubq5uauroAAAAAAAAAABm6mauam5urmbqamampo6AAAAAAAAAAACupupm
+        bqamaupmrmrm6ucAAAAAAAAAAABmam6upmrq5qauauempoAAAAAAAAAA8AAAAAAPAADwAAAAAA8AAPAA
+        AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAP
+        AADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA
+        AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAP
+        AADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA
+        AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAB8AAPAAAAAAPwAA8AAAAAB/
+        AADwAAAAAP8AAPAAAAAB/wAA8AAAAAP/AADwAAAAB/8AAPAAAAAP/wAA8AAAAB//AADwAAAAP/8AAPAA
+        AAB//wAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA
+        gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAABmpmpmpmpmpm
+        pmpmpuAAAArm6ubm6ubm6ubm6uagAAAGpqZqamampqZqamam4AAADm5urm6ubq5urmrq5qAAAAampmpq
+        ampmpmrmZqbgAAAGrmrm6ubmrmrmpq5qYAAADmrm////pur///9q5qAAAApmpv///2pm////Zq5gAAAG
+        6ub///9upv///65q4AAABqZqamampupmpm5qZqAAAAbq5uaubmpurm6mrm5gAAAKZqam6mrmpmpqbmpq
+        YAAADq5q6mamrmrm5qaubqAAAAZq5v///2rm////ampgAAAK5qb///9mpv///26uYAAABqbq////rmr/
+        //+mZqAAAAbqZmpmrmrmamam6urgAAAKbq6ubmpmrq5q5qZmYAAADqZmampurmZq5qbq6uAAAAZq6ubq
+        Zmpq5qbqZmpgAAAK5qamrq6uZqbqZurmoAAABqbm6mZmaurmpupmrmAAAAbqam6urqZmpupmrmpgAAAK
+        bq5qZmrmrmpurmpuoAAADqZqbq6mauauZ+fn54AAAAZq5qZmZuam6mrqiugAAAAG5qbq6uqm6mbnjq6A
+        AAAACmrmpmpm6mamrq6HAAAAAAbmpurmri6ubqjn4AAAAAAKauamauamampuqAAAAAAADmam6uam6ubm
+        qOAAAAAAAAeuamam6namrm4AAAAAAOAAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA
+        AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA
+        AAfgAAAP4AAAH+AAAD/gAAB/4AAA/+AAAf/gAAP/KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A
+        AAD/AP8A//8AAP///wAGamamamamYArm6ubm6uagBqamampmrmAG5v/27/9q4ApqiOpoiG4gDm6mbqau
+        pqAGpoiKaI5q4Abq//bv/2ZgCmZq6mpq6uAG6uZmrmamoApmpq5q6ubgBurm6mZmpqAGpqam6uro4Abm
+        6uamaOcACmpmpurqgAAObq5qZqgAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
+        AACAAQAAgAEAAIABAACAAwAAgAcAAIAPAAAoAAAAMAAAAGAAAAABAAgAAAAAAAAJAAAAAAAAAAAAAAAB
+        AAAAAQAAAAAAAHXKAgB7zQsAfMwPAI7TMACV5CsAnOk0ALLpZgCz6mkAtOtqALbrbwC27G4At+twAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////AAAAAAAEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAf///////////wEBAQEBAf///////////wEB
+        AQEBAQEBAAAAAAAAAAABAQEBAQEBAf///////////wEBAQEBAf///////////wEBAQEBAQEBAAAAAAAA
+        AAABAQEBAQEBAf///////////wEBAQEBAf///////////wEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAf//
+        /////////wEBAQEBAf///////////wEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAAAAAAAAAAABAQEBAQEBAf///////////wEBAQEBAf///////////wEBAQEBAQEBAAAAAAAA
+        AAABAQEBAQEBAf///////////wEBAQEBAf///////////wEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAf//
+        /////////wEBAQEBAf///////////wEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAf///////////wEBAQEB
+        Af///////////wEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBQYGBgYGBgYGBgYMAAAAAAAAAAABAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBBgYGBgYGBgYGBgoAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBBgYGBgYGBgYGCgAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBgYGBgYG
+        BgYKAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBgYGBgYGBgoAAAAAAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBgYGBgYGCgAAAAAAAAAAAAAAAAABAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBBgYGBgYKAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAQEBBgYGBgoAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBgYGCgAA
+        AAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBgYHAAAAAAAAAAAAAAAAAAAA
+        AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBgcAAAAAAAAAAAAAAAAAAAAAAAAEAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEDBwAAAAAAAAAAAAAAAAAAAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA
+        AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAP
+        AADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA
+        AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAP
+        AADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA
+        AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAfAADwAAAAAD8AAPAAAAAAfwAA8AAAAAD/
+        AADwAAAAAf8AAPAAAAAD/wAA8AAAAAf/AADwAAAAD/8AAPAAAAAf/wAA8AAAAD//AADwAAAAf/8AACgA
+        AAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAABAAAAAAAAdcoCAHbKBAB8zQ0AlNc9AJnm
+        MACc6TQApeNPAKXkUACo5lUArOdbAK/nYACw6GQAs+ppAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAABAEBAQEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQQAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAABAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAQEB
+        AQH///////8BAQEB////////AQEBAQEAAAAAAAABAQEBAf///////wEBAQH///////8BAQEBAQAAAAAA
+        AAEBAQEB////////AQEBAf///////wEBAQEBAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA
+        AAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
+        AQEBAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAABAQEBAf///////wEBAQH/////
+        //8BAQEBAQAAAAAAAAEBAQEB////////AQEBAf///////wEBAQEBAAAAAAAAAQEBAQH///////8BAQEB
+        ////////AQEBAQEAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAABAQEBAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAQEB
+        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAA
+        AAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBBQYGBgYGBg0A
+        AAAAAAABAQEBAQEBAQEBAQEBAQEBAQEGBgYGBgYMAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQYGBgYG
+        CwAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBBgYGBgoAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEG
+        BgYJAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQYGCQAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEB
+        AQEBBgcAAAAAAAAAAAAAAAAEAQEBAQEBAQEBAQEBAQEBAQEIAAAAAAAAAAAAAOAAAAfgAAAH4AAAB+AA
+        AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA
+        AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAP4AAAH+AAAD/gAAB/4AAA/+AAAf/gAAP/KAAAABAA
+        AAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
+        AADAwMAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAICAgAFxcXACcnJwA3NzcAR0dHAFdX
+        VwBnZ2cAd3d3AIeHhwCXl5cAp6enALe3twDHx8cA19fXAOfn5wD39/cAAABMAAAAfwAAALIAAADlABkZ
+        /wBMTP4Af3//ALKy/wAAEEwAABt/AAAmsgAAMeUAGUr/AExy/gB/mv8AssL/AAAgTAAANn8AAEyyAABi
+        5QAZe/8ATJn+AH+2/wCy0/8AADFMAABRfwAAcrIAAJPlABmt/wBMv/4Af9H/ALLj/wAAQUwAAG1/AACZ
+        sgAAxOUAGd7/AEzl/gB/7P8AsvT/AABMRwAAf3YAALKlAADl1QAZ/+4ATP7yAH//9QCy//kAAEw2AAB/
+        WwAAsn8AAOWjABn/vQBM/swAf//aALL/6QAATCYAAH8/AACyWQAA5XIAGf+MAEz+pQB//78Asv/YAABM
+        FQAAfyQAALIzAADlQQAZ/1sATP5/AH//owCy/8gAAEwFAAB/CQAAsgwAAOUQABn/KQBM/lkAf/+IALL/
+        twAKTAAAEn8AABmyAAAg5QAAOv8ZAGb+TACR/38Avf+yABtMAAAtfwAAP7IAAFHlAABr/xkAjP5MAK3/
+        fwDN/7IAK0wAAEh/AABlsgAAg+UAAJz/GQCy/kwAyP9/AN7/sgA8TAAAZH8AAIyyAAC05QAAzf8ZANj+
+        TADj/38A7v+yAExMAAB/fwAAsrIAAOXlAAD//xkA/v5MAP//fwD//7IATDwAAH9kAACyjAAA5bQAAP/N
+        GQD+2EwA/+N/AP/usgBMKwAAf0gAALJmAADlgwAA/5wZAP6yTAD/yH8A/96yAEwbAAB/LQAAsj8AAOVR
+        AAD/axkA/oxMAP+tfwD/zbIATAoAAH8SAACyGQAA5SAAAP86GQD+ZUwA/5F/AP+9sgBMAAUAfwAJALIA
+        DADlABAA/xkpAP5MWQD/f4gA/7K3AEwAFQB/ACQAsgAyAOUAQQD/GVsA/kx/AP9/owD/ssgATAAmAH8A
+        PwCyAFkA5QByAP8ZjAD+TKUA/3+/AP+y2ABMADYAfwBbALIAfwDlAKMA/xm9AP5MzAD/f9oA/7LpAEwA
+        RwB/AHYAsgClAOUA1QD/Ge4A/kzyAP9/9QD/svkAQQBMAG0AfwCZALIAxADlAN4Z/wDlTP4A7H//APSy
+        /wAxAEwAUQB/AHIAsgCTAOUArRn/AL9M/gDRf/8A47L/ACAATAA2AH8ATACyAGIA5QB7Gf8AmUz+ALZ/
+        /wDTsv8AEABMABsAfwAmALIAMQDlAEoZ/wByTP4Amn//AMKy/wAAg4KDgoOCg4KDgoOCg4oAAIKDgoOC
+        g4KDgoOCg4KDAACDgoOCg4KDgoOCg4KDggAAgoOCDw8PgoMfDw+Cg4oAAIOCg4Z+hoKChoZ+gop8AACC
+        g4KCgoqDgoqCioOCigAAg4KDhoZ+ioN+hn6Cg4IAAIKDih8fH4KCDx8fgoOCAACDgoKDgoqDgoOCg4KD
+        igAAgoOKgoOCg4KDgoqDgoMAAIOCg4KDgoOCg4p7ioKDAACCg4KDgoOCg4KDgoOCgwAAg4KDgoOCg4KC
+        g32FfX4AAIKDgoOCg4KDioN9kn4AAACDgoOCg4KKg4KChX4AAAAAgoOCg4KDgoOCg34AAAAAgAEAAIAB
+        AACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIADAACABwAAgA8AAIlQ
+        TkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAABeNJREFU
+        eNrt2ktvVGUYwPH3FNu5UAjVEEO0M65aWncm8B0o93K/+Ano1BUsCWEJKzvDN3Algiha/QzglrbTXWfC
+        qiFNvAyphDkuwMSYVEHPaWf6/n4f4DTn6bz/Pu+kScjB3ic3htc6z292QzoVQjoW0pAENpYk3RDSlwbx
+        j0NaH99XfbD44ZVPzSLDqeZx+J91Oj+FNB03XrL0SXU8/PZi/QsRyM47WT9wrfP8psNPXnYOFi5Ptu+E
+        hVER6MkAvFr7IT/lIRHo2QCEkI4ZK5sTgUayMDpz2TR6KQC+8GPTIlC8NLnSCAtVEeihDQA2MQLF4qXJ
+        diPYBASAmDcBERAAIo9Aq5EsVGYumYYAEGMECsWLk61GEAEBIOYIvLoOiIAAEOl1QAQEgNgjMNGqJ4uV
+        2kXTEAAitLNQuvA6AhdMQwCIMwLnJ1r1IAICgAiIgAAQcQSSxUrtvGkIAHFG4NzrTUAEBAARQAAQAQGA
+        GCMwlyxWZs8JAEQZgfLZidZciDkCAoAIRBwBAUAEIo6AAMCfEWjfSRZHr5wVAIgxAkOFMxPtO1/GFAEB
+        gL9FYP9K4+5SdeaMAECEhovF07FEQABgowi0G3eXRrd3BAQANorA0PaPgADAv0Vgpf7VUrV2WgAgyutA
+        6dR2jYAAQMQREAB4mwi06veWKrVTAgAxRqBQmt7frt9bGt0eERAAeNsIDJWm97fq95cqtWkBgDg3gZPb
+        IQICAP8nAu3G/aXRmWkBgCivA8W+joAAQAYRGG/Vv25WaicFACK0q1A60Y8REACIOAICAFlHYGXuQbM6
+        e0IAIMYIFMvH+yUCAgB5RaDVeNCszJwQAIjyOlA8Pt6qf9Os1I4LAMT5ncCxXo6AAEDEERAA2LQIzH3b
+        rMweEwCIMgLlo70WAQGAiCMgALAFERhb+fzhcvWzowIAEdpd3HmkFyIgALCVEWjXHy6P1o4KAMQYgaHS
+        lkZAAKAXIrAy991ydfaIAECU14Hy4fGV+vfNau2wAECEdhVLU5sdAQGAiCMgABBxBAQAejUCrbn5ZmV2
+        SgAghLD+4vdQGByKJwKF8qG8I5Bk/cCBR1dTH1Xy8MHI3vD+7neje+9f1js/5BUBAaBvDCQDYWJfNaot
+        4C8R+LFZmT0kAEQfgX173gt7SsOhMDiYx0d4A+nWHrUkpD93OvPLH2X7z0K+A6CvdNNueLq2Gp6urcb2
+        6klIQubXAAGAfpFmv+4IAERMAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEA
+        BAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQABAAIwABAAQAEABAAAABAAQAEABA
+        AAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEIAcvTxwa1u8x47H18yvD+cnAIAAAAIACAAg
+        AIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIAAmAEIACAAAACAEQhyfqBA4+upsYK+egevJ3p
+        mbUBgCsAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgA
+        IACAAAACAAgAIABv4eWBW9viPXY8vmZ+fTg/AQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAA
+        QAAAAQAEABAAEAAjAAEABAAQACAKSdYPHHh0NTVWyEf34O1Mz6wNAFwBAAEABAAQAEAAAAEABAAQAEAA
+        AAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQ
+        ABAAIwABAAQAEABAAAABAATgDSUhDWlIjBZyOFu9vwEkyyGk435bkMfZ6vEADIRkvisAEPI5Wz0egJFy
+        6fqzTmcqpCIA2f3xT5oj5dL11cxvFTnY++TG8Frn+c1uSKdCSMd8JwD/9c6fLA+EZH6kXLq++vGNX7P+
+        EX8AYE6Cb/v0wSkAAAAASUVORK5CYIIoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAs91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAs8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////////////////////
+        ////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////////////////////
+        ////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////
+        ////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////
+        ////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/////////////////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/////////////////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/////////////////////////////////////////////////dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/////////////////////////////////////////////////dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////
+        ////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////
+        ////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/////////////////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/////////////////////////////////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/////////////////////////////////////////////////dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/////////////////////////////////////////////////dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////////////////////////////////////
+        ////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/////////////////////////////////////////////
+        ////dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAvEA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+V5Cv/nOk0/5zpNP+c6TT/nOk0/5zpNP+c6TT/nOk0/5zpNP+c
+        6TT/nOk0/5PiJ6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c6TT/nOk0/5zpNP+c6TT/nOk0/5zpNP+c
+        6TT/nOk0/5zpNP+c6TT/kuInqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c6TT/nOk0/5zpNP+c
+        6TT/nOk0/5zpNP+c6TT/nOk0/5zpNP+T4yeqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c
+        6TT/nOk0/5zpNP+c6TT/nOk0/5zpNP+c6TT/nOk0/5LjJ6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv+c6TT/nOk0/5zpNP+c6TT/nOk0/5zpNP+c6TT/k+MnrAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c6TT/nOk0/5zpNP+c6TT/nOk0/5zpNP+S4iatAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c6TT/nOk0/5zpNP+c6TT/nOk0/5PiJq4A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c6TT/nOk0/5zpNP+c
+        6TT/kuImrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c
+        6TT/nOk0/5zpNP+S4iawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv+c6TT/nOk0/5LiJbEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c6TT/kuIlsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHbKAtB1ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XLAv51ywL+dcsC/nXLAv51
+        ywL+dcsC/nXLAv51ywL+dcsC/nXLAv51ywL+dcsC/nbLAvWR4SWzAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAPAADwAAAAAA8AAPAAAAAA
+        DwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADw
+        AAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAA
+        DwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADw
+        AAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAA
+        DwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAB8AAPAAAAAAPwAA8AAAAAB/AADw
+        AAAAAP8AAPAAAAAB/wAA8AAAAAP/AADwAAAAB/8AAPAAAAAP/wAA8AAAAB//AADwAAAAP/8AAPAAAAB/
+        /wAAKAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXLA8R1
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ywPEAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAdcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/wAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/////////////////////////////////dcoC/3XKAv91ygL/dcoC////////////////////////
+        /////////3XKAv91ygL/dcoC/3XKAv91ygL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91
+        ygL/dcoC/3XKAv////////////////////////////////91ygL/dcoC/3XKAv91ygL/////////////
+        ////////////////////dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1
+        ygL/dcoC/3XKAv91ygL/dcoC/////////////////////////////////3XKAv91ygL/dcoC/3XKAv//
+        //////////////////////////////91ygL/dcoC/3XKAv91ygL/dcoC/wAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/AAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv//
+        //////////////////////////////91ygL/dcoC/3XKAv91ygL/////////////////////////////
+        ////dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91
+        ygL/dcoC/////////////////////////////////3XKAv91ygL/dcoC/3XKAv//////////////////
+        //////////////91ygL/dcoC/3XKAv91ygL/dcoC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/////////////////////////////////dcoC/3XKAv91ygL/dcoC////////
+        /////////////////////////3XKAv91ygL/dcoC/3XKAv91ygL/AAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAdcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/wAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dssC8wAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/5nmMP+c6TT/nOk0/5zpNP+c6TT/nOk0/5zpNP+S4SewAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/nOk0/5zpNP+c6TT/nOk0/5zpNP+c6TT/keAmtQAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c6TT/nOk0/5zpNP+c6TT/nOk0/5HfJbkA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/5zpNP+c6TT/nOk0/5zpNP+Q
+        3yS+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/nOk0/5zpNP+c
+        6TT/j98jwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv+c
+        6TT/nOk0/4/fI8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/5zpNP+O3SLLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAdcsDxHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL8jt4iyf///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg
+        AAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfg
+        AAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAD+AAAB/gAAA/4AAAf+AAAP/g
+        AAH/4AAB/ygAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdcoC9nXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAu0AAAAAAAAAAHXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL2AAAAAAAAAAB1
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC9gAAAAAA
+        AAAAdcoC/3XKAv94ywf/////////////////dcoC/3XKAv////////////v9+f91ygL/dcoC/3XKAvYA
+        AAAAAAAAAHXKAv91ygL/dsoE/7rkgf+65IH/uuSB/3XKAv91ygL/uuSB/7rkgf+4437/dcoC/3XKAv91
+        ygL2AAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC9gAAAAAAAAAAdcoC/3XKAv92ygT/uuSA/7rkgP+65ID/dcoC/3XKAv+65ID/uuSA/7jjff91
+        ygL/dcoC/3XKAvYAAAAAAAAAAHXKAv91ygL/eMsH/////////////////3XKAv91ygL////////////7
+        /fn/dcoC/3XKAv91ygL2AAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC9gAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAvYAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL2AAAAAAAAAAB1ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dcoC9gAAAAAAAAAAdcoC/3XKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dssD/5voM/+c6TT/nOk0/5DfI7cAAAAAAAAAAHXKAv91ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3bLA/+c6TT/nOk0/5DfI7cAAAAAAAAAAAAAAAB1ygL/dcoC/3XKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv92ywP/nOk0/5DfI7cAAAAAAAAAAAAAAAAAAAAAdcoC9nXKAv91
+        ygL/dcoC/3XKAv91ygL/dcoC/3XKAv91ygL/dssD/5DfI7gAAAAAAAAAAAAAAAAAAAAAgAEAAIABAACA
+        AQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIADAACABwAAgA8AAA==
+</value>
+  </data>
+</root>

+ 151 - 0
Enter.Designer.cs

@@ -0,0 +1,151 @@
+namespace MOTINOVA_Motor_Factory_Set
+{
+    partial class Enter
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Enter));
+            this.button1 = new System.Windows.Forms.Button();
+            this.textBox_Passwd = new System.Windows.Forms.TextBox();
+            this.textBox_User = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.pictureBox2 = new System.Windows.Forms.PictureBox();
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // button1
+            // 
+            this.button1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.button1.Location = new System.Drawing.Point(295, 83);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(61, 63);
+            this.button1.TabIndex = 0;
+            this.button1.Text = "进入";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // textBox_Passwd
+            // 
+            this.textBox_Passwd.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.textBox_Passwd.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_Passwd.Location = new System.Drawing.Point(104, 118);
+            this.textBox_Passwd.Name = "textBox_Passwd";
+            this.textBox_Passwd.Size = new System.Drawing.Size(171, 29);
+            this.textBox_Passwd.TabIndex = 2;
+            this.textBox_Passwd.UseSystemPasswordChar = true;
+            // 
+            // textBox_User
+            // 
+            this.textBox_User.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.textBox_User.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_User.Location = new System.Drawing.Point(104, 83);
+            this.textBox_User.Name = "textBox_User";
+            this.textBox_User.Size = new System.Drawing.Size(171, 29);
+            this.textBox_User.TabIndex = 2;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(57, 87);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(37, 20);
+            this.label1.TabIndex = 3;
+            this.label1.Text = "账户";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(57, 122);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(37, 20);
+            this.label2.TabIndex = 3;
+            this.label2.Text = "密码";
+            // 
+            // pictureBox2
+            // 
+            this.pictureBox2.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources._836618239619717251;
+            this.pictureBox2.Location = new System.Drawing.Point(11, 207);
+            this.pictureBox2.Name = "pictureBox2";
+            this.pictureBox2.Size = new System.Drawing.Size(83, 43);
+            this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox2.TabIndex = 33;
+            this.pictureBox2.TabStop = false;
+            // 
+            // pictureBox1
+            // 
+            this.pictureBox1.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources.title1;
+            this.pictureBox1.Location = new System.Drawing.Point(103, 217);
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.Size = new System.Drawing.Size(136, 33);
+            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox1.TabIndex = 32;
+            this.pictureBox1.TabStop = false;
+            // 
+            // Enter
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(384, 262);
+            this.Controls.Add(this.pictureBox2);
+            this.Controls.Add(this.pictureBox1);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.textBox_User);
+            this.Controls.Add(this.textBox_Passwd);
+            this.Controls.Add(this.button1);
+            this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "Enter";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "Enter";
+            this.Load += new System.EventHandler(this.Enter_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button button1;
+        public System.Windows.Forms.TextBox textBox_Passwd;
+        public System.Windows.Forms.TextBox textBox_User;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.PictureBox pictureBox2;
+        private System.Windows.Forms.PictureBox pictureBox1;
+    }
+}

+ 29 - 0
Enter.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace MOTINOVA_Motor_Factory_Set
+{
+    public partial class Enter : Form
+    {
+        public Enter()
+        {
+            InitializeComponent();
+        }
+
+        private void button1_Click(object sender, EventArgs e)
+        {
+            this.Close();
+        }
+
+        private void Enter_Load(object sender, EventArgs e)
+        {
+            textBox_User.Text = "";
+            textBox_Passwd.Text = ""
+;        }
+    }
+}

+ 149 - 0
Enter.resx

@@ -0,0 +1,149 @@
+<?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>
+  <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>
+        AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAB
+        AAAAAAAAjVAEAItYBACMWAQAklwHAJZZCQCbXAkAnFwMAKtVAQCmWQIAq18EALFWAACxWQAAtloAALhf
+        AQCsYAQAoWENAKdlDgCxZQUAu2ABAL5mAgC4bQcAp2YSAK1pEgCtbBUAtHAVALh1EwCzchgAunYZAKdw
+        LADCZwIAxW0DAMluAwDMdAUAwXQKAMV6DQDPewgAyHsNANB2BQDVfQcA2X8GAMB8FgDBexsAwHwfAM+D
+        DwDQgw8A3IUJAN2KDADXihIA3JAVAOCHCADmjgoA5JEPAO6XDQD0ng8A4ZAQAOKWFwD2ohMA96UWAPmk
+        EgD+qhUA/7AXAP+xGQDHgSEAzYYiAM2HJQDTjCYA0YsoANeSLQDYkCgA3ZUtAPWrKADurDwA+LQ3APKx
+        PwC8kFcAw49GANmeQQDAlFkAxZhaAM+hXwDVolIA6adAAOmpQgDUpmEA2atjAN2uZQDOrYMA0bCEANSz
+        hQDYtocA27iGANu6iQDfvYoA5cKLAOTNrADn0bAA4dS9AP7tzgD+/v4AAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAD///8AAAIBAQEBAQEBAQEBAQECAAQICwsLCwsLCwsLCwsLCAQFDQ0NDQ0NDQ0NDQ0NDQ0GBhMTExMJ
+        HQkOExMTExMTEBAeHh4PS2NXChMeHh4eHhAWICASTmNjY1gSHyAgICAXFyYVT2NjY2NjWBUhJiYmGRsk
+        TGNjY19jY2NaIicoKBwcMhpgY1sjUGNjY1wkLjIqKjMvKVQsMy1UY2NjXCwzPz81NTU3NTU1MFVjY2NR
+        NEBANjY2NjY2NjYxVWNeMTZCQzs7Ozs7Ozs7OzdNNzk7RUQ8PDw8PDw8PDw8OTw8PEVIST49PT09PT09
+        PT09PkdIAEpSUlJSUlJSUlJSUlJKAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAAA=
+</value>
+  </data>
+</root>

+ 320 - 61
ExportForm.Designer.cs

@@ -92,8 +92,12 @@
             this.label29 = new System.Windows.Forms.Label();
             this.comboBox_StartMode = new System.Windows.Forms.ComboBox();
             this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.label59 = new System.Windows.Forms.Label();
+            this.label58 = new System.Windows.Forms.Label();
             this.label3 = new System.Windows.Forms.Label();
+            this.comboBox_TailLightVol = new System.Windows.Forms.ComboBox();
             this.label46 = new System.Windows.Forms.Label();
+            this.comboBox_HeadLightVol = new System.Windows.Forms.ComboBox();
             this.textBox_Angle_R = new System.Windows.Forms.TextBox();
             this.comboBox_LightMode = new System.Windows.Forms.ComboBox();
             this.label44 = new System.Windows.Forms.Label();
@@ -147,15 +151,22 @@
             this.textBox_Model = new System.Windows.Forms.TextBox();
             this.groupBox8 = new System.Windows.Forms.GroupBox();
             this.label54 = new System.Windows.Forms.Label();
+            this.label62 = new System.Windows.Forms.Label();
+            this.textBox_Start_Max = new System.Windows.Forms.TextBox();
+            this.label61 = new System.Windows.Forms.Label();
+            this.textBox_K_Max = new System.Windows.Forms.TextBox();
+            this.textBox_Start_Min = new System.Windows.Forms.TextBox();
+            this.label60 = new System.Windows.Forms.Label();
+            this.textBox_K_Min = new System.Windows.Forms.TextBox();
+            this.textBox_Zero_Max = new System.Windows.Forms.TextBox();
+            this.textBox_Zero_Min = new System.Windows.Forms.TextBox();
             this.label56 = new System.Windows.Forms.Label();
             this.textBox_GasSpeedTh = new System.Windows.Forms.TextBox();
             this.label55 = new System.Windows.Forms.Label();
             this.textBox_SpeedTh = new System.Windows.Forms.TextBox();
             this.textBox_NC_Current = new System.Windows.Forms.TextBox();
-            this.comboBox_HeadLightVol = new System.Windows.Forms.ComboBox();
-            this.label58 = new System.Windows.Forms.Label();
-            this.comboBox_TailLightVol = new System.Windows.Forms.ComboBox();
-            this.label59 = new System.Windows.Forms.Label();
+            this.pictureBox2 = new System.Windows.Forms.PictureBox();
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
             this.groupBox2.SuspendLayout();
             this.groupBox3.SuspendLayout();
             this.groupBox7.SuspendLayout();
@@ -164,6 +175,8 @@
             this.groupBox6.SuspendLayout();
             this.groupBox1.SuspendLayout();
             this.groupBox8.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
             this.SuspendLayout();
             // 
             // label2
@@ -259,7 +272,9 @@
             // 
             // textBox_WalkSpeed
             // 
+            this.textBox_WalkSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_WalkSpeed.ForeColor = System.Drawing.Color.Black;
+            this.textBox_WalkSpeed.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_WalkSpeed.Location = new System.Drawing.Point(463, 353);
             this.textBox_WalkSpeed.Name = "textBox_WalkSpeed";
             this.textBox_WalkSpeed.Size = new System.Drawing.Size(70, 29);
@@ -267,7 +282,9 @@
             // 
             // textBox_WheelSizeAdj
             // 
+            this.textBox_WheelSizeAdj.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_WheelSizeAdj.ForeColor = System.Drawing.Color.Black;
+            this.textBox_WheelSizeAdj.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_WheelSizeAdj.Location = new System.Drawing.Point(463, 317);
             this.textBox_WheelSizeAdj.Name = "textBox_WheelSizeAdj";
             this.textBox_WheelSizeAdj.Size = new System.Drawing.Size(70, 29);
@@ -284,7 +301,9 @@
             // 
             // textBox_CadenceStart
             // 
+            this.textBox_CadenceStart.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_CadenceStart.ForeColor = System.Drawing.Color.Black;
+            this.textBox_CadenceStart.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_CadenceStart.Location = new System.Drawing.Point(463, 281);
             this.textBox_CadenceStart.Name = "textBox_CadenceStart";
             this.textBox_CadenceStart.Size = new System.Drawing.Size(70, 29);
@@ -301,7 +320,9 @@
             // 
             // textBox_SMART_Gain
             // 
+            this.textBox_SMART_Gain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_SMART_Gain.ForeColor = System.Drawing.Color.Black;
+            this.textBox_SMART_Gain.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_SMART_Gain.Location = new System.Drawing.Point(463, 245);
             this.textBox_SMART_Gain.Name = "textBox_SMART_Gain";
             this.textBox_SMART_Gain.Size = new System.Drawing.Size(70, 29);
@@ -318,7 +339,9 @@
             // 
             // textBox_SPORT_Acc
             // 
+            this.textBox_SPORT_Acc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_SPORT_Acc.ForeColor = System.Drawing.Color.Black;
+            this.textBox_SPORT_Acc.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_SPORT_Acc.Location = new System.Drawing.Point(463, 209);
             this.textBox_SPORT_Acc.Name = "textBox_SPORT_Acc";
             this.textBox_SPORT_Acc.Size = new System.Drawing.Size(70, 29);
@@ -335,7 +358,9 @@
             // 
             // textBox_NORM_Gain
             // 
+            this.textBox_NORM_Gain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_NORM_Gain.ForeColor = System.Drawing.Color.Black;
+            this.textBox_NORM_Gain.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_NORM_Gain.Location = new System.Drawing.Point(463, 173);
             this.textBox_NORM_Gain.Name = "textBox_NORM_Gain";
             this.textBox_NORM_Gain.Size = new System.Drawing.Size(70, 29);
@@ -352,7 +377,9 @@
             // 
             // textBox_Serial
             // 
+            this.textBox_Serial.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Serial.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Serial.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Serial.Location = new System.Drawing.Point(463, 137);
             this.textBox_Serial.Name = "textBox_Serial";
             this.textBox_Serial.Size = new System.Drawing.Size(70, 29);
@@ -369,7 +396,9 @@
             // 
             // textBox_NTC_Ptotect
             // 
+            this.textBox_NTC_Ptotect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_NTC_Ptotect.ForeColor = System.Drawing.Color.Black;
+            this.textBox_NTC_Ptotect.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_NTC_Ptotect.Location = new System.Drawing.Point(463, 101);
             this.textBox_NTC_Ptotect.Name = "textBox_NTC_Ptotect";
             this.textBox_NTC_Ptotect.Size = new System.Drawing.Size(70, 29);
@@ -386,7 +415,9 @@
             // 
             // textBox_T_Tail
             // 
+            this.textBox_T_Tail.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_T_Tail.ForeColor = System.Drawing.Color.Black;
+            this.textBox_T_Tail.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_T_Tail.Location = new System.Drawing.Point(463, 65);
             this.textBox_T_Tail.Name = "textBox_T_Tail";
             this.textBox_T_Tail.Size = new System.Drawing.Size(70, 29);
@@ -412,7 +443,9 @@
             // 
             // textBox_SpeedLimit
             // 
+            this.textBox_SpeedLimit.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_SpeedLimit.ForeColor = System.Drawing.Color.Black;
+            this.textBox_SpeedLimit.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_SpeedLimit.Location = new System.Drawing.Point(463, 29);
             this.textBox_SpeedLimit.Name = "textBox_SpeedLimit";
             this.textBox_SpeedLimit.Size = new System.Drawing.Size(70, 29);
@@ -420,7 +453,9 @@
             // 
             // textBox_Walk_SpeedLimit
             // 
+            this.textBox_Walk_SpeedLimit.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Walk_SpeedLimit.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Walk_SpeedLimit.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Walk_SpeedLimit.Location = new System.Drawing.Point(288, 353);
             this.textBox_Walk_SpeedLimit.Name = "textBox_Walk_SpeedLimit";
             this.textBox_Walk_SpeedLimit.Size = new System.Drawing.Size(70, 29);
@@ -446,7 +481,9 @@
             // 
             // textBox_SMART_Acc
             // 
+            this.textBox_SMART_Acc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_SMART_Acc.ForeColor = System.Drawing.Color.Black;
+            this.textBox_SMART_Acc.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_SMART_Acc.Location = new System.Drawing.Point(105, 281);
             this.textBox_SMART_Acc.Name = "textBox_SMART_Acc";
             this.textBox_SMART_Acc.Size = new System.Drawing.Size(70, 29);
@@ -454,7 +491,9 @@
             // 
             // textBox_UV_Protect
             // 
+            this.textBox_UV_Protect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_UV_Protect.ForeColor = System.Drawing.Color.Black;
+            this.textBox_UV_Protect.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_UV_Protect.Location = new System.Drawing.Point(105, 353);
             this.textBox_UV_Protect.Name = "textBox_UV_Protect";
             this.textBox_UV_Protect.Size = new System.Drawing.Size(70, 29);
@@ -462,7 +501,9 @@
             // 
             // textBox_SpeedSensor
             // 
+            this.textBox_SpeedSensor.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_SpeedSensor.ForeColor = System.Drawing.Color.Black;
+            this.textBox_SpeedSensor.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_SpeedSensor.Location = new System.Drawing.Point(288, 281);
             this.textBox_SpeedSensor.Name = "textBox_SpeedSensor";
             this.textBox_SpeedSensor.Size = new System.Drawing.Size(70, 29);
@@ -479,7 +520,9 @@
             // 
             // textBox_TURBO_Gain
             // 
+            this.textBox_TURBO_Gain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_TURBO_Gain.ForeColor = System.Drawing.Color.Black;
+            this.textBox_TURBO_Gain.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_TURBO_Gain.Location = new System.Drawing.Point(105, 245);
             this.textBox_TURBO_Gain.Name = "textBox_TURBO_Gain";
             this.textBox_TURBO_Gain.Size = new System.Drawing.Size(70, 29);
@@ -487,7 +530,9 @@
             // 
             // textBox_TURBO_Acc
             // 
+            this.textBox_TURBO_Acc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_TURBO_Acc.ForeColor = System.Drawing.Color.Black;
+            this.textBox_TURBO_Acc.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_TURBO_Acc.Location = new System.Drawing.Point(288, 245);
             this.textBox_TURBO_Acc.Name = "textBox_TURBO_Acc";
             this.textBox_TURBO_Acc.Size = new System.Drawing.Size(70, 29);
@@ -504,7 +549,9 @@
             // 
             // textBox_NORM_Acc
             // 
+            this.textBox_NORM_Acc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_NORM_Acc.ForeColor = System.Drawing.Color.Black;
+            this.textBox_NORM_Acc.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_NORM_Acc.Location = new System.Drawing.Point(105, 209);
             this.textBox_NORM_Acc.Name = "textBox_NORM_Acc";
             this.textBox_NORM_Acc.Size = new System.Drawing.Size(70, 29);
@@ -512,7 +559,9 @@
             // 
             // textBox_SPORT_Gain
             // 
+            this.textBox_SPORT_Gain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_SPORT_Gain.ForeColor = System.Drawing.Color.Black;
+            this.textBox_SPORT_Gain.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_SPORT_Gain.Location = new System.Drawing.Point(288, 209);
             this.textBox_SPORT_Gain.Name = "textBox_SPORT_Gain";
             this.textBox_SPORT_Gain.Size = new System.Drawing.Size(70, 29);
@@ -529,7 +578,9 @@
             // 
             // textBox_ECO_Gain
             // 
+            this.textBox_ECO_Gain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_ECO_Gain.ForeColor = System.Drawing.Color.Black;
+            this.textBox_ECO_Gain.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_ECO_Gain.Location = new System.Drawing.Point(105, 173);
             this.textBox_ECO_Gain.Name = "textBox_ECO_Gain";
             this.textBox_ECO_Gain.Size = new System.Drawing.Size(70, 29);
@@ -537,7 +588,9 @@
             // 
             // textBox_ECO_Acc
             // 
+            this.textBox_ECO_Acc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_ECO_Acc.ForeColor = System.Drawing.Color.Black;
+            this.textBox_ECO_Acc.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_ECO_Acc.Location = new System.Drawing.Point(288, 173);
             this.textBox_ECO_Acc.Name = "textBox_ECO_Acc";
             this.textBox_ECO_Acc.Size = new System.Drawing.Size(70, 29);
@@ -554,7 +607,9 @@
             // 
             // textBox_WheelSize
             // 
+            this.textBox_WheelSize.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_WheelSize.ForeColor = System.Drawing.Color.Black;
+            this.textBox_WheelSize.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_WheelSize.Location = new System.Drawing.Point(288, 137);
             this.textBox_WheelSize.Name = "textBox_WheelSize";
             this.textBox_WheelSize.Size = new System.Drawing.Size(70, 29);
@@ -571,7 +626,9 @@
             // 
             // textBox_NTC_Alarm
             // 
+            this.textBox_NTC_Alarm.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_NTC_Alarm.ForeColor = System.Drawing.Color.Black;
+            this.textBox_NTC_Alarm.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_NTC_Alarm.Location = new System.Drawing.Point(288, 101);
             this.textBox_NTC_Alarm.Name = "textBox_NTC_Alarm";
             this.textBox_NTC_Alarm.Size = new System.Drawing.Size(70, 29);
@@ -597,7 +654,9 @@
             // 
             // textBox_MaxCurrent
             // 
+            this.textBox_MaxCurrent.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_MaxCurrent.ForeColor = System.Drawing.Color.Black;
+            this.textBox_MaxCurrent.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_MaxCurrent.Location = new System.Drawing.Point(105, 101);
             this.textBox_MaxCurrent.Name = "textBox_MaxCurrent";
             this.textBox_MaxCurrent.Size = new System.Drawing.Size(70, 29);
@@ -605,7 +664,9 @@
             // 
             // textBox_Dec
             // 
+            this.textBox_Dec.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Dec.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Dec.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Dec.Location = new System.Drawing.Point(105, 65);
             this.textBox_Dec.Name = "textBox_Dec";
             this.textBox_Dec.Size = new System.Drawing.Size(70, 29);
@@ -613,7 +674,9 @@
             // 
             // textBox_T_Front
             // 
+            this.textBox_T_Front.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_T_Front.ForeColor = System.Drawing.Color.Black;
+            this.textBox_T_Front.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_T_Front.Location = new System.Drawing.Point(288, 65);
             this.textBox_T_Front.Name = "textBox_T_Front";
             this.textBox_T_Front.Size = new System.Drawing.Size(70, 29);
@@ -630,7 +693,9 @@
             // 
             // textBox_StopTime
             // 
+            this.textBox_StopTime.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_StopTime.ForeColor = System.Drawing.Color.Black;
+            this.textBox_StopTime.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_StopTime.Location = new System.Drawing.Point(288, 29);
             this.textBox_StopTime.Name = "textBox_StopTime";
             this.textBox_StopTime.Size = new System.Drawing.Size(70, 29);
@@ -647,8 +712,10 @@
             // 
             // comboBox_SpeedSensor
             // 
+            this.comboBox_SpeedSensor.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.comboBox_SpeedSensor.ForeColor = System.Drawing.Color.Black;
             this.comboBox_SpeedSensor.FormattingEnabled = true;
+            this.comboBox_SpeedSensor.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.comboBox_SpeedSensor.Items.AddRange(new object[] {
             "传感器",
             "踏频",
@@ -660,8 +727,10 @@
             // 
             // comboBox_GasMode
             // 
+            this.comboBox_GasMode.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.comboBox_GasMode.ForeColor = System.Drawing.Color.Black;
             this.comboBox_GasMode.FormattingEnabled = true;
+            this.comboBox_GasMode.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.comboBox_GasMode.Items.AddRange(new object[] {
             "不支持",
             "支持"});
@@ -717,8 +786,10 @@
             // 
             // comboBox_NoPBU
             // 
+            this.comboBox_NoPBU.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.comboBox_NoPBU.ForeColor = System.Drawing.Color.Black;
             this.comboBox_NoPBU.FormattingEnabled = true;
+            this.comboBox_NoPBU.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.comboBox_NoPBU.Items.AddRange(new object[] {
             "无",
             "有"});
@@ -765,8 +836,10 @@
             // 
             // comboBox_StartMode
             // 
+            this.comboBox_StartMode.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.comboBox_StartMode.ForeColor = System.Drawing.Color.Black;
             this.comboBox_StartMode.FormattingEnabled = true;
+            this.comboBox_StartMode.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.comboBox_StartMode.Items.AddRange(new object[] {
             "柔和",
             "正常",
@@ -798,6 +871,24 @@
             this.groupBox3.TabStop = false;
             this.groupBox3.Text = "用户参数2";
             // 
+            // label59
+            // 
+            this.label59.AutoSize = true;
+            this.label59.Location = new System.Drawing.Point(363, 71);
+            this.label59.Name = "label59";
+            this.label59.Size = new System.Drawing.Size(74, 21);
+            this.label59.TabIndex = 0;
+            this.label59.Text = "尾灯电压";
+            // 
+            // label58
+            // 
+            this.label58.AutoSize = true;
+            this.label58.Location = new System.Drawing.Point(181, 71);
+            this.label58.Name = "label58";
+            this.label58.Size = new System.Drawing.Size(74, 21);
+            this.label58.TabIndex = 0;
+            this.label58.Text = "前灯电压";
+            // 
             // label3
             // 
             this.label3.AutoSize = true;
@@ -807,6 +898,22 @@
             this.label3.TabIndex = 0;
             this.label3.Text = "尾灯模式";
             // 
+            // comboBox_TailLightVol
+            // 
+            this.comboBox_TailLightVol.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.comboBox_TailLightVol.ForeColor = System.Drawing.Color.Black;
+            this.comboBox_TailLightVol.FormattingEnabled = true;
+            this.comboBox_TailLightVol.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.comboBox_TailLightVol.Items.AddRange(new object[] {
+            "6V",
+            "12V",
+            "随电池",
+            "硬件配置"});
+            this.comboBox_TailLightVol.Location = new System.Drawing.Point(463, 67);
+            this.comboBox_TailLightVol.Name = "comboBox_TailLightVol";
+            this.comboBox_TailLightVol.Size = new System.Drawing.Size(70, 29);
+            this.comboBox_TailLightVol.TabIndex = 1;
+            // 
             // label46
             // 
             this.label46.AutoSize = true;
@@ -816,9 +923,27 @@
             this.label46.TabIndex = 0;
             this.label46.Text = "姿态传感器";
             // 
+            // comboBox_HeadLightVol
+            // 
+            this.comboBox_HeadLightVol.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.comboBox_HeadLightVol.ForeColor = System.Drawing.Color.Black;
+            this.comboBox_HeadLightVol.FormattingEnabled = true;
+            this.comboBox_HeadLightVol.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.comboBox_HeadLightVol.Items.AddRange(new object[] {
+            "6V",
+            "12V",
+            "随电池",
+            "硬件配置"});
+            this.comboBox_HeadLightVol.Location = new System.Drawing.Point(288, 67);
+            this.comboBox_HeadLightVol.Name = "comboBox_HeadLightVol";
+            this.comboBox_HeadLightVol.Size = new System.Drawing.Size(70, 29);
+            this.comboBox_HeadLightVol.TabIndex = 1;
+            // 
             // textBox_Angle_R
             // 
+            this.textBox_Angle_R.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Angle_R.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Angle_R.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Angle_R.Location = new System.Drawing.Point(463, 30);
             this.textBox_Angle_R.Name = "textBox_Angle_R";
             this.textBox_Angle_R.Size = new System.Drawing.Size(70, 29);
@@ -826,8 +951,10 @@
             // 
             // comboBox_LightMode
             // 
+            this.comboBox_LightMode.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.comboBox_LightMode.ForeColor = System.Drawing.Color.Black;
             this.comboBox_LightMode.FormattingEnabled = true;
+            this.comboBox_LightMode.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.comboBox_LightMode.Items.AddRange(new object[] {
             "模式 1",
             "模式 2",
@@ -849,8 +976,10 @@
             // 
             // comboBox_AstSensor
             // 
+            this.comboBox_AstSensor.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.comboBox_AstSensor.ForeColor = System.Drawing.Color.Black;
             this.comboBox_AstSensor.FormattingEnabled = true;
+            this.comboBox_AstSensor.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.comboBox_AstSensor.Items.AddRange(new object[] {
             "不支持",
             "支持"});
@@ -870,7 +999,9 @@
             // 
             // textBox_Angle_P
             // 
+            this.textBox_Angle_P.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Angle_P.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Angle_P.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Angle_P.Location = new System.Drawing.Point(288, 30);
             this.textBox_Angle_P.Name = "textBox_Angle_P";
             this.textBox_Angle_P.Size = new System.Drawing.Size(70, 29);
@@ -912,6 +1043,7 @@
             // 
             // textBox_Info2
             // 
+            this.textBox_Info2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Info2.ForeColor = System.Drawing.Color.Black;
             this.textBox_Info2.Location = new System.Drawing.Point(82, 63);
             this.textBox_Info2.Name = "textBox_Info2";
@@ -929,6 +1061,7 @@
             // 
             // textBox_Info1
             // 
+            this.textBox_Info1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Info1.ForeColor = System.Drawing.Color.Black;
             this.textBox_Info1.Location = new System.Drawing.Point(82, 30);
             this.textBox_Info1.Name = "textBox_Info1";
@@ -937,6 +1070,7 @@
             // 
             // textBox_Info3
             // 
+            this.textBox_Info3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Info3.ForeColor = System.Drawing.Color.Black;
             this.textBox_Info3.Location = new System.Drawing.Point(82, 96);
             this.textBox_Info3.Name = "textBox_Info3";
@@ -945,6 +1079,7 @@
             // 
             // groupBox4
             // 
+            this.groupBox4.BackColor = System.Drawing.SystemColors.Window;
             this.groupBox4.Controls.Add(this.label35);
             this.groupBox4.Controls.Add(this.label30);
             this.groupBox4.Controls.Add(this.label31);
@@ -1005,7 +1140,9 @@
             // 
             // textBox_RatePower
             // 
+            this.textBox_RatePower.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_RatePower.ForeColor = System.Drawing.Color.Black;
+            this.textBox_RatePower.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_RatePower.Location = new System.Drawing.Point(82, 29);
             this.textBox_RatePower.Name = "textBox_RatePower";
             this.textBox_RatePower.Size = new System.Drawing.Size(80, 29);
@@ -1013,7 +1150,9 @@
             // 
             // textBox_RotorR
             // 
+            this.textBox_RotorR.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_RotorR.ForeColor = System.Drawing.Color.Black;
+            this.textBox_RotorR.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_RotorR.Location = new System.Drawing.Point(82, 65);
             this.textBox_RotorR.Name = "textBox_RotorR";
             this.textBox_RotorR.Size = new System.Drawing.Size(80, 29);
@@ -1021,7 +1160,9 @@
             // 
             // textBox_Rate_Vol
             // 
+            this.textBox_Rate_Vol.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Rate_Vol.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Rate_Vol.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Rate_Vol.Location = new System.Drawing.Point(82, 137);
             this.textBox_Rate_Vol.Name = "textBox_Rate_Vol";
             this.textBox_Rate_Vol.Size = new System.Drawing.Size(80, 29);
@@ -1029,7 +1170,9 @@
             // 
             // textBox_Rotor_Ld
             // 
+            this.textBox_Rotor_Ld.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Rotor_Ld.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Rotor_Ld.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Rotor_Ld.Location = new System.Drawing.Point(82, 101);
             this.textBox_Rotor_Ld.Name = "textBox_Rotor_Ld";
             this.textBox_Rotor_Ld.Size = new System.Drawing.Size(80, 29);
@@ -1064,7 +1207,9 @@
             // 
             // textBox_RateSpeed
             // 
+            this.textBox_RateSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_RateSpeed.ForeColor = System.Drawing.Color.Black;
+            this.textBox_RateSpeed.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_RateSpeed.Location = new System.Drawing.Point(248, 29);
             this.textBox_RateSpeed.Name = "textBox_RateSpeed";
             this.textBox_RateSpeed.Size = new System.Drawing.Size(80, 29);
@@ -1072,7 +1217,9 @@
             // 
             // textBox_Rotor_Lq
             // 
+            this.textBox_Rotor_Lq.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Rotor_Lq.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Rotor_Lq.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Rotor_Lq.Location = new System.Drawing.Point(248, 65);
             this.textBox_Rotor_Lq.Name = "textBox_Rotor_Lq";
             this.textBox_Rotor_Lq.Size = new System.Drawing.Size(80, 29);
@@ -1080,7 +1227,9 @@
             // 
             // textBox_E
             // 
+            this.textBox_E.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_E.ForeColor = System.Drawing.Color.Black;
+            this.textBox_E.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_E.Location = new System.Drawing.Point(248, 101);
             this.textBox_E.Name = "textBox_E";
             this.textBox_E.Size = new System.Drawing.Size(80, 29);
@@ -1091,9 +1240,9 @@
             this.groupBox5.Controls.Add(this.label37);
             this.groupBox5.Controls.Add(this.textBox_Secrect);
             this.groupBox5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
-            this.groupBox5.Location = new System.Drawing.Point(565, 343);
+            this.groupBox5.Location = new System.Drawing.Point(565, 340);
             this.groupBox5.Name = "groupBox5";
-            this.groupBox5.Size = new System.Drawing.Size(334, 65);
+            this.groupBox5.Size = new System.Drawing.Size(334, 68);
             this.groupBox5.TabIndex = 4;
             this.groupBox5.TabStop = false;
             this.groupBox5.Text = "校验密钥";
@@ -1109,7 +1258,9 @@
             // 
             // textBox_Secrect
             // 
+            this.textBox_Secrect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Secrect.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Secrect.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Secrect.Location = new System.Drawing.Point(82, 22);
             this.textBox_Secrect.Name = "textBox_Secrect";
             this.textBox_Secrect.Size = new System.Drawing.Size(246, 29);
@@ -1160,7 +1311,9 @@
             // 
             // textBox_Mac_Date
             // 
+            this.textBox_Mac_Date.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Mac_Date.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Mac_Date.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Mac_Date.Location = new System.Drawing.Point(82, 92);
             this.textBox_Mac_Date.Name = "textBox_Mac_Date";
             this.textBox_Mac_Date.Size = new System.Drawing.Size(246, 29);
@@ -1168,7 +1321,9 @@
             // 
             // textBox_Mac
             // 
+            this.textBox_Mac.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Mac.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Mac.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Mac.Location = new System.Drawing.Point(82, 22);
             this.textBox_Mac.Name = "textBox_Mac";
             this.textBox_Mac.Size = new System.Drawing.Size(246, 29);
@@ -1176,7 +1331,9 @@
             // 
             // textBox_Mac_Addr
             // 
+            this.textBox_Mac_Addr.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Mac_Addr.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Mac_Addr.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Mac_Addr.Location = new System.Drawing.Point(82, 57);
             this.textBox_Mac_Addr.Name = "textBox_Mac_Addr";
             this.textBox_Mac_Addr.Size = new System.Drawing.Size(246, 29);
@@ -1186,9 +1343,9 @@
             // 
             this.button_Generate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
             this.button_Generate.ForeColor = System.Drawing.Color.White;
-            this.button_Generate.Location = new System.Drawing.Point(1015, 491);
+            this.button_Generate.Location = new System.Drawing.Point(1025, 560);
             this.button_Generate.Name = "button_Generate";
-            this.button_Generate.Size = new System.Drawing.Size(80, 61);
+            this.button_Generate.Size = new System.Drawing.Size(80, 41);
             this.button_Generate.TabIndex = 6;
             this.button_Generate.Text = "生成";
             this.button_Generate.UseVisualStyleBackColor = false;
@@ -1198,9 +1355,9 @@
             // 
             this.button_Default.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
             this.button_Default.ForeColor = System.Drawing.Color.White;
-            this.button_Default.Location = new System.Drawing.Point(917, 491);
+            this.button_Default.Location = new System.Drawing.Point(905, 560);
             this.button_Default.Name = "button_Default";
-            this.button_Default.Size = new System.Drawing.Size(80, 61);
+            this.button_Default.Size = new System.Drawing.Size(80, 41);
             this.button_Default.TabIndex = 6;
             this.button_Default.Text = "默认";
             this.button_Default.UseVisualStyleBackColor = false;
@@ -1256,14 +1413,15 @@
             // label51
             // 
             this.label51.AutoSize = true;
-            this.label51.Location = new System.Drawing.Point(61, 87);
+            this.label51.Location = new System.Drawing.Point(69, 87);
             this.label51.Name = "label51";
-            this.label51.Size = new System.Drawing.Size(74, 21);
+            this.label51.Size = new System.Drawing.Size(58, 21);
             this.label51.TabIndex = 0;
-            this.label51.Text = "客户代码";
+            this.label51.Text = "订单号";
             // 
             // textBox_Remark
             // 
+            this.textBox_Remark.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Remark.ForeColor = System.Drawing.Color.Black;
             this.textBox_Remark.Location = new System.Drawing.Point(7, 272);
             this.textBox_Remark.Name = "textBox_Remark";
@@ -1272,7 +1430,9 @@
             // 
             // textBox_TE_FW_Version
             // 
+            this.textBox_TE_FW_Version.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_TE_FW_Version.ForeColor = System.Drawing.Color.Black;
+            this.textBox_TE_FW_Version.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_TE_FW_Version.Location = new System.Drawing.Point(7, 218);
             this.textBox_TE_FW_Version.Name = "textBox_TE_FW_Version";
             this.textBox_TE_FW_Version.Size = new System.Drawing.Size(183, 29);
@@ -1289,7 +1449,9 @@
             // 
             // textBox_FW_Version
             // 
+            this.textBox_FW_Version.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_FW_Version.ForeColor = System.Drawing.Color.Black;
+            this.textBox_FW_Version.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_FW_Version.Location = new System.Drawing.Point(7, 164);
             this.textBox_FW_Version.Name = "textBox_FW_Version";
             this.textBox_FW_Version.Size = new System.Drawing.Size(183, 29);
@@ -1297,7 +1459,9 @@
             // 
             // textBox_Client
             // 
+            this.textBox_Client.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Client.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Client.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Client.Location = new System.Drawing.Point(7, 110);
             this.textBox_Client.Name = "textBox_Client";
             this.textBox_Client.Size = new System.Drawing.Size(183, 29);
@@ -1305,7 +1469,9 @@
             // 
             // textBox_Model
             // 
+            this.textBox_Model.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_Model.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Model.ImeMode = System.Windows.Forms.ImeMode.Disable;
             this.textBox_Model.Location = new System.Drawing.Point(7, 56);
             this.textBox_Model.Name = "textBox_Model";
             this.textBox_Model.Size = new System.Drawing.Size(183, 29);
@@ -1314,15 +1480,24 @@
             // groupBox8
             // 
             this.groupBox8.Controls.Add(this.label54);
+            this.groupBox8.Controls.Add(this.label62);
+            this.groupBox8.Controls.Add(this.textBox_Start_Max);
+            this.groupBox8.Controls.Add(this.label61);
+            this.groupBox8.Controls.Add(this.textBox_K_Max);
+            this.groupBox8.Controls.Add(this.textBox_Start_Min);
+            this.groupBox8.Controls.Add(this.label60);
+            this.groupBox8.Controls.Add(this.textBox_K_Min);
+            this.groupBox8.Controls.Add(this.textBox_Zero_Max);
+            this.groupBox8.Controls.Add(this.textBox_Zero_Min);
             this.groupBox8.Controls.Add(this.label56);
             this.groupBox8.Controls.Add(this.textBox_GasSpeedTh);
             this.groupBox8.Controls.Add(this.label55);
             this.groupBox8.Controls.Add(this.textBox_SpeedTh);
             this.groupBox8.Controls.Add(this.textBox_NC_Current);
             this.groupBox8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
-            this.groupBox8.Location = new System.Drawing.Point(905, 343);
+            this.groupBox8.Location = new System.Drawing.Point(905, 340);
             this.groupBox8.Name = "groupBox8";
-            this.groupBox8.Size = new System.Drawing.Size(200, 136);
+            this.groupBox8.Size = new System.Drawing.Size(200, 212);
             this.groupBox8.TabIndex = 5;
             this.groupBox8.TabStop = false;
             this.groupBox8.Text = "测试阈值";
@@ -1330,16 +1505,103 @@
             // label54
             // 
             this.label54.AutoSize = true;
-            this.label54.Location = new System.Drawing.Point(6, 34);
+            this.label54.Location = new System.Drawing.Point(6, 26);
             this.label54.Name = "label54";
             this.label54.Size = new System.Drawing.Size(74, 21);
             this.label54.TabIndex = 0;
             this.label54.Text = "空载电流";
             // 
+            // label62
+            // 
+            this.label62.AutoSize = true;
+            this.label62.Location = new System.Drawing.Point(6, 180);
+            this.label62.Name = "label62";
+            this.label62.Size = new System.Drawing.Size(58, 21);
+            this.label62.TabIndex = 0;
+            this.label62.Text = "启动值";
+            // 
+            // textBox_Start_Max
+            // 
+            this.textBox_Start_Max.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.textBox_Start_Max.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Start_Max.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_Start_Max.Location = new System.Drawing.Point(140, 176);
+            this.textBox_Start_Max.Name = "textBox_Start_Max";
+            this.textBox_Start_Max.Size = new System.Drawing.Size(50, 29);
+            this.textBox_Start_Max.TabIndex = 2;
+            // 
+            // label61
+            // 
+            this.label61.AutoSize = true;
+            this.label61.Location = new System.Drawing.Point(6, 149);
+            this.label61.Name = "label61";
+            this.label61.Size = new System.Drawing.Size(74, 21);
+            this.label61.TabIndex = 0;
+            this.label61.Text = "标定系数";
+            // 
+            // textBox_K_Max
+            // 
+            this.textBox_K_Max.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.textBox_K_Max.ForeColor = System.Drawing.Color.Black;
+            this.textBox_K_Max.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_K_Max.Location = new System.Drawing.Point(140, 145);
+            this.textBox_K_Max.Name = "textBox_K_Max";
+            this.textBox_K_Max.Size = new System.Drawing.Size(50, 29);
+            this.textBox_K_Max.TabIndex = 2;
+            // 
+            // textBox_Start_Min
+            // 
+            this.textBox_Start_Min.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.textBox_Start_Min.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Start_Min.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_Start_Min.Location = new System.Drawing.Point(82, 176);
+            this.textBox_Start_Min.Name = "textBox_Start_Min";
+            this.textBox_Start_Min.Size = new System.Drawing.Size(50, 29);
+            this.textBox_Start_Min.TabIndex = 2;
+            // 
+            // label60
+            // 
+            this.label60.AutoSize = true;
+            this.label60.Location = new System.Drawing.Point(6, 118);
+            this.label60.Name = "label60";
+            this.label60.Size = new System.Drawing.Size(42, 21);
+            this.label60.TabIndex = 0;
+            this.label60.Text = "零偏";
+            // 
+            // textBox_K_Min
+            // 
+            this.textBox_K_Min.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.textBox_K_Min.ForeColor = System.Drawing.Color.Black;
+            this.textBox_K_Min.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_K_Min.Location = new System.Drawing.Point(82, 145);
+            this.textBox_K_Min.Name = "textBox_K_Min";
+            this.textBox_K_Min.Size = new System.Drawing.Size(50, 29);
+            this.textBox_K_Min.TabIndex = 2;
+            // 
+            // textBox_Zero_Max
+            // 
+            this.textBox_Zero_Max.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.textBox_Zero_Max.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Zero_Max.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_Zero_Max.Location = new System.Drawing.Point(140, 114);
+            this.textBox_Zero_Max.Name = "textBox_Zero_Max";
+            this.textBox_Zero_Max.Size = new System.Drawing.Size(50, 29);
+            this.textBox_Zero_Max.TabIndex = 2;
+            // 
+            // textBox_Zero_Min
+            // 
+            this.textBox_Zero_Min.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.textBox_Zero_Min.ForeColor = System.Drawing.Color.Black;
+            this.textBox_Zero_Min.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_Zero_Min.Location = new System.Drawing.Point(82, 114);
+            this.textBox_Zero_Min.Name = "textBox_Zero_Min";
+            this.textBox_Zero_Min.Size = new System.Drawing.Size(50, 29);
+            this.textBox_Zero_Min.TabIndex = 2;
+            // 
             // label56
             // 
             this.label56.AutoSize = true;
-            this.label56.Location = new System.Drawing.Point(6, 100);
+            this.label56.Location = new System.Drawing.Point(6, 87);
             this.label56.Name = "label56";
             this.label56.Size = new System.Drawing.Size(74, 21);
             this.label56.TabIndex = 0;
@@ -1347,8 +1609,10 @@
             // 
             // textBox_GasSpeedTh
             // 
+            this.textBox_GasSpeedTh.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_GasSpeedTh.ForeColor = System.Drawing.Color.Black;
-            this.textBox_GasSpeedTh.Location = new System.Drawing.Point(82, 96);
+            this.textBox_GasSpeedTh.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_GasSpeedTh.Location = new System.Drawing.Point(82, 83);
             this.textBox_GasSpeedTh.Name = "textBox_GasSpeedTh";
             this.textBox_GasSpeedTh.Size = new System.Drawing.Size(108, 29);
             this.textBox_GasSpeedTh.TabIndex = 2;
@@ -1356,7 +1620,7 @@
             // label55
             // 
             this.label55.AutoSize = true;
-            this.label55.Location = new System.Drawing.Point(6, 67);
+            this.label55.Location = new System.Drawing.Point(6, 56);
             this.label55.Name = "label55";
             this.label55.Size = new System.Drawing.Size(42, 21);
             this.label55.TabIndex = 0;
@@ -1364,63 +1628,43 @@
             // 
             // textBox_SpeedTh
             // 
+            this.textBox_SpeedTh.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_SpeedTh.ForeColor = System.Drawing.Color.Black;
-            this.textBox_SpeedTh.Location = new System.Drawing.Point(82, 63);
+            this.textBox_SpeedTh.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_SpeedTh.Location = new System.Drawing.Point(82, 52);
             this.textBox_SpeedTh.Name = "textBox_SpeedTh";
             this.textBox_SpeedTh.Size = new System.Drawing.Size(108, 29);
             this.textBox_SpeedTh.TabIndex = 2;
             // 
             // textBox_NC_Current
             // 
+            this.textBox_NC_Current.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
             this.textBox_NC_Current.ForeColor = System.Drawing.Color.Black;
-            this.textBox_NC_Current.Location = new System.Drawing.Point(82, 30);
+            this.textBox_NC_Current.ImeMode = System.Windows.Forms.ImeMode.Disable;
+            this.textBox_NC_Current.Location = new System.Drawing.Point(82, 22);
             this.textBox_NC_Current.Name = "textBox_NC_Current";
             this.textBox_NC_Current.Size = new System.Drawing.Size(108, 29);
             this.textBox_NC_Current.TabIndex = 2;
             // 
-            // comboBox_HeadLightVol
-            // 
-            this.comboBox_HeadLightVol.ForeColor = System.Drawing.Color.Black;
-            this.comboBox_HeadLightVol.FormattingEnabled = true;
-            this.comboBox_HeadLightVol.Items.AddRange(new object[] {
-            "6V",
-            "12V",
-            "随电池"});
-            this.comboBox_HeadLightVol.Location = new System.Drawing.Point(288, 67);
-            this.comboBox_HeadLightVol.Name = "comboBox_HeadLightVol";
-            this.comboBox_HeadLightVol.Size = new System.Drawing.Size(70, 29);
-            this.comboBox_HeadLightVol.TabIndex = 1;
-            // 
-            // label58
-            // 
-            this.label58.AutoSize = true;
-            this.label58.Location = new System.Drawing.Point(181, 71);
-            this.label58.Name = "label58";
-            this.label58.Size = new System.Drawing.Size(74, 21);
-            this.label58.TabIndex = 0;
-            this.label58.Text = "前灯电压";
-            // 
-            // comboBox_TailLightVol
+            // pictureBox2
             // 
-            this.comboBox_TailLightVol.ForeColor = System.Drawing.Color.Black;
-            this.comboBox_TailLightVol.FormattingEnabled = true;
-            this.comboBox_TailLightVol.Items.AddRange(new object[] {
-            "6V",
-            "12V",
-            "随电池"});
-            this.comboBox_TailLightVol.Location = new System.Drawing.Point(463, 67);
-            this.comboBox_TailLightVol.Name = "comboBox_TailLightVol";
-            this.comboBox_TailLightVol.Size = new System.Drawing.Size(70, 29);
-            this.comboBox_TailLightVol.TabIndex = 1;
+            this.pictureBox2.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources._836618239619717251;
+            this.pictureBox2.Location = new System.Drawing.Point(565, 558);
+            this.pictureBox2.Name = "pictureBox2";
+            this.pictureBox2.Size = new System.Drawing.Size(83, 43);
+            this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox2.TabIndex = 29;
+            this.pictureBox2.TabStop = false;
             // 
-            // label59
+            // pictureBox1
             // 
-            this.label59.AutoSize = true;
-            this.label59.Location = new System.Drawing.Point(363, 71);
-            this.label59.Name = "label59";
-            this.label59.Size = new System.Drawing.Size(74, 21);
-            this.label59.TabIndex = 0;
-            this.label59.Text = "尾灯电压";
+            this.pictureBox1.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources.title1;
+            this.pictureBox1.Location = new System.Drawing.Point(657, 568);
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.Size = new System.Drawing.Size(136, 33);
+            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox1.TabIndex = 28;
+            this.pictureBox1.TabStop = false;
             // 
             // ExportForm
             // 
@@ -1428,6 +1672,8 @@
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.BackColor = System.Drawing.Color.White;
             this.ClientSize = new System.Drawing.Size(1115, 608);
+            this.Controls.Add(this.pictureBox2);
+            this.Controls.Add(this.pictureBox1);
             this.Controls.Add(this.groupBox8);
             this.Controls.Add(this.button_Default);
             this.Controls.Add(this.button_Generate);
@@ -1465,6 +1711,8 @@
             this.groupBox1.PerformLayout();
             this.groupBox8.ResumeLayout(false);
             this.groupBox8.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
             this.ResumeLayout(false);
             this.PerformLayout();
 
@@ -1598,5 +1846,16 @@
         private System.Windows.Forms.Label label58;
         private System.Windows.Forms.ComboBox comboBox_TailLightVol;
         private System.Windows.Forms.ComboBox comboBox_HeadLightVol;
+        private System.Windows.Forms.Label label62;
+        private System.Windows.Forms.TextBox textBox_Start_Max;
+        private System.Windows.Forms.Label label61;
+        private System.Windows.Forms.TextBox textBox_K_Max;
+        private System.Windows.Forms.TextBox textBox_Start_Min;
+        private System.Windows.Forms.Label label60;
+        private System.Windows.Forms.TextBox textBox_K_Min;
+        private System.Windows.Forms.TextBox textBox_Zero_Max;
+        private System.Windows.Forms.TextBox textBox_Zero_Min;
+        private System.Windows.Forms.PictureBox pictureBox2;
+        private System.Windows.Forms.PictureBox pictureBox1;
     }
 }

+ 40 - 8
ExportForm.cs

@@ -23,7 +23,7 @@ namespace MOTINOVA_Motor_Factory_Set
         Dictionary<string, UInt16> TestThData = new Dictionary<string, ushort>();
 
         //文件路径
-        string FilePath = "cfg\\";
+        public string FilePath = "";
 
         public ExportForm()
         {
@@ -32,7 +32,7 @@ namespace MOTINOVA_Motor_Factory_Set
 
         private void ExportForm_Load(object sender, EventArgs e)
         {
-
+            
         }
 
         private void SetDefault()
@@ -104,7 +104,12 @@ namespace MOTINOVA_Motor_Factory_Set
             TestThData.Add("空载电流", 1000);
             TestThData.Add("车速", 150);
             TestThData.Add("指拨转速", 1200);
-
+            TestThData.Add("零偏最小值", 200);
+            TestThData.Add("零偏最大值", 1800);
+            TestThData.Add("标定系数最小值", 25);
+            TestThData.Add("标定系数最大值", 75);
+            TestThData.Add("启动值最小值", 350);
+            TestThData.Add("启动值最大值", 750);
         }
 
         private void ParamsDisplayUpdate()
@@ -216,6 +221,10 @@ namespace MOTINOVA_Motor_Factory_Set
             {
                 comboBox_HeadLightVol.Text = "随电池";
             }
+            else if (Params2["前灯电压"] == 0)
+            {
+                comboBox_HeadLightVol.Text = "硬件配置";
+            }
             if (Params2["尾灯电压"] == 6)
             {
                 comboBox_TailLightVol.Text = "6V";
@@ -228,6 +237,10 @@ namespace MOTINOVA_Motor_Factory_Set
             {
                 comboBox_TailLightVol.Text = "随电池";
             }
+            else if (Params2["尾灯电压"] == 0)
+            {
+                comboBox_TailLightVol.Text = "硬件配置";
+            }
 
             //马达参数
             textBox_RatePower.Text = MotorParam["额定功率"].ToString();
@@ -246,12 +259,17 @@ namespace MOTINOVA_Motor_Factory_Set
             textBox_Info1.Text = Otherinfo["信息1"].ToString();
             textBox_Info2.Text = Otherinfo["信息2"].ToString();
             textBox_Info3.Text = Otherinfo["信息3"].ToString();
-
+            
             //测试阈值
             textBox_NC_Current.Text = TestThData["空载电流"].ToString();
             textBox_SpeedTh.Text = TestThData["车速"].ToString();
             textBox_GasSpeedTh.Text = TestThData["指拨转速"].ToString();
-
+            textBox_Zero_Min.Text = TestThData["零偏最小值"].ToString();
+            textBox_Zero_Max.Text = TestThData["零偏最大值"].ToString();
+            textBox_K_Min.Text = ((float)(TestThData["标定系数最小值"]) / 100.0f).ToString("#0.00");
+            textBox_K_Max.Text = ((float)(TestThData["标定系数最大值"]) / 100.0f).ToString("#0.00");
+            textBox_Start_Min.Text = TestThData["启动值最小值"].ToString();
+            textBox_Start_Max.Text = TestThData["启动值最大值"].ToString();
         }
 
         private bool DisplaySetToParams()
@@ -430,6 +448,10 @@ namespace MOTINOVA_Motor_Factory_Set
                 {
                     Params2.Add("前灯电压", 0xFF);
                 }
+                else if (comboBox_HeadLightVol.Text == "硬件配置")
+                {
+                    Params2.Add("前灯电压", 0);
+                }
                 if (comboBox_TailLightVol.Text == "6V")
                 {
                     Params2.Add("尾灯电压", 6);
@@ -442,6 +464,10 @@ namespace MOTINOVA_Motor_Factory_Set
                 {
                     Params2.Add("尾灯电压", 0xFF);
                 }
+                else if (comboBox_TailLightVol.Text == "硬件配置")
+                {
+                    Params2.Add("尾灯电压", 0);
+                }
 
                 //马达参数
                 MotorParam.Clear();
@@ -468,6 +494,12 @@ namespace MOTINOVA_Motor_Factory_Set
                 TestThData.Add("空载电流", Convert.ToUInt16(textBox_NC_Current.Text));
                 TestThData.Add("车速", Convert.ToUInt16(textBox_SpeedTh.Text));
                 TestThData.Add("指拨转速", Convert.ToUInt16(textBox_GasSpeedTh.Text));
+                TestThData.Add("零偏最小值", Convert.ToUInt16(textBox_Zero_Min.Text));
+                TestThData.Add("零偏最大值", Convert.ToUInt16(textBox_Zero_Max.Text));
+                TestThData.Add("标定系数最小值", Convert.ToUInt16(float.Parse(textBox_K_Min.Text) * 100));
+                TestThData.Add("标定系数最大值", Convert.ToUInt16(float.Parse(textBox_K_Max.Text) * 100));
+                TestThData.Add("启动值最小值", Convert.ToUInt16(textBox_Start_Min.Text));
+                TestThData.Add("启动值最大值", Convert.ToUInt16(textBox_Start_Max.Text));
                 return true;
             }
             catch(Exception ex)
@@ -502,7 +534,7 @@ namespace MOTINOVA_Motor_Factory_Set
             {
                 textBox_Client.Text = "STD";
             }
-            Regex Reg = new Regex(@"[V][0-9].[0-9].[0-9].[0-9].[0-9]_20\d{6}");
+            Regex Reg = new Regex(@"[V][0-9].[0-9]|[0-9][0-9].[0-9]|[0-9][0-9].[0-9]|[0-9][0-9].[0-9]|[0-9][0-9]_20\d{6}");
             if (Reg.IsMatch(textBox_FW_Version.Text) == false) //判断主控软件版本是否填写
             {
                 MessageBox.Show("主控软件版本格式不正确,例如V1.0.0.0.0_20210101 !", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
@@ -540,9 +572,9 @@ namespace MOTINOVA_Motor_Factory_Set
                     if (entry.Key == "姿态传感器")
                         file.WriteLine("{0},{1},{2}", entry.Key, entry.Value, entry.Value == 0x55 ? "不支持" : entry.Value == 0xAA ? "支持" : "无效");
                     else if (entry.Key == "前灯电压")
-                        file.WriteLine("{0},{1},{2}", entry.Key, entry.Value, entry.Value == 0xFF ? "随电池" : entry.Value + "V");
+                        file.WriteLine("{0},{1},{2}", entry.Key, entry.Value, entry.Value == 0xFF ? "随电池" : entry.Value == 0 ? "硬件配置" : entry.Value + "V");
                     else if (entry.Key == "尾灯电压")
-                        file.WriteLine("{0},{1},{2}", entry.Key, entry.Value, entry.Value == 0xFF ? "随电池" : entry.Value + "V");
+                        file.WriteLine("{0},{1},{2}", entry.Key, entry.Value, entry.Value == 0xFF ? "随电池" : entry.Value == 0 ? "硬件配置" : entry.Value + "V");
                     else
                         file.WriteLine("{0},{1}", entry.Key, entry.Value);
                 //马达参数

File diff suppressed because it is too large
+ 149 - 291
ImportForm.Designer.cs


+ 166 - 69
ImportForm.cs

@@ -17,7 +17,8 @@ namespace MOTINOVA_Motor_Factory_Set
     {
         #region 文件路径
         string LogSaveFileName = "";
-        string CfgFilePath = "";
+        public string LogSavePath = "";
+        public string LocalCfgFilePath = "";
         #endregion
 
         #region 测试参数配置
@@ -96,15 +97,18 @@ namespace MOTINOVA_Motor_Factory_Set
         {
             InitializeComponent();
             System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
+            //加载用户路径
+            LogSavePath = StartForm.UserPath;
+            LocalCfgFilePath = StartForm.UserPath;
         }
 
         #region 获取配置文件日期
         private void GetDateList()
-        {
+         {
             string[] DateList = { "" };
             if (checkBox_LocalFile.Checked == true)//从本地更新日期列表
             {
-                DateList = System.IO.Directory.GetDirectories(Directory.GetCurrentDirectory() + "\\cfg");
+                DateList = System.IO.Directory.GetDirectories(LocalCfgFilePath);
             }
             else//从服务器更新日期列表
             {
@@ -124,7 +128,7 @@ namespace MOTINOVA_Motor_Factory_Set
             string[] FileList = { "" };
             if (checkBox_LocalFile.Checked == true)//从本地更新文件列表
             {
-                FileList = System.IO.Directory.GetFiles(Directory.GetCurrentDirectory() + "\\cfg\\" + date);
+                FileList = System.IO.Directory.GetFiles(LocalCfgFilePath + date);
             }
             else//从服务器更新文件列表
             {
@@ -152,19 +156,19 @@ namespace MOTINOVA_Motor_Factory_Set
             //清空原来数据
             array_CfgInfo.Clear();
             string SelectFile = "";
-            if (checkBox_LocalFile.Checked == false)//从服务器下载文件
+            if (checkBox_LocalFile.Checked == false)//非本地模式从服务器下载文件
             {
                 SelectFile = comboBox_cfgFileDate.SelectedItem.ToString() + "\\" + comboBox_File.SelectedItem.ToString();
-                if (!File.Exists(Directory.GetCurrentDirectory() + "\\cfg\\" + SelectFile))//检查本地是否存在选定文件
+                if (!File.Exists(LocalCfgFilePath + SelectFile))//检查本地是否存在选定文件
                 {
                     SelectFile = comboBox_cfgFileDate.SelectedItem.ToString() + "/" + comboBox_File.SelectedItem.ToString();
-                    StartForm.myFtp.DownLoadNotReName(StartForm.myServerCfg.RootPath + "/cfg/" + SelectFile, Directory.GetCurrentDirectory() + "\\cfg\\" + comboBox_cfgFileDate.SelectedItem.ToString());
+                    StartForm.myFtp.DownLoadNotReName(StartForm.myServerCfg.RootPath + "/cfg/" + SelectFile, LocalCfgFilePath + comboBox_cfgFileDate.SelectedItem.ToString());
 
                 }
             }
             SelectFile = comboBox_cfgFileDate.SelectedItem.ToString() + "\\" + comboBox_File.SelectedItem.ToString();
             //打开选中文件
-            StreamReader objReader = new StreamReader(Directory.GetCurrentDirectory() + "\\cfg\\" + SelectFile);
+            StreamReader objReader = new StreamReader(LocalCfgFilePath + SelectFile);
             string sLine = "";
             while (sLine != null)
             {
@@ -369,7 +373,10 @@ namespace MOTINOVA_Motor_Factory_Set
                 {
                     ushort PackageID;
                     PackageID = (ushort)(buffer[2] * 256 + buffer[3]);
-                    if ((PackageID == 0x0710) || (PackageID == 0x0715) || (PackageID == 0x0610) || (PackageID == 0x0615) || (PackageID == 0x07FF))
+                    if ((PackageID == 0x0710) || (PackageID == 0x0715) || 
+                        (PackageID == 0x0610) || (PackageID == 0x0615) || 
+                        (PackageID == 0x07FF) || 
+                        (PackageID == 0x0725) || (PackageID == 0x0720))
                     {
                         int CmdLen = buffer[5];
                         if (buffer.Count < CmdLen + 11) break;//如果接收到的数据没有达到一帧数据的指定长度, 则执行下次循环
@@ -760,8 +767,8 @@ namespace MOTINOVA_Motor_Factory_Set
             {
                 button_LightCtl.Text = "开灯";
                 CtrlCode[1] = 0xF0;
-                button_LightCtl.BackColor = Color.Gray;
-                button_LightCtl.ForeColor = Color.White;
+                button_LightCtl.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+                button_LightCtl.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
             }
             SendCmd((ushort)0x751, (byte)0x16, (ushort)0x2802, CtrlCode);
         }
@@ -806,8 +813,8 @@ namespace MOTINOVA_Motor_Factory_Set
                 Thread.Sleep(200);
                 //发送指令使电机退出配置模式
                 Code[0] = 0x00;
-                button_Walk.BackColor = Color.Gray;
-                button_Walk.ForeColor = Color.White;
+                button_Walk.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+                button_Walk.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185))))); 
                 SendCmd((ushort)0x751, (byte)0x16, (ushort)0x1901, Code);
             }
         }
@@ -830,9 +837,11 @@ namespace MOTINOVA_Motor_Factory_Set
         private void label_Init()
         {
             radioButton_Light_OK.Checked = false;//灯电压确认按钮
-            radioButton_Light_OK.BackColor = Color.Gray;
+            radioButton_Light_OK.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            radioButton_Light_OK.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
             radioButton_Light_NG.Checked = false;
-            radioButton_Light_NG.BackColor = Color.Gray;
+            radioButton_Light_NG.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+            radioButton_Light_NG.ForeColor= System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
 
             label_error_code.BackColor = Color.Green;//故障码
             label_error_code.Text = "OK";
@@ -859,8 +868,10 @@ namespace MOTINOVA_Motor_Factory_Set
             label_sensor_coil_temp.Text = "NG";
             label_sensor_MCU_temp.BackColor = Color.Red;//MCU温度检测
             label_sensor_MCU_temp.Text = "NG";
-            label_Sensor_Break.BackColor = Color.Red;//断电刹把
-            label_Sensor_Break.Text = "NG";
+            label_Sensor_Break1.BackColor = Color.Red;//断电刹把
+            label_Sensor_Break1.Text = "NG";
+            label_Sensor_Break2.BackColor = Color.Red;//断电刹把
+            label_Sensor_Break2.Text = "NG";
 
             label_Sensor_Gas.BackColor = Color.Red;//转把
             label_Sensor_Gas.Text = "NG";
@@ -885,20 +896,24 @@ namespace MOTINOVA_Motor_Factory_Set
             Bitmap bit = new Bitmap(this.Width, this.Height);//实例化一个和窗体一样大的bitmap
             Graphics g = Graphics.FromImage(bit);
             g.CopyFromScreen(this.Left, this.Top, 0, 0, new Size(this.Width, this.Height));//保存整个窗体为图片  
-            LogSaveFileName = System.IO.Directory.GetCurrentDirectory() + "\\walkTest\\errorlog\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\";
+            LogSaveFileName = LogSavePath + "\\errorlog\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\";
             if (System.IO.Directory.Exists(LogSaveFileName) == false)
                 System.IO.Directory.CreateDirectory(LogSaveFileName);
             LogSaveFileName += textBox_PDinfo.Text + "_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_") + "_测试记录" + ".png";
             bit.Save(LogSaveFileName);
             //测试页面上传服务器
-            string DateNow = DateTime.Now.ToString("yyyy-MM-dd");
-            if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/walkTest/errorlog/", DateNow) == false)
+            if (StartForm.myFtp.IsNetConnected == true)
             {
-                StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/errorlog/" + DateNow);
+                string DateNow = DateTime.Now.ToString("yyyy-MM-dd");
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/walkTest/errorlog/", DateNow) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/errorlog/" + DateNow);
+                }
+                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTest/errorlog/" + DateNow);
+                if (result == true)
+                    richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "测试异常页面上传服务器成功" + "\r\n";
             }
-            bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTest/errorlog/" + DateNow);
-            if (result == true)
-                richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "测试异常页面上传服务器成功" + "\r\n";
+                
         }
 
         //执行一次测试任务
@@ -914,6 +929,7 @@ namespace MOTINOVA_Motor_Factory_Set
             var Code = new byte[32];//发送的指令数据
             ushort DataTemp;
             short DataTemp_Int16;
+            string ResultPathName = "";
 
             #region Step1:发送指令,系统清除
             TestStep = TestStep_Enum.Step_SysClear;
@@ -1388,10 +1404,12 @@ namespace MOTINOVA_Motor_Factory_Set
             LightProcess();
             radioButton_Light_OK.Checked = false;
             radioButton_Light_OK.BackColor = Color.Green;
+            radioButton_Light_OK.ForeColor = Color.White;
             radioButton_Light_OK.Enabled = true;
             radioButton_Light_NG.Checked = false;
             radioButton_Light_NG.Enabled = true;
             radioButton_Light_NG.BackColor = Color.Red;
+            radioButton_Light_NG.ForeColor = Color.White;
             richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "发送开灯指令,请确认灯电压是否正确……" + "\r\n";
             while ((radioButton_Light_OK.Checked == false) && (radioButton_Light_NG.Checked == false)) ;
             if (radioButton_Light_OK.Checked == true)
@@ -1459,7 +1477,7 @@ namespace MOTINOVA_Motor_Factory_Set
                         ErrorSaveLog();
                         return;
                     }
-                    if ((DataTemp > (SpeedSensorThData  - 30)) && (DataTemp < (SpeedSensorThData + 30)))
+                    if ((DataTemp > (SpeedSensorThData  - 50)) && (DataTemp < (SpeedSensorThData + 50)))
                     {
                         if (label_sensor_speed.BackColor == Color.Red)
                         {
@@ -1630,10 +1648,11 @@ namespace MOTINOVA_Motor_Factory_Set
                 }
             }
             richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "传感器自动检测结束" + "\r\n";
-            label_Step.Text = "请在10s内捏下断电开关!";
-            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "断电开关检测开始,请捏下断电开关" + "\r\n";
+            //断电开关1
+            label_Step.Text = "请在10s内捏下断电刹把 1!";
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "断电刹把 1 检测开始,请捏下断电刹把 1" + "\r\n";
             WalkProcess_Cnt = 0;
-            while (WalkProcess_Cnt < 10)//10s内判断电机是否停止
+            while (WalkProcess_Cnt < 15)//10s内判断电机是否停止
             {
                 try
                 {
@@ -1649,22 +1668,77 @@ namespace MOTINOVA_Motor_Factory_Set
                 }
                 if (DataTemp < 100)
                 {
-                    if (label_Sensor_Break.BackColor == Color.Red)
+                    if (label_Sensor_Break1.BackColor == Color.Red)
                     {
-                        label_Sensor_Break.BackColor = Color.Green;
-                        label_Sensor_Break.Text = "OK";
+                        label_Sensor_Break1.BackColor = Color.Green;
+                        label_Sensor_Break1.Text = "OK";
                         OK_cnt++;
                     }
                     break;
                 }
             }
-            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "断电开关检测结束,请松开断电开关" + "\r\n";
-            label_Step.Text = "请松开断电开关!";
+            label_Step.Text = "请松开断电刹把 1";
+            WalkProcess_Cnt = 0;
+            while (WalkProcess_Cnt < 10)//等待电机再次启动,如果超时提示错误
+            {
+                try
+                {
+                    DataTemp = Convert.ToUInt16(textBox_MotorSpeed.Text);
+                }
+                catch (System.Exception ex)
+                {
+                    MessageBox.Show(ex.Message);
+                    label_Step.Text = "推行测试异常,测试结束!";
+                    button_Start.Enabled = true;
+                    ErrorSaveLog();
+                    return;
+                }
+                if (DataTemp > 300)//电机转速超过300rpm,再次启动测试
+                    break;
+            }
+            if (WalkProcess_Cnt >= 10)//表示超时退出,电机未启动
+            {
+                label_Step.Text = "推行测试异常,测试结束!";
+                button_Start.Enabled = true;
+                ErrorSaveLog();
+                return;
+            }
+            //断电开关2
+            label_Step.Text = "请在10s内捏下断电刹把 2!";
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "断电刹把 2 检测开始,请捏下断电刹把 2" + "\r\n";
+            WalkProcess_Cnt = 0;
+            while (WalkProcess_Cnt < 15)//10s内判断电机是否停止
+            {
+                try
+                {
+                    DataTemp = Convert.ToUInt16(textBox_MotorSpeed.Text);
+                }
+                catch (System.Exception ex)
+                {
+                    MessageBox.Show(ex.Message);
+                    label_Step.Text = "推行测试异常,测试结束!";
+                    button_Start.Enabled = true;
+                    ErrorSaveLog();
+                    return;
+                }
+                if (DataTemp < 100)
+                {
+                    if (label_Sensor_Break2.BackColor == Color.Red)
+                    {
+                        label_Sensor_Break2.BackColor = Color.Green;
+                        label_Sensor_Break2.Text = "OK";
+                        OK_cnt++;
+                    }
+                    break;
+                }
+            }
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "断电刹把检测结束" + "\r\n";
+            label_Step.Text = "请松开断电刹把 2!";
             button_Walk.Text = "停止";
             Walk_Process(0x00);
             Delay_ms(1000);
             //判断测试结果
-            if (OK_cnt < 9)
+            if (OK_cnt < 10)
             {
                 label_Step.Text = "推行测试异常,测试结束!";
                 richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "推行测试失败,测试结束" + "\r\n";
@@ -1673,6 +1747,7 @@ namespace MOTINOVA_Motor_Factory_Set
                 return;
             }
             //判断BMS通信是否正常
+            richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "检测BMS通信状态" + "\r\n";
             if (label_BMS_COM.Text != "OK")
             {
                 label_Step.Text = "BMS通信异常,测试结束!";
@@ -1681,6 +1756,7 @@ namespace MOTINOVA_Motor_Factory_Set
                 ErrorSaveLog();
                 return;
             }
+
             #endregion
 
             #region Step5:转把模式测试(非必需)
@@ -1772,7 +1848,7 @@ namespace MOTINOVA_Motor_Factory_Set
             {
                 if (string.Equals(TE_FW_Ver_Check, TE_FW_Ver_Result) == false) //TE版本错误,给出提示
                 {
-                    if (MessageBox.Show("请确认是否忽略TE版本?", "TE版本错误", MessageBoxButtons.YesNo) == DialogResult.No)
+                    if (MessageBox.Show("TE版本错误,请确认主控板是否为HK?", "TE版本错误", MessageBoxButtons.YesNo) == DialogResult.No)
                     {
                         richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "TE软件版本错误" + "\r\n";
                         label_Step.Text = "TE软件版本错误,测试结束!";
@@ -1788,15 +1864,17 @@ namespace MOTINOVA_Motor_Factory_Set
             Delay_ms(1000);
             #endregion
 
+            #region 按照产品信息设置测试文件路径
+            ResultPathName = textBox_PDinfo.Text + "_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_");
+            if (System.IO.Directory.Exists(LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName) == false)
+                System.IO.Directory.CreateDirectory(LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName);
+            #endregion
+
             #region Step7:参数查询和保存
             TestStep = TestStep_Enum.Step_Save;
             label_Step.Text = "参数导出";
             richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "开始导出电机内部参数" + "\r\n";
-            //设置保存路径
-            LogSaveFileName = System.IO.Directory.GetCurrentDirectory() + "\\log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\";
-            if (System.IO.Directory.Exists(LogSaveFileName) == false)
-                System.IO.Directory.CreateDirectory(LogSaveFileName);
-            LogSaveFileName += textBox_PDinfo.Text + "_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_") + "_ParamsLog" + ".ttlog";
+            LogSaveFileName = LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName + "\\ParamsLog" + ".ttlog";
 
             //开始发送指令
             byte[] SendData = new byte[32];
@@ -1964,7 +2042,11 @@ namespace MOTINOVA_Motor_Factory_Set
                 {
                     StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow);
                 }
-                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTestlog/" + DateNow);
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow, ResultPathName) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow + "/" + ResultPathName);
+                }
+                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow + "/" + ResultPathName);
                 if (result == true)
                     richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "电机配置参数上传服务器成功" + "\r\n";
             }
@@ -1974,10 +2056,7 @@ namespace MOTINOVA_Motor_Factory_Set
             Bitmap bit = new Bitmap(this.Width, this.Height);//实例化一个和窗体一样大的bitmap
             Graphics g = Graphics.FromImage(bit);
             g.CopyFromScreen(this.Left, this.Top, 0, 0, new Size(this.Width, this.Height));//保存整个窗体为图片  
-            LogSaveFileName = System.IO.Directory.GetCurrentDirectory() + "\\walkTest\\log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\";
-            if (System.IO.Directory.Exists(LogSaveFileName) == false)
-                System.IO.Directory.CreateDirectory(LogSaveFileName);
-            LogSaveFileName += textBox_PDinfo.Text + "_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_") + "_测试记录" + ".png";
+            LogSaveFileName = LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName + "\\测试页面" + ".png";
             bit.Save(LogSaveFileName);
             //测试页面上传服务器
             if(StartForm.myFtp.IsNetConnected==true)
@@ -1987,16 +2066,17 @@ namespace MOTINOVA_Motor_Factory_Set
                 {
                     StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow);
                 }
-                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow);
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow, ResultPathName) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow + "/" + ResultPathName);
+                }
+                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow + "/" + ResultPathName);
                 if (result == true)
                     richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "测试页面上传服务器成功" + "\r\n";
             }
 
             //保存测试记录
-            LogSaveFileName = System.IO.Directory.GetCurrentDirectory() + "\\walkTest\\log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\";
-            if (System.IO.Directory.Exists(LogSaveFileName) == false)
-                System.IO.Directory.CreateDirectory(LogSaveFileName);
-            LogSaveFileName += textBox_PDinfo.Text + "_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_") + "_测试记录" + ".txt";
+            LogSaveFileName = LogSavePath + "log\\" + DateTime.Now.ToString("yyyy-MM-dd").Replace("/", "-") + "\\" + ResultPathName + "\\测试记录" + ".txt";
             richTextBox_TestRecord.SaveFile(LogSaveFileName, RichTextBoxStreamType.PlainText);
             //测试记录上传服务器
             if (StartForm.myFtp.IsNetConnected == true)
@@ -2006,7 +2086,11 @@ namespace MOTINOVA_Motor_Factory_Set
                 {
                     StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow);
                 }
-                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow);
+                if (StartForm.myFtp.DirectoryExist(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow, ResultPathName) == false)
+                {
+                    StartForm.myFtp.MakeDir(StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow + "/" + ResultPathName);
+                }
+                bool result = StartForm.myFtp.UploadFile(LogSaveFileName, StartForm.myServerCfg.RootPath + "/walkTest/log/" + DateNow + "/" + ResultPathName);
                 if (result == true)
                     richTextBox_TestRecord.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->" + "测试记录上传服务器成功" + "\r\n";
             }
@@ -2015,6 +2099,12 @@ namespace MOTINOVA_Motor_Factory_Set
         //开始测试
         private void button_Start_Click(object sender, EventArgs e)
         {
+            TestStart();
+        }
+
+        //测试子函数
+        private void TestStart()
+        { 
             //检查是否有故障
             if (label_error_code.Text != "OK")
             {
@@ -2046,24 +2136,24 @@ namespace MOTINOVA_Motor_Factory_Set
             #endregion
 
             #region 检查产品信息是否符合格式要求
-            try
-            {
-                string Mode = textBox_PDinfo.Text.Split(new string[] { "  " }, StringSplitOptions.None)[0];
-                string Sn = textBox_PDinfo.Text.Split(new string[] { "  " }, StringSplitOptions.None)[1];
-                Regex regex = new Regex(@"^M[12][0-9](0?[1-9]|1[0-2])((0?[1-9])|((1|2)[0-9])|30|31)[A-Z]\d{4}[A-Z]$");
-                if (regex.IsMatch(Sn) == false)
-                {
-                    label_Step.Text = "SN格式错误!";
-                    label_Step.ForeColor = Color.Red;
-                    return;
-                }
-            }
-            catch (System.Exception ex)
-            { 
-                label_Step.Text = "标签格式错误!";
-                label_Step.ForeColor = Color.Red;
-                return;
-            }
+                        try
+                        {
+                            string Mode = textBox_PDinfo.Text.Split(new string[] { "  " }, StringSplitOptions.None)[0];
+                            string Sn = textBox_PDinfo.Text.Split(new string[] { "  " }, StringSplitOptions.None)[1];
+                            Regex regex = new Regex(@"^M[12][0-9](0?[1-9]|1[0-2])((0?[1-9])|((1|2)[0-9])|30|31)[A-Z]\d{4}[A-Z]$");
+                            if (regex.IsMatch(Sn) == false)
+                            {
+                                label_Step.Text = "SN格式错误!";
+                                label_Step.ForeColor = Color.Red;
+                                return;
+                            }
+                        }
+                        catch (System.Exception ex)
+                        { 
+                            label_Step.Text = "标签格式错误!";
+                            label_Step.ForeColor = Color.Red;
+                            return;
+                        }
             #endregion
 
             //测试状态更新
@@ -2243,5 +2333,12 @@ namespace MOTINOVA_Motor_Factory_Set
             textBox_PDinfo.SelectAll();
         }
 
+        private void textBox_PDinfo_KeyUp(object sender, KeyEventArgs e)
+        {
+            if (e.KeyCode == Keys.Enter)
+            {
+                TestStart();
+            }
+        }
     }
 }

+ 15 - 0
MOTINOVA_Motor_Factory_Set.csproj

@@ -80,6 +80,12 @@
     <Compile Include="CheckForm.Designer.cs">
       <DependentUpon>CheckForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="Enter.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Enter.Designer.cs">
+      <DependentUpon>Enter.cs</DependentUpon>
+    </Compile>
     <Compile Include="ExportForm.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -118,6 +124,9 @@
     <EmbeddedResource Include="CheckForm.resx">
       <DependentUpon>CheckForm.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Enter.resx">
+      <DependentUpon>Enter.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="ExportForm.resx">
       <DependentUpon>ExportForm.cs</DependentUpon>
     </EmbeddedResource>
@@ -175,5 +184,11 @@
       <Install>true</Install>
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\ttium.bmp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\836618239619717251.jpg" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 16 - 0
MOTINOVA_Motor_Factory_Set.csproj.user

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <PublishUrlHistory>D:\SoftDesign\MOTINOVA_Motor_Factory_Set\|publish\</PublishUrlHistory>
+    <InstallUrlHistory />
+    <SupportUrlHistory />
+    <UpdateUrlHistory />
+    <BootstrapperUrlHistory />
+    <ErrorReportUrlHistory />
+    <FallbackCulture>zh-CN</FallbackCulture>
+    <VerifyUploadedFiles>false</VerifyUploadedFiles>
+  </PropertyGroup>
+  <PropertyGroup>
+    <EnableSecurityDebugging>false</EnableSecurityDebugging>
+  </PropertyGroup>
+</Project>

BIN
MOTINOVA_Motor_Factory_Set_TemporaryKey.pfx


+ 14 - 70
ManageForm.Designer.cs

@@ -29,65 +29,16 @@
         private void InitializeComponent()
         {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ManageForm));
-            this.textBox_Pwd = new System.Windows.Forms.TextBox();
-            this.groupBox_Pwd = new System.Windows.Forms.GroupBox();
-            this.button_Enter = new System.Windows.Forms.Button();
-            this.label1 = new System.Windows.Forms.Label();
             this.groupBox_File = new System.Windows.Forms.GroupBox();
+            this.comboBox_Date = new System.Windows.Forms.ComboBox();
             this.richTextBox1 = new System.Windows.Forms.RichTextBox();
             this.listBox_File = new System.Windows.Forms.ListBox();
             this.label2 = new System.Windows.Forms.Label();
             this.button_Delete = new System.Windows.Forms.Button();
             this.button_OpenFile = new System.Windows.Forms.Button();
-            this.comboBox_Date = new System.Windows.Forms.ComboBox();
-            this.groupBox_Pwd.SuspendLayout();
             this.groupBox_File.SuspendLayout();
             this.SuspendLayout();
             // 
-            // textBox_Pwd
-            // 
-            this.textBox_Pwd.Location = new System.Drawing.Point(63, 44);
-            this.textBox_Pwd.Name = "textBox_Pwd";
-            this.textBox_Pwd.Size = new System.Drawing.Size(175, 29);
-            this.textBox_Pwd.TabIndex = 4;
-            this.textBox_Pwd.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.textBox_Pwd.UseSystemPasswordChar = true;
-            // 
-            // groupBox_Pwd
-            // 
-            this.groupBox_Pwd.BackColor = System.Drawing.Color.White;
-            this.groupBox_Pwd.Controls.Add(this.button_Enter);
-            this.groupBox_Pwd.Controls.Add(this.label1);
-            this.groupBox_Pwd.Controls.Add(this.textBox_Pwd);
-            this.groupBox_Pwd.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
-            this.groupBox_Pwd.Location = new System.Drawing.Point(227, 202);
-            this.groupBox_Pwd.Name = "groupBox_Pwd";
-            this.groupBox_Pwd.Size = new System.Drawing.Size(320, 100);
-            this.groupBox_Pwd.TabIndex = 10;
-            this.groupBox_Pwd.TabStop = false;
-            this.groupBox_Pwd.Text = "请输入管理员密码";
-            // 
-            // button_Enter
-            // 
-            this.button_Enter.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
-            this.button_Enter.ForeColor = System.Drawing.Color.White;
-            this.button_Enter.Location = new System.Drawing.Point(248, 38);
-            this.button_Enter.Name = "button_Enter";
-            this.button_Enter.Size = new System.Drawing.Size(60, 40);
-            this.button_Enter.TabIndex = 12;
-            this.button_Enter.Text = "进入";
-            this.button_Enter.UseVisualStyleBackColor = false;
-            this.button_Enter.Click += new System.EventHandler(this.button_Enter_Click);
-            // 
-            // label1
-            // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(15, 48);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(42, 21);
-            this.label1.TabIndex = 11;
-            this.label1.Text = "密码";
-            // 
             // groupBox_File
             // 
             this.groupBox_File.Controls.Add(this.comboBox_Date);
@@ -101,16 +52,26 @@
             this.groupBox_File.TabStop = false;
             this.groupBox_File.Text = "可用配置文件";
             // 
+            // comboBox_Date
+            // 
+            this.comboBox_Date.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.comboBox_Date.FormattingEnabled = true;
+            this.comboBox_Date.Location = new System.Drawing.Point(6, 28);
+            this.comboBox_Date.Name = "comboBox_Date";
+            this.comboBox_Date.Size = new System.Drawing.Size(121, 29);
+            this.comboBox_Date.TabIndex = 2;
+            this.comboBox_Date.SelectionChangeCommitted += new System.EventHandler(this.comboBox_Date_SelectionChangeCommitted);
+            // 
             // richTextBox1
             // 
             this.richTextBox1.BackColor = System.Drawing.Color.White;
-            this.richTextBox1.Location = new System.Drawing.Point(7, 70);
+            this.richTextBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.richTextBox1.Location = new System.Drawing.Point(6, 70);
             this.richTextBox1.Name = "richTextBox1";
             this.richTextBox1.ReadOnly = true;
-            this.richTextBox1.Size = new System.Drawing.Size(656, 422);
+            this.richTextBox1.Size = new System.Drawing.Size(657, 422);
             this.richTextBox1.TabIndex = 1;
             this.richTextBox1.Text = "";
-            this.richTextBox1.Visible = false;
             // 
             // listBox_File
             // 
@@ -160,16 +121,6 @@
             this.button_OpenFile.Visible = false;
             this.button_OpenFile.Click += new System.EventHandler(this.button_OpenFile_Click);
             // 
-            // comboBox_Date
-            // 
-            this.comboBox_Date.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
-            this.comboBox_Date.FormattingEnabled = true;
-            this.comboBox_Date.Location = new System.Drawing.Point(6, 28);
-            this.comboBox_Date.Name = "comboBox_Date";
-            this.comboBox_Date.Size = new System.Drawing.Size(121, 29);
-            this.comboBox_Date.TabIndex = 2;
-            this.comboBox_Date.SelectionChangeCommitted += new System.EventHandler(this.comboBox_Date_SelectionChangeCommitted);
-            // 
             // ManageForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
@@ -179,7 +130,6 @@
             this.Controls.Add(this.label2);
             this.Controls.Add(this.button_OpenFile);
             this.Controls.Add(this.button_Delete);
-            this.Controls.Add(this.groupBox_Pwd);
             this.Controls.Add(this.groupBox_File);
             this.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
@@ -190,8 +140,6 @@
             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
             this.Text = "本地管理";
             this.Load += new System.EventHandler(this.ManageForm_Load);
-            this.groupBox_Pwd.ResumeLayout(false);
-            this.groupBox_Pwd.PerformLayout();
             this.groupBox_File.ResumeLayout(false);
             this.ResumeLayout(false);
             this.PerformLayout();
@@ -199,10 +147,6 @@
         }
 
         #endregion
-        private System.Windows.Forms.TextBox textBox_Pwd;
-        private System.Windows.Forms.GroupBox groupBox_Pwd;
-        private System.Windows.Forms.Label label1;
-        private System.Windows.Forms.Button button_Enter;
         private System.Windows.Forms.GroupBox groupBox_File;
         private System.Windows.Forms.ListBox listBox_File;
         private System.Windows.Forms.Label label2;

+ 9 - 25
ManageForm.cs

@@ -12,7 +12,7 @@ namespace MOTINOVA_Motor_Factory_Set
 {
     public partial class ManageForm : Form
     {
-        string FilePath = "cfg\\";//文件路径
+        public string FilePath = "";//文件路径
 
         public ManageForm()
         {
@@ -21,10 +21,14 @@ namespace MOTINOVA_Motor_Factory_Set
 
         private void ManageForm_Load(object sender, EventArgs e)
         {
-            groupBox_Pwd.Visible = true;
-            groupBox_File.Visible = false;
-            button_Delete.Visible = false;
-            button_OpenFile.Visible = false;
+            groupBox_File.Visible = true;
+            button_Delete.Visible = true;
+            button_OpenFile.Visible = true;
+            richTextBox1.Visible = false;
+            
+            if (System.IO.Directory.Exists(FilePath) == false)
+                System.IO.Directory.CreateDirectory(FilePath);
+            ListDate(FilePath);
         }
 
         private void ListDate(string path)
@@ -43,26 +47,6 @@ namespace MOTINOVA_Motor_Factory_Set
             }
         }
 
-        private void button_Enter_Click(object sender, EventArgs e)
-        {
-            if (textBox_Pwd.Text == "123456")
-            {
-                groupBox_Pwd.Visible = false;
-                groupBox_File.Visible = true;
-                button_Delete.Visible = true;
-                button_OpenFile.Visible = true;
-
-                if (System.IO.Directory.Exists(FilePath) == false)
-                    System.IO.Directory.CreateDirectory(FilePath);
-                ListDate(FilePath);
-            }
-            else
-            {
-                MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
-                textBox_Pwd.Text = "";
-            }
-        }
-
         private void ListFileRefresh(string path)
         {
             var files = Directory.GetFiles(path, "*.ttcfg");

+ 30 - 0
Properties/Resources.Designer.cs

@@ -60,6 +60,16 @@ namespace MOTINOVA_Motor_Factory_Set.Properties {
             }
         }
         
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap _836618239619717251 {
+            get {
+                object obj = ResourceManager.GetObject("836618239619717251", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   查找 System.Drawing.Bitmap 类型的本地化资源。
         /// </summary>
@@ -99,5 +109,25 @@ namespace MOTINOVA_Motor_Factory_Set.Properties {
                 return ((System.Drawing.Bitmap)(obj));
             }
         }
+        
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap title1 {
+            get {
+                object obj = ResourceManager.GetObject("title1", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ttium {
+            get {
+                object obj = ResourceManager.GetObject("ttium", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
     }
 }

+ 13 - 4
Properties/Resources.resx

@@ -118,17 +118,26 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="ttium" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\ttium.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="close1" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\images\close1.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="title" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\images\title.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="MkqN4K4Mvj" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\images\MkqN4K4Mvj.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="timg" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\images\timg.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="title" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\images\title.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="title1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\images\title.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="MkqN4K4Mvj" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\images\MkqN4K4Mvj.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="836618239619717251" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\836618239619717251.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
 </root>

+ 69 - 0
Properties/app.manifest

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

BIN
Resources/836618239619717251.jpg


BIN
Resources/ttium.bmp


+ 33 - 18
StartForm.Designer.cs

@@ -37,17 +37,19 @@
             this.label_Ver = new System.Windows.Forms.Label();
             this.label_NetStatus = new System.Windows.Forms.Label();
             this.button_Check = new System.Windows.Forms.Button();
+            this.pictureBox2 = new System.Windows.Forms.PictureBox();
             this.pictureBox1 = new System.Windows.Forms.PictureBox();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
             this.SuspendLayout();
             // 
             // button_Export
             // 
-            this.button_Export.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.button_Export.BackColor = System.Drawing.Color.DimGray;
             this.button_Export.Enabled = false;
             this.button_Export.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.button_Export.ForeColor = System.Drawing.Color.White;
-            this.button_Export.Location = new System.Drawing.Point(490, 179);
+            this.button_Export.Location = new System.Drawing.Point(154, 302);
             this.button_Export.Margin = new System.Windows.Forms.Padding(5);
             this.button_Export.Name = "button_Export";
             this.button_Export.Size = new System.Drawing.Size(150, 80);
@@ -58,11 +60,11 @@
             // 
             // button_Import
             // 
-            this.button_Import.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.button_Import.BackColor = System.Drawing.Color.DarkGoldenrod;
             this.button_Import.Enabled = false;
             this.button_Import.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.button_Import.ForeColor = System.Drawing.Color.White;
-            this.button_Import.Location = new System.Drawing.Point(144, 179);
+            this.button_Import.Location = new System.Drawing.Point(154, 187);
             this.button_Import.Margin = new System.Windows.Forms.Padding(5);
             this.button_Import.Name = "button_Import";
             this.button_Import.Size = new System.Drawing.Size(150, 80);
@@ -83,11 +85,11 @@
             // 
             // button_Mang
             // 
-            this.button_Mang.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.button_Mang.BackColor = System.Drawing.Color.DimGray;
             this.button_Mang.Enabled = false;
             this.button_Mang.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.button_Mang.ForeColor = System.Drawing.Color.White;
-            this.button_Mang.Location = new System.Drawing.Point(490, 294);
+            this.button_Mang.Location = new System.Drawing.Point(477, 302);
             this.button_Mang.Margin = new System.Windows.Forms.Padding(5);
             this.button_Mang.Name = "button_Mang";
             this.button_Mang.Size = new System.Drawing.Size(150, 80);
@@ -120,21 +122,21 @@
             // 
             // label_NetStatus
             // 
-            this.label_NetStatus.AutoSize = true;
             this.label_NetStatus.ForeColor = System.Drawing.Color.Red;
-            this.label_NetStatus.Location = new System.Drawing.Point(657, 497);
+            this.label_NetStatus.Location = new System.Drawing.Point(623, 497);
             this.label_NetStatus.Name = "label_NetStatus";
-            this.label_NetStatus.Size = new System.Drawing.Size(116, 21);
+            this.label_NetStatus.Size = new System.Drawing.Size(157, 21);
             this.label_NetStatus.TabIndex = 2;
             this.label_NetStatus.Text = "网络连接中……";
+            this.label_NetStatus.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
             // 
             // button_Check
             // 
-            this.button_Check.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(113)))), ((int)(((byte)(185)))));
+            this.button_Check.BackColor = System.Drawing.Color.Green;
             this.button_Check.Enabled = false;
             this.button_Check.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.button_Check.ForeColor = System.Drawing.Color.White;
-            this.button_Check.Location = new System.Drawing.Point(144, 294);
+            this.button_Check.Location = new System.Drawing.Point(477, 187);
             this.button_Check.Margin = new System.Windows.Forms.Padding(5);
             this.button_Check.Name = "button_Check";
             this.button_Check.Size = new System.Drawing.Size(150, 80);
@@ -143,14 +145,24 @@
             this.button_Check.UseVisualStyleBackColor = false;
             this.button_Check.Click += new System.EventHandler(this.button_Check_Click);
             // 
+            // pictureBox2
+            // 
+            this.pictureBox2.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources._836618239619717251;
+            this.pictureBox2.Location = new System.Drawing.Point(16, 475);
+            this.pictureBox2.Name = "pictureBox2";
+            this.pictureBox2.Size = new System.Drawing.Size(83, 43);
+            this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox2.TabIndex = 33;
+            this.pictureBox2.TabStop = false;
+            // 
             // pictureBox1
             // 
-            this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
-            this.pictureBox1.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources.title;
-            this.pictureBox1.Location = new System.Drawing.Point(304, 434);
+            this.pictureBox1.Image = global::MOTINOVA_Motor_Factory_Set.Properties.Resources.title1;
+            this.pictureBox1.Location = new System.Drawing.Point(108, 485);
             this.pictureBox1.Name = "pictureBox1";
-            this.pictureBox1.Size = new System.Drawing.Size(170, 25);
-            this.pictureBox1.TabIndex = 1;
+            this.pictureBox1.Size = new System.Drawing.Size(136, 33);
+            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox1.TabIndex = 32;
             this.pictureBox1.TabStop = false;
             // 
             // StartForm
@@ -159,11 +171,12 @@
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.BackColor = System.Drawing.Color.White;
             this.ClientSize = new System.Drawing.Size(780, 558);
+            this.Controls.Add(this.pictureBox2);
+            this.Controls.Add(this.pictureBox1);
             this.Controls.Add(this.button_Check);
             this.Controls.Add(this.label_Ver);
             this.Controls.Add(this.label_NetStatus);
             this.Controls.Add(this.label1);
-            this.Controls.Add(this.pictureBox1);
             this.Controls.Add(this.button_Mang);
             this.Controls.Add(this.button_Import);
             this.Controls.Add(this.button_Export);
@@ -179,6 +192,7 @@
             this.Text = "MOTINOVA电机量产测试工具";
             this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.StartForm_FormClosing);
             this.Load += new System.EventHandler(this.StartForm_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
             this.ResumeLayout(false);
             this.PerformLayout();
@@ -189,13 +203,14 @@
 
         private System.Windows.Forms.Button button_Export;
         private System.Windows.Forms.Button button_Import;
-        private System.Windows.Forms.PictureBox pictureBox1;
         private System.Windows.Forms.Label label1;
         private System.Windows.Forms.Button button_Mang;
         private System.Windows.Forms.Label label2;
         private System.Windows.Forms.Label label_Ver;
         public System.Windows.Forms.Label label_NetStatus;
         private System.Windows.Forms.Button button_Check;
+        private System.Windows.Forms.PictureBox pictureBox2;
+        private System.Windows.Forms.PictureBox pictureBox1;
     }
 }
 

+ 74 - 16
StartForm.cs

@@ -18,6 +18,8 @@ namespace MOTINOVA_Motor_Factory_Set
         public static ExportForm ExportForm1 = new ExportForm();
         public static ManageForm ManageForm1 = new ManageForm();
         public static CheckForm CheckForm1 = new CheckForm();
+        public static Enter EnterForm1 = new Enter();
+        public static string UserPath = "";
 
         public StartForm()
         {
@@ -26,12 +28,45 @@ namespace MOTINOVA_Motor_Factory_Set
             myServerCfg.MyServerOption(Directory.GetCurrentDirectory() + "\\Server");
             //配置FTP服务器
             myFtp.FtpOption(myServerCfg.IP, myServerCfg.Port, myServerCfg.User, myServerCfg.PassWd);
+            //配置数据存储路径
+            UserPath = GetLogSavePath(Directory.GetCurrentDirectory() + "\\UserPath");
+            ImportForm1.LocalCfgFilePath = UserPath + "\\cfg\\";
+            ImportForm1.LogSavePath = UserPath+ "\\walkTest\\";
+            CheckForm1.LocalCfgFilePath = UserPath + "\\cfg\\";
+            CheckForm1.LogSavePath = UserPath + "\\qcTest\\";
+            ManageForm1.FilePath = UserPath + "\\cfg\\";
+            ExportForm1.FilePath = UserPath + "\\cfg\\";
             //创建线程,定时检测网络连接状态
             Thread th = new Thread(NetworkCheck);
             th.IsBackground = true;
             th.Start();
         }
 
+        //读取数据存储路径
+        string GetLogSavePath(string fileName)
+        {
+            string result = "";
+            //加载配置文件
+            StreamReader objReader = new StreamReader(fileName);
+            string sLine = "";
+            List<string> array_CfgInfo = new List<string>();
+            while (sLine != null)
+            {
+                sLine = objReader.ReadLine();
+                array_CfgInfo.Add(sLine);
+            }
+            objReader.Close();
+            try
+            {
+                result = array_CfgInfo[1];
+            }
+            catch(Exception e)
+            {
+                MessageBox.Show(e.Message);
+            }
+            return result;
+        }
+
         //检查网络状态线程
         private void NetworkCheck()
         {
@@ -54,12 +89,12 @@ namespace MOTINOVA_Motor_Factory_Set
                         ImportForm1.checkBox_LocalFile.Checked = false;
                         ImportForm1.checkBox_LocalFile.Enabled = false;
                     }
-                    else//允许本地文件
+                    else//允许本地文件,默认在线模式
                     {
                         CheckForm1.checkBox_LocalFile.Checked = false;
                         CheckForm1.checkBox_LocalFile.Enabled = true;
-                        ImportForm1.checkBox_LocalFile.Checked = true;
-                        ImportForm1.checkBox_LocalFile.Enabled = false;
+                        ImportForm1.checkBox_LocalFile.Checked = false;
+                        ImportForm1.checkBox_LocalFile.Enabled = true;
                     }
                     myFtp.IsNetConnected = true;
                 }
@@ -102,7 +137,10 @@ namespace MOTINOVA_Motor_Factory_Set
             timer_CheckNet.Interval = 3000;
             timer_CheckNet.Elapsed += new System.Timers.ElapsedEventHandler(this.timer_CheckNet_Tick);
             timer_CheckNet.Start();
-            while (true) ;
+            while (true)
+            {
+                Thread.Sleep(1);
+            }
         }
 
         //线程中定时任务,检查网络状态
@@ -155,34 +193,54 @@ namespace MOTINOVA_Motor_Factory_Set
         {
             if (myServerCfg.Local == "DISABLE")//不允许本地文件
             {
-                MessageBox.Show("请检查网络,或联系管理员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
-            }
-            else
-            {
-                ImportForm1.ShowDialog();
+                if (myFtp.IsNetConnected == false)
+                {
+                    MessageBox.Show("请检查网络,或联系管理员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                    return;
+                }
             }
+            CheckForm1.timer1.Enabled = false;
+            ImportForm1.ShowDialog();
         }
 
         private void button_Export_Click(object sender, EventArgs e)
         {
-            ExportForm1.ShowDialog();
+            EnterForm1.ShowDialog();
+            if ((EnterForm1.textBox_User.Text == "PT") && (EnterForm1.textBox_Passwd.Text == "123456"))
+            {
+                ExportForm1.ShowDialog();
+            }
+            else
+            {
+                MessageBox.Show("密码错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            }
         }
         
         private void button_Mang_Click(object sender, EventArgs e)
         {
-            ManageForm1.ShowDialog();
+            EnterForm1.ShowDialog();
+            if ((EnterForm1.textBox_User.Text == "PT") && (EnterForm1.textBox_Passwd.Text == "123456"))
+            {
+                ManageForm1.ShowDialog();
+            }
+            else
+            {
+                MessageBox.Show("密码错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            }
         }
 
         private void button_Check_Click(object sender, EventArgs e)
         {
             if (myServerCfg.Local == "DISABLE")//不允许本地文件
             {
-                MessageBox.Show("请检查网络,或联系管理员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
-            }
-            else
-            {
-                CheckForm1.ShowDialog();
+                if (myFtp.IsNetConnected == false)
+                {
+                    MessageBox.Show("请检查网络,或联系管理员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                    return;
+                }
             }
+            ImportForm1.timer1.Enabled = false;
+            CheckForm1.ShowDialog();
         }
 
         private void StartForm_Load(object sender, EventArgs e)

+ 48 - 0
TorqueCheckParam.cs

@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace MOTINOVA_Motor_Factory_Set
+{
+    class TorqueCheckParam
+    {
+        public UInt16 Zero_Min;
+        public UInt16 Zero_Max;
+        public float Cal_K_Min;
+        public float Cal_K_Max;
+        public UInt16 Start_Min;
+        public UInt16 Start_Max;
+
+        public void CheckParam_Load(string fileName)
+        {
+            //加载配置文件
+            StreamReader objReader = new StreamReader(fileName);
+            string sLine = "";
+            List<string> array_CfgInfo = new List<string>();
+            while (sLine != null)
+            {
+                sLine = objReader.ReadLine();
+                array_CfgInfo.Add(sLine);
+            }
+            objReader.Close();
+            //查找测试阈值行号
+            int Num = 0;
+            foreach (string info in array_CfgInfo)
+            {
+                if (info.Contains("测试阈值"))
+                {
+                    Num = array_CfgInfo.IndexOf(info);
+                    break;
+                }
+            }
+            //设定判断范围值
+            Zero_Min = Convert.ToUInt16(array_CfgInfo[Num + 4].Split(',')[1]);
+            Zero_Max = Convert.ToUInt16(array_CfgInfo[Num + 5].Split(',')[1]);
+            Cal_K_Min = (Convert.ToUInt16(array_CfgInfo[Num + 6].Split(',')[1])) / 100.0f;
+            Cal_K_Max = (Convert.ToUInt16(array_CfgInfo[Num + 7].Split(',')[1])) / 100.0f;
+            Start_Min = Convert.ToUInt16(array_CfgInfo[Num + 8].Split(',')[1]);
+            Start_Max = Convert.ToUInt16(array_CfgInfo[Num + 9].Split(',')[1]);
+        }
+    }
+}

+ 18 - 0
bin/Debug/MOTINOVA_Motor_Factory_Set.application

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
+  <assemblyIdentity name="MOTINOVA_Motor_Factory_Set.application" version="1.0.0.1" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
+  <description asmv2:publisher="Microsoft" asmv2:product="MOTINOVA_Motor_Factory_Set" xmlns="urn:schemas-microsoft-com:asm.v1" />
+  <deployment install="true" mapFileExtensions="true" />
+  <dependency>
+    <dependentAssembly dependencyType="install" codebase="MOTINOVA_Motor_Factory_Set.exe.manifest" size="4087">
+      <assemblyIdentity name="MOTINOVA_Motor_Factory_Set.exe" version="1.0.0.1" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="msil" type="win32" />
+      <hash>
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>8lkjG1Zwi0WZnf+1KglST0n7rIY=</dsig:DigestValue>
+      </hash>
+    </dependentAssembly>
+  </dependency>
+</asmv1:assembly>

BIN
bin/Debug/MOTINOVA_Motor_Factory_Set.exe


+ 72 - 0
bin/Debug/MOTINOVA_Motor_Factory_Set.exe.manifest

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
+  <asmv1:assemblyIdentity name="MOTINOVA_Motor_Factory_Set.exe" version="1.0.0.1" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="msil" type="win32" />
+  <application />
+  <entryPoint>
+    <assemblyIdentity name="MOTINOVA_Motor_Factory_Set" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
+    <commandLine file="MOTINOVA_Motor_Factory_Set.exe" parameters="" />
+  </entryPoint>
+  <trustInfo>
+    <security>
+      <applicationRequestMinimum>
+        <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
+        <defaultAssemblyRequest permissionSetReference="Custom" />
+      </applicationRequestMinimum>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <!-- UAC 清单选项
+             如果想要更改 Windows 用户帐户控制级别,请使用
+             以下节点之一替换 requestedExecutionLevel 节点。n
+        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
+        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
+        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
+
+            指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
+            如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
+            元素。
+        -->
+        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+  <dependency>
+    <dependentOS>
+      <osVersionInfo>
+        <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
+      </osVersionInfo>
+    </dependentOS>
+  </dependency>
+  <dependency>
+    <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
+      <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="2.0.50727.0" />
+    </dependentAssembly>
+  </dependency>
+  <dependency>
+    <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MOTINOVA_Motor_Factory_Set.exe" size="624032">
+      <assemblyIdentity name="MOTINOVA_Motor_Factory_Set" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
+      <hash>
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>ZNs+1N2BDSXC8XXi4JDfnVzNov0=</dsig:DigestValue>
+      </hash>
+    </dependentAssembly>
+  </dependency>
+  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+    <application>
+      <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
+           Windows 版本的列表。取消评论适当的元素,
+           Windows 将自动选择最兼容的环境。 -->
+      <!-- Windows Vista -->
+      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
+      <!-- Windows 7 -->
+      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
+      <!-- Windows 8 -->
+      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
+      <!-- Windows 8.1 -->
+      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
+      <!-- Windows 10 -->
+      <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
+    </application>
+  </compatibility>
+</asmv1:assembly>

BIN
bin/Debug/MOTINOVA_Motor_Factory_Set.pdb


+ 1 - 1
bin/Debug/SerialNum

@@ -1,2 +1,2 @@
 流水号:
-45
+231

+ 20 - 0
bin/Debug/Server

@@ -0,0 +1,20 @@
+IP=192.168.1.74
+PORT=21
+USER=factory_test
+PASSWD=ttium
+ROOT=MOTINOVA_MC_Factory_Set
+LOCAL=ENABLE
+
+IP=47.105.122.91
+PORT=21
+USER=ftptest
+PASSWD=123456
+ROOT=/home/ftptest
+LOCAL=ENABLE
+
+IP=192.168.1.246
+PORT=21
+USER=hero
+PASSWD=1229
+ROOT=/home/hero/MOTINOVA_MC_Factory_Set
+LOCAL=ENABLE

+ 5 - 0
bin/Debug/TorqueCheckParam

@@ -0,0 +1,5 @@
+Zero=200,1900
+
+K=0.25,0.75
+
+Start=200,790

+ 2 - 0
bin/Debug/UserPath

@@ -0,0 +1,2 @@
+[logPath]
+C:\Users\Dail\Desktop

BIN
bin/Debug/app.publish/MOTINOVA_Motor_Factory_Set.exe


BIN
bin/Debug/errorlog/2021-10-27/VS7500%#1111_2021-10-27_115015_测试记录.png


BIN
bin/Debug/errorlog/2021-10-27/VS7500%#M210101A0001A_2021-10-27_113316_测试记录.png


BIN
bin/Debug/errorlog/2021-10-27/VS7500%#M210111A0001A_2021-10-27_113013_测试记录.png


BIN
bin/Debug/notice.wav


+ 6 - 2
ftp.cs

@@ -119,6 +119,10 @@ namespace MOTINOVA_Motor_Factory_Set
             try
             {
                 string fileName = sourceFullPath.Substring(sourceFullPath.LastIndexOf("/"));
+                if (!Directory.Exists(targePath))//不存在就创建文件夹
+                {
+                    Directory.CreateDirectory(targePath);
+                }
                 return DownLoadReName(sourceFullPath, targePath + fileName);
             }
             catch (Exception ex)
@@ -222,13 +226,13 @@ namespace MOTINOVA_Motor_Factory_Set
                     //现在写代码包容两种格式的字符串
                     if (!str.Trim().Contains("<DIR>"))
                     {
-                        strList.Add(str.Substring(str.LastIndexOf(" ") + 1).Trim()) ;
+                        strList.Add(str.Substring(str.LastIndexOf(":") + 4).Trim()) ;
                     }
                     else
                     {
                         if (str.Trim().Substring(0, 1).ToUpper() != "D")
                         {
-                            strList.Add(str.Substring(str.LastIndexOf(" ") + 1).Trim()) ;
+                            strList.Add(str.Substring(str.LastIndexOf(":") + 1).Trim()) ;
                         }
                     }
                 }

BIN
images/075-check.ico


BIN
images/6477DB93-5726-4E9D-9171-FB481875B811.ico


BIN
obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
obj/Debug/MOTINOVA_Motor_Factory_Set.Properties.Resources.resources


+ 1 - 1
obj/Debug/MOTINOVA_Motor_Factory_Set.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-aee015634c95a98a7a5555f2a5296991ed41ab41
+94cd8bad1de510b5b5ce4fb5640c228aad71f97b

+ 1 - 0
obj/Debug/MOTINOVA_Motor_Factory_Set.csproj.FileListAbsolute.txt

@@ -17,3 +17,4 @@ D:\SoftDesign\MOTINOVA_Motor_Factory_Set\MOTINOVA_Motor_Factory_Set\obj\Debug\MO
 D:\SoftDesign\MOTINOVA_Motor_Factory_Set\MOTINOVA_Motor_Factory_Set\obj\Debug\MOTINOVA_Motor_Factory_Set.exe
 D:\SoftDesign\MOTINOVA_Motor_Factory_Set\MOTINOVA_Motor_Factory_Set\obj\Debug\MOTINOVA_Motor_Factory_Set.pdb
 D:\SoftDesign\MOTINOVA_Motor_Factory_Set\MOTINOVA_Motor_Factory_Set\obj\Debug\MOTINOVA_Motor_Factory_Set.CheckForm.resources
+D:\SoftDesign\MOTINOVA_Motor_Factory_Set\MOTINOVA_Motor_Factory_Set\obj\Debug\MOTINOVA_Motor_Factory_Set.Enter.resources

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


BIN
obj/Debug/MOTINOVA_Motor_Factory_Set.csprojAssemblyReference.cache


BIN
obj/Debug/MOTINOVA_Motor_Factory_Set.exe


BIN
obj/Debug/MOTINOVA_Motor_Factory_Set.pdb


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


+ 38 - 0
server_cfg.cs

@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace MOTINOVA_Motor_Factory_Set
+{
+    public class server_cfg
+    {
+        public string IP;
+        public string Port;
+        public string User;
+        public string PassWd;
+        public string RootPath;
+        public string Local;
+
+        public void MyServerOption(string fileName)
+        {
+            //加载配置文件
+            StreamReader objReader = new StreamReader(fileName);
+            string sLine = "";
+            List<string> array_CfgInfo = new List<string>();
+            while (sLine != null)
+            {
+                sLine = objReader.ReadLine();
+                array_CfgInfo.Add(sLine);
+            }
+            objReader.Close();
+            //设定服务器配置
+            IP = array_CfgInfo[0].Substring(array_CfgInfo[0].LastIndexOf("=") + 1);
+            Port = array_CfgInfo[1].Substring(array_CfgInfo[1].LastIndexOf("=") + 1);
+            User = array_CfgInfo[2].Substring(array_CfgInfo[2].LastIndexOf("=") + 1);
+            PassWd = array_CfgInfo[3].Substring(array_CfgInfo[3].LastIndexOf("=") + 1);
+            RootPath = array_CfgInfo[4].Substring(array_CfgInfo[4].LastIndexOf("=") + 1);
+            Local = array_CfgInfo[5].Substring(array_CfgInfo[5].LastIndexOf("=") + 1);
+        }
+    }
+}

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