瀏覽代碼

1,解决配置模式Walk自动退出配置模式问题;
2,账户信息和服务器配置文件采用加密形式保存。

Dail 8 月之前
父節點
當前提交
d9141fbe6c

二進制
.vs/Welling_Motor_Debug_Tool/v17/.suo


+ 3 - 2
Welling_Motor_Debug_Tool/LocalInfo.cs

@@ -18,13 +18,14 @@ namespace Welling_Motor_Debug_Tool
         public string SerialNumFileName2 = "serial2";//检验流水号
         public string ToolsPath = "C:\\Temp\\MotorTestTool\\Tools";//工具路径
         public string TorqueSensorFileName = "TorqueSensor.ttcfg"; //配置文件
-        public string UsrFileName = "UserAccount1"; //登录配置文件
+        public string UsrFileName = "UserAccount2"; //登录配置文件
         public string CfgPathName = "cfg\\"; //配置目录
         public string WalkLogPathName = "funcTest\\"; //推行测试目录
         public string CheckPathName = "qcTest\\"; //检验目录
         public string SampleFileName = "Samples\\";//样机提交记录
         public string VersionPathName = "version\\"; //版本信息
-        public string ServerCfgFileName = "server.ttcfg"; //服务器配置文件
+        public string ServerCfgFileName = "server1.ttcfg"; //服务器配置文件
         public string ExcelTempleFileName = "FOQC成机参数检验标准_Temple1.xls"; //配置文件模板
+        public string HelpFilename = "Welling_Motor_Debug_Tool使用说明书_V1.0.html"; //帮助文件名
     }
 }

+ 19 - 24
Welling_Motor_Debug_Tool/Login.cs

@@ -32,31 +32,25 @@ namespace Welling_Motor_Debug_Tool
                     Directory.CreateDirectory(localInfo.LocalPath);
                 if (!File.Exists(localInfo.LocalPath+localInfo.UsrFileName))
                 {
-                    FileStream fs = File.Create(localInfo.LocalPath + localInfo.UsrFileName);
-                    fs.Close();
-                    StreamWriter file = new StreamWriter(localInfo.LocalPath + localInfo.UsrFileName);
-                    file.WriteLine("USER=中置量产写入,PASSWD=1");
-                    file.WriteLine("USER=中置量产检验,PASSWD=2");
-                    file.WriteLine("USER=轮毂量产写入,PASSWD=3");
-                    file.WriteLine("USER=轮毂量产检验,PASSWD=4");
-                    file.WriteLine("USER=中置样机测试,PASSWD=5");
-                    file.WriteLine("USER=轮毂样机测试,PASSWD=6");
-                    file.WriteLine("USER=FCT治具测试,PASSWD=7");
-                    file.WriteLine("USER=工程参数配置,PASSWD=123456");
-                    file.WriteLine("USER=研发调试,PASSWD=123456");
-                    file.WriteLine("USER=管理员,PASSWD=ttium.123");
-                    file.Close();
+                    //设定账户密码
+                    string info = "";
+                    info += "USER=中置量产写入,PASSWD=1;";
+                    info += "USER=中置量产检验,PASSWD=2;";
+                    info += "USER=轮毂量产写入,PASSWD=3;";
+                    info += "USER=轮毂量产检验,PASSWD=4;";
+                    info += "USER=中置样机测试,PASSWD=5;";
+                    info += "USER=轮毂样机测试,PASSWD=6;";
+                    info += "USER=FCT治具测试,PASSWD=7;";
+                    info += "USER=工程参数配置,PASSWD=123456;";
+                    info += "USER=研发调试,PASSWD=123456;";
+                    info += "USER=管理员,PASSWD=ttium.123";
+                    //加密保存
+                    aes.EncryptToFile(info, localInfo.LocalPath + localInfo.UsrFileName, "2D820F88F60A39D5", "3687C5216B19D16B");                    
                 }
-                //读取配置文件
-                StreamReader objReader = new StreamReader(localInfo.LocalPath + localInfo.UsrFileName);
-                string sLine = "";
-                List<string> userInfo = new List<string>();
-                while (sLine != null)
-                {
-                    sLine = objReader.ReadLine();
-                    userInfo.Add(sLine);
-                }
-                objReader.Close();
+                //解密
+                string decryptedText = aes.DecryptFromFile(localInfo.LocalPath + localInfo.UsrFileName, "2D820F88F60A39D5", "3687C5216B19D16B");
+                //获取账号
+                string[] userInfo = decryptedText.Split(';');
                 foreach (string info in userInfo)
                 {
                     if (info != null)
@@ -107,5 +101,6 @@ namespace Welling_Motor_Debug_Tool
         {
 
         }
+
     }
 }

+ 2 - 1
Welling_Motor_Debug_Tool/Version.cs

@@ -20,7 +20,8 @@ namespace Welling_Motor_Debug_Tool
             "V" + mainForm.Version + "\r\n" +
             "1,生成配置参数时增加导出EXCEL和PDF功能;\r\n" +
             "2,剎把检测前判断电机是否停止,避免误判;\r\n" +
-            "3,参数检验增加位置校准判断。\r\n" +
+            "3,参数检验增加位置校准判断;\r\n" +
+            "4,配置模式下进入Walk时自动调节转速到100%。" +
             "\r\n" +
             "V2.3.0\r\n" +
             "1,针对位置磁环增加校准功能,支持手动校准和量产模式自动校准;\r\n" +

+ 1 - 0
Welling_Motor_Debug_Tool/Welling_Motor_Debug_Tool.csproj

@@ -102,6 +102,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="aes.cs" />
     <Compile Include="DebugForm.cs">
       <SubType>Form</SubType>
     </Compile>

+ 3 - 0
Welling_Motor_Debug_Tool/Welling_Motor_Debug_Tool.csproj.user

@@ -10,4 +10,7 @@
     <FallbackCulture>zh-CN</FallbackCulture>
     <VerifyUploadedFiles>false</VerifyUploadedFiles>
   </PropertyGroup>
+  <PropertyGroup>
+    <EnableSecurityDebugging>false</EnableSecurityDebugging>
+  </PropertyGroup>
 </Project>

+ 47 - 0
Welling_Motor_Debug_Tool/aes.cs

@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Security.Cryptography;
+using System.IO;
+
+namespace Welling_Motor_Debug_Tool
+{
+    internal class aes
+    {
+        // 加密函数
+        public static void EncryptToFile(string plainText, string filePath, string key, string iv)
+        {
+            using (Aes aesAlg = Aes.Create())
+            {
+                aesAlg.Key = Encoding.UTF8.GetBytes(key);  // 密钥(必须是 16、24 或 32 字节)
+                aesAlg.IV = Encoding.UTF8.GetBytes(iv);    // 初始化向量(IV,必须是 16 字节)
+
+                using (FileStream fsEncrypt = new FileStream(filePath, FileMode.Create))
+                using (CryptoStream csEncrypt = new CryptoStream(fsEncrypt, aesAlg.CreateEncryptor(), CryptoStreamMode.Write))
+                using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
+                {
+                    swEncrypt.Write(plainText);
+                }
+            }
+        }
+
+        // 解密函数
+        public static string DecryptFromFile(string filePath, string key, string iv)
+        {
+            using (Aes aesAlg = Aes.Create())
+            {
+                aesAlg.Key = Encoding.UTF8.GetBytes(key);  // 密钥(必须是 16、24 或 32 字节)
+                aesAlg.IV = Encoding.UTF8.GetBytes(iv);    // 初始化向量(IV,必须是 16 字节)
+
+                using (FileStream fsDecrypt = new FileStream(filePath, FileMode.Open))
+                using (CryptoStream csDecrypt = new CryptoStream(fsDecrypt, aesAlg.CreateDecryptor(), CryptoStreamMode.Read))
+                using (StreamReader srDecrypt = new StreamReader(csDecrypt))
+                {
+                    return srDecrypt.ReadToEnd();
+                }
+            }
+        }
+    }
+}

+ 10 - 0
Welling_Motor_Debug_Tool/bin/Debug/reset.bat

@@ -0,0 +1,10 @@
+@echo off
+set FILE="C:\temp\MotorTestTool\server1.ttcfg"
+
+:: Check file 
+if exist %FILE% (
+    del %FILE%
+    echo Finish:%FILE%
+) else (
+    echo Error:%FILE%
+)

+ 46 - 45
Welling_Motor_Debug_Tool/mainForm.Designer.cs

@@ -534,6 +534,8 @@ namespace Welling_Motor_Debug_Tool
             this.checkBox_OffLineCheckMode = new System.Windows.Forms.CheckBox();
             this.comboBox_CheckModeCfgFile = new System.Windows.Forms.ComboBox();
             this.groupBox31 = new System.Windows.Forms.GroupBox();
+            this.label157 = new System.Windows.Forms.Label();
+            this.label_CheckModeAngle = new System.Windows.Forms.Label();
             this.label132 = new System.Windows.Forms.Label();
             this.label_CheckModeMos = new System.Windows.Forms.Label();
             this.label148 = new System.Windows.Forms.Label();
@@ -550,6 +552,7 @@ namespace Welling_Motor_Debug_Tool
             this.groupBox30 = new System.Windows.Forms.GroupBox();
             this.richTextBox_CheckModeLog = new System.Windows.Forms.RichTextBox();
             this.groupBox29 = new System.Windows.Forms.GroupBox();
+            this.checkBox_CheckModeAngle = new System.Windows.Forms.CheckBox();
             this.checkBox_CheckModeMos = new System.Windows.Forms.CheckBox();
             this.pictureBox_ReadLock = new System.Windows.Forms.PictureBox();
             this.checkBox_CheckModeSN = new System.Windows.Forms.CheckBox();
@@ -654,9 +657,6 @@ namespace Welling_Motor_Debug_Tool
             this.label124 = new System.Windows.Forms.Label();
             this.label46 = new System.Windows.Forms.Label();
             this.pictureBox2 = new System.Windows.Forms.PictureBox();
-            this.checkBox_CheckModeAngle = new System.Windows.Forms.CheckBox();
-            this.label_CheckModeAngle = new System.Windows.Forms.Label();
-            this.label157 = new System.Windows.Forms.Label();
             this.menuStrip_Set.SuspendLayout();
             this.statusStrip1.SuspendLayout();
             this.groupBox1.SuspendLayout();
@@ -1524,7 +1524,7 @@ namespace Welling_Motor_Debug_Tool
             // 版本ToolStripMenuItem
             // 
             this.版本ToolStripMenuItem.Name = "版本ToolStripMenuItem";
-            this.版本ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+            this.版本ToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
             this.版本ToolStripMenuItem.Text = "版本信息";
             this.版本ToolStripMenuItem.Click += new System.EventHandler(this.版本ToolStripMenuItem_Click);
             // 
@@ -1534,7 +1534,7 @@ namespace Welling_Motor_Debug_Tool
             this.打开ToolStripMenuItem,
             this.关闭ToolStripMenuItem});
             this.自动更新ToolStripMenuItem.Name = "自动更新ToolStripMenuItem";
-            this.自动更新ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+            this.自动更新ToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
             this.自动更新ToolStripMenuItem.Text = "自动更新";
             // 
             // 打开ToolStripMenuItem
@@ -1556,22 +1556,23 @@ namespace Welling_Motor_Debug_Tool
             // 本机信息ToolStripMenuItem
             // 
             this.本机信息ToolStripMenuItem.Name = "本机信息ToolStripMenuItem";
-            this.本机信息ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+            this.本机信息ToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
             this.本机信息ToolStripMenuItem.Text = "本机信息";
             this.本机信息ToolStripMenuItem.Click += new System.EventHandler(this.本机信息ToolStripMenuItem_Click);
             // 
             // 帮助ToolStripMenuItem
             // 
             this.帮助ToolStripMenuItem.Name = "帮助ToolStripMenuItem";
-            this.帮助ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+            this.帮助ToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
             this.帮助ToolStripMenuItem.Text = "查看帮助";
+            this.帮助ToolStripMenuItem.Click += new System.EventHandler(this.帮助ToolStripMenuItem_Click);
             // 
             // 累计运行时间ToolStripMenuItem
             // 
             this.累计运行时间ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.toolStripMenuItem_RunTime});
             this.累计运行时间ToolStripMenuItem.Name = "累计运行时间ToolStripMenuItem";
-            this.累计运行时间ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+            this.累计运行时间ToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
             this.累计运行时间ToolStripMenuItem.Text = "运行时间";
             this.累计运行时间ToolStripMenuItem.MouseHover += new System.EventHandler(this.累计运行时间ToolStripMenuItem_MouseHover);
             // 
@@ -6167,6 +6168,29 @@ namespace Welling_Motor_Debug_Tool
             this.groupBox31.TabStop = false;
             this.groupBox31.Text = "测试状态";
             // 
+            // label157
+            // 
+            this.label157.AutoSize = true;
+            this.label157.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label157.ForeColor = System.Drawing.SystemColors.ControlText;
+            this.label157.Location = new System.Drawing.Point(6, 200);
+            this.label157.Name = "label157";
+            this.label157.Size = new System.Drawing.Size(65, 20);
+            this.label157.TabIndex = 21;
+            this.label157.Text = "位置校准";
+            this.label157.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // label_CheckModeAngle
+            // 
+            this.label_CheckModeAngle.BackColor = System.Drawing.Color.Red;
+            this.label_CheckModeAngle.Font = new System.Drawing.Font("Microsoft YaHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label_CheckModeAngle.ForeColor = System.Drawing.SystemColors.ControlText;
+            this.label_CheckModeAngle.Location = new System.Drawing.Point(108, 200);
+            this.label_CheckModeAngle.Name = "label_CheckModeAngle";
+            this.label_CheckModeAngle.Size = new System.Drawing.Size(35, 20);
+            this.label_CheckModeAngle.TabIndex = 20;
+            this.label_CheckModeAngle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
             // label132
             // 
             this.label132.AutoSize = true;
@@ -6355,6 +6379,20 @@ namespace Welling_Motor_Debug_Tool
             this.groupBox29.TabStop = false;
             this.groupBox29.Text = "测试项目";
             // 
+            // checkBox_CheckModeAngle
+            // 
+            this.checkBox_CheckModeAngle.AutoSize = true;
+            this.checkBox_CheckModeAngle.Checked = true;
+            this.checkBox_CheckModeAngle.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.checkBox_CheckModeAngle.Enabled = false;
+            this.checkBox_CheckModeAngle.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.checkBox_CheckModeAngle.Location = new System.Drawing.Point(7, 178);
+            this.checkBox_CheckModeAngle.Name = "checkBox_CheckModeAngle";
+            this.checkBox_CheckModeAngle.Size = new System.Drawing.Size(112, 24);
+            this.checkBox_CheckModeAngle.TabIndex = 10;
+            this.checkBox_CheckModeAngle.Text = "位置校准确认";
+            this.checkBox_CheckModeAngle.UseVisualStyleBackColor = true;
+            // 
             // checkBox_CheckModeMos
             // 
             this.checkBox_CheckModeMos.AutoSize = true;
@@ -7437,43 +7475,6 @@ namespace Welling_Motor_Debug_Tool
             this.pictureBox2.TabIndex = 16;
             this.pictureBox2.TabStop = false;
             // 
-            // checkBox_CheckModeAngle
-            // 
-            this.checkBox_CheckModeAngle.AutoSize = true;
-            this.checkBox_CheckModeAngle.Checked = true;
-            this.checkBox_CheckModeAngle.CheckState = System.Windows.Forms.CheckState.Checked;
-            this.checkBox_CheckModeAngle.Enabled = false;
-            this.checkBox_CheckModeAngle.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.checkBox_CheckModeAngle.Location = new System.Drawing.Point(7, 178);
-            this.checkBox_CheckModeAngle.Name = "checkBox_CheckModeAngle";
-            this.checkBox_CheckModeAngle.Size = new System.Drawing.Size(112, 24);
-            this.checkBox_CheckModeAngle.TabIndex = 10;
-            this.checkBox_CheckModeAngle.Text = "位置校准确认";
-            this.checkBox_CheckModeAngle.UseVisualStyleBackColor = true;
-            // 
-            // label_CheckModeAngle
-            // 
-            this.label_CheckModeAngle.BackColor = System.Drawing.Color.Red;
-            this.label_CheckModeAngle.Font = new System.Drawing.Font("Microsoft YaHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label_CheckModeAngle.ForeColor = System.Drawing.SystemColors.ControlText;
-            this.label_CheckModeAngle.Location = new System.Drawing.Point(108, 200);
-            this.label_CheckModeAngle.Name = "label_CheckModeAngle";
-            this.label_CheckModeAngle.Size = new System.Drawing.Size(35, 20);
-            this.label_CheckModeAngle.TabIndex = 20;
-            this.label_CheckModeAngle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // label157
-            // 
-            this.label157.AutoSize = true;
-            this.label157.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label157.ForeColor = System.Drawing.SystemColors.ControlText;
-            this.label157.Location = new System.Drawing.Point(6, 200);
-            this.label157.Name = "label157";
-            this.label157.Size = new System.Drawing.Size(65, 20);
-            this.label157.TabIndex = 21;
-            this.label157.Text = "位置校准";
-            this.label157.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-            // 
             // mainForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);

+ 26 - 15
Welling_Motor_Debug_Tool/mainForm.cs

@@ -1,3 +1,4 @@
+using NPOI.POIFS.Crypt.Dsig;
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -310,17 +311,9 @@ namespace Welling_Motor_Debug_Tool
                 //检查是否存在配置文件
                 if (File.Exists(localInfo.LocalPath + localInfo.ServerCfgFileName)) //存在配置文件从文件选择
                 {
-                    //打开文件
-                    StreamReader objReader = new StreamReader(localInfo.LocalPath + localInfo.ServerCfgFileName);
-                    string sLine = "";
-                    ArrayList array_CfgInfo = new ArrayList();
-                    array_CfgInfo.Clear();
-                    while (sLine != null)
-                    {
-                        sLine = objReader.ReadLine();
-                        array_CfgInfo.Add(sLine);
-                    }
-                    objReader.Close();
+                    //解密
+                    string sLine = aes.DecryptFromFile(localInfo.LocalPath + localInfo.ServerCfgFileName, "2D820F88F60A39D5", "3687C5216B19D16B");
+                    string[] array_CfgInfo = sLine.Split(',');
                     //解析配置文件
                     ServerIP = array_CfgInfo[0].ToString();
                     ServerPort = array_CfgInfo[1].ToString();
@@ -393,8 +386,9 @@ namespace Welling_Motor_Debug_Tool
                     //保存网络配置文件
                     if (ServerCfgForm1.checkBox_NoticeSw.Checked)
                     {
-                        string str = ServerIP + "\r\n" + ServerPort + "\r\n" + ServerUser + "\r\n" + ServerPassWd + "\r\n" + (OfflineFlag == true).ToString();
-                        System.IO.File.WriteAllText(localInfo.LocalPath + localInfo.ServerCfgFileName, str);
+                        string str = ServerIP + "," + ServerPort + "," + ServerUser + "," + ServerPassWd + "," + (OfflineFlag == true).ToString();
+                        //加密保存
+                        aes.EncryptToFile(str, localInfo.LocalPath + localInfo.ServerCfgFileName, "2D820F88F60A39D5", "3687C5216B19D16B");                        
                     }
                 }
             } while (false);
@@ -4115,7 +4109,7 @@ namespace Welling_Motor_Debug_Tool
                 {
                     PercentCode[0] = 0;
                     textBox_MotorSpeedPercent.Text = "0";
-                    mySerialProcess.SendCmd((ushort)0x751, (byte)0x16, (ushort)0x1901, PercentCode);
+                    mySerialProcess.SendCmd((ushort)0x751, (byte)0x16, (ushort)0x2C01, PercentCode);                    
                 }
                 else if (comboBox_GearSt.SelectedIndex == 6) //Walk
                 {
@@ -4123,7 +4117,7 @@ namespace Welling_Motor_Debug_Tool
                     {
                         PercentCode[0] = 100;
                         textBox_MotorSpeedPercent.Text = "100";
-                        mySerialProcess.SendCmd((ushort)0x751, (byte)0x16, (ushort)0x1901, PercentCode);
+                        mySerialProcess.SendCmd((ushort)0x751, (byte)0x16, (ushort)0x2C01, PercentCode);
                     }
                 }
 
@@ -10306,6 +10300,23 @@ namespace Welling_Motor_Debug_Tool
             }
         }
 
+        private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            //检查本地文件
+            if (!File.Exists(localInfo.LocalPath + localInfo.HelpFilename))
+            {
+                if (!OfflineFlag)
+                    myFtp.DownloadFile("/Tools/Welling_Motor_Debug_Tool/help/" + localInfo.HelpFilename, localInfo.LocalPath);
+                else
+                {
+                    MessageBoxTimeOut.Show("未找到帮助文件!", "提示", 1000, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                    return;
+                }
+            }
+            //调用本地浏览器打开帮助文件
+            System.Diagnostics.Process.Start("explorer", localInfo.LocalPath + localInfo.HelpFilename);
+        }
+
         /// <summary>
         /// 打开或关闭指令窗口
         /// </summary>

二進制
Welling_Motor_Debug_Tool/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


二進制
Welling_Motor_Debug_Tool/obj/Debug/Welling_Motor_Debug_Tool.csproj.AssemblyReference.cache


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

@@ -1 +1 @@
-74a5f6e73c53a28fb0f0c4691bd5243bc9e411282dedc0e0f7db287d451d6401
+441adacf67438a11f7c49778bb4c20fa25df26fd58c5cada2f9c92d0e618d81a

二進制
Welling_Motor_Debug_Tool/obj/Debug/Welling_Motor_Debug_Tool.csproj.GenerateResource.cache


二進制
Welling_Motor_Debug_Tool/obj/Debug/Welling_Motor_Debug_Tool.exe


二進制
Welling_Motor_Debug_Tool/obj/Debug/Welling_Motor_Debug_Tool.pdb