├── .gitignore ├── App.config ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── IAP.csproj ├── IAP.csproj.user ├── IAP.sln ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── Ymodem.cs ├── bin ├── Debug │ ├── IAP.exe │ ├── IAP.exe.config │ ├── IAP.pdb │ ├── IAP.vshost.exe.config │ └── IAP.vshost.exe.manifest └── Release │ ├── IAP.exe │ ├── IAP.exe.config │ └── IAP.pdb └── obj ├── Debug ├── DesignTimeResolveAssemblyReferences.cache ├── DesignTimeResolveAssemblyReferencesInput.cache ├── IAP.Properties.Resources.resources ├── IAP.csproj.CoreCompileInputs.cache ├── IAP.csproj.FileListAbsolute.txt ├── IAP.csproj.GenerateResource.cache ├── IAP.csprojAssemblyReference.cache ├── IAP.exe ├── IAP.mainForm.resources ├── IAP.pdb ├── TempPE │ └── Properties.Resources.Designer.cs.dll ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs └── Release ├── DesignTimeResolveAssemblyReferences.cache ├── DesignTimeResolveAssemblyReferencesInput.cache ├── IAP.Properties.Resources.resources ├── IAP.csproj.CoreCompileInputs.cache ├── IAP.csproj.FileListAbsolute.txt ├── IAP.csproj.GenerateResource.cache ├── IAP.csprojAssemblyReference.cache ├── IAP.exe ├── IAP.mainForm.resources ├── IAP.pdb ├── TempPE └── Properties.Resources.Designer.cs.dll ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。 3 | ################################################################################ 4 | 5 | /.vs/IAP 6 | -------------------------------------------------------------------------------- /App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace IAP 2 | { 3 | partial class mainForm 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows 窗体设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要修改 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.pathTextBox = new System.Windows.Forms.TextBox(); 32 | this.selectFileButton = new System.Windows.Forms.Button(); 33 | this.SerialPortComboBox = new System.Windows.Forms.ComboBox(); 34 | this.BaudRateComboBox = new System.Windows.Forms.ComboBox(); 35 | this.DownloadProgressBar = new System.Windows.Forms.ProgressBar(); 36 | this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); 37 | this.downloadButton = new System.Windows.Forms.Button(); 38 | this.SuspendLayout(); 39 | // 40 | // pathTextBox 41 | // 42 | this.pathTextBox.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 43 | this.pathTextBox.Location = new System.Drawing.Point(31, 47); 44 | this.pathTextBox.Name = "pathTextBox"; 45 | this.pathTextBox.Size = new System.Drawing.Size(480, 31); 46 | this.pathTextBox.TabIndex = 0; 47 | // 48 | // selectFileButton 49 | // 50 | this.selectFileButton.Location = new System.Drawing.Point(531, 48); 51 | this.selectFileButton.Name = "selectFileButton"; 52 | this.selectFileButton.Size = new System.Drawing.Size(90, 31); 53 | this.selectFileButton.TabIndex = 1; 54 | this.selectFileButton.Text = "打开文件"; 55 | this.selectFileButton.UseVisualStyleBackColor = true; 56 | this.selectFileButton.Click += new System.EventHandler(this.selectFileButton_Click); 57 | // 58 | // SerialPortComboBox 59 | // 60 | this.SerialPortComboBox.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 61 | this.SerialPortComboBox.FormattingEnabled = true; 62 | this.SerialPortComboBox.Location = new System.Drawing.Point(31, 12); 63 | this.SerialPortComboBox.Name = "SerialPortComboBox"; 64 | this.SerialPortComboBox.Size = new System.Drawing.Size(100, 29); 65 | this.SerialPortComboBox.TabIndex = 2; 66 | // 67 | // BaudRateComboBox 68 | // 69 | this.BaudRateComboBox.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 70 | this.BaudRateComboBox.FormattingEnabled = true; 71 | this.BaudRateComboBox.Items.AddRange(new object[] { 72 | "115200"}); 73 | this.BaudRateComboBox.Text = this.BaudRateComboBox.Items[0].ToString();//设置默认波特率 74 | this.BaudRateComboBox.Location = new System.Drawing.Point(158, 12); 75 | this.BaudRateComboBox.Name = "BaudRateComboBox"; 76 | this.BaudRateComboBox.Size = new System.Drawing.Size(100, 29); 77 | this.BaudRateComboBox.TabIndex = 3; 78 | // 79 | // DownloadProgressBar 80 | // 81 | this.DownloadProgressBar.Location = new System.Drawing.Point(31, 86); 82 | this.DownloadProgressBar.Name = "DownloadProgressBar"; 83 | this.DownloadProgressBar.Size = new System.Drawing.Size(480, 31); 84 | this.DownloadProgressBar.TabIndex = 4; 85 | // 86 | // openFileDialog1 87 | // 88 | this.openFileDialog1.FileName = "openFileDialog1"; 89 | // 90 | // downloadButton 91 | // 92 | this.downloadButton.Location = new System.Drawing.Point(531, 86); 93 | this.downloadButton.Name = "downloadButton"; 94 | this.downloadButton.Size = new System.Drawing.Size(90, 31); 95 | this.downloadButton.TabIndex = 5; 96 | this.downloadButton.Text = "开始升级"; 97 | this.downloadButton.UseVisualStyleBackColor = true; 98 | this.downloadButton.Click += new System.EventHandler(this.downloadButton_Click); 99 | // 100 | // mainForm 101 | // 102 | this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 14F); 103 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 104 | this.ClientSize = new System.Drawing.Size(624, 121); 105 | this.Controls.Add(this.downloadButton); 106 | this.Controls.Add(this.DownloadProgressBar); 107 | this.Controls.Add(this.BaudRateComboBox); 108 | this.Controls.Add(this.SerialPortComboBox); 109 | this.Controls.Add(this.selectFileButton); 110 | this.Controls.Add(this.pathTextBox); 111 | this.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 112 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; 113 | this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 114 | this.Name = "mainForm"; 115 | this.Text = "Upgrade Tool V1.0"; 116 | this.TopMost = true; 117 | this.Load += new System.EventHandler(this.mainForm_Load); 118 | this.ResumeLayout(false); 119 | this.PerformLayout(); 120 | 121 | } 122 | 123 | #endregion 124 | 125 | private System.Windows.Forms.TextBox pathTextBox; 126 | private System.Windows.Forms.Button selectFileButton; 127 | private System.Windows.Forms.ComboBox SerialPortComboBox; 128 | private System.Windows.Forms.ComboBox BaudRateComboBox; 129 | private System.Windows.Forms.ProgressBar DownloadProgressBar; 130 | private System.Windows.Forms.OpenFileDialog openFileDialog1; 131 | private System.Windows.Forms.Button downloadButton; 132 | System.Threading.Thread downloadThread; 133 | private Ymodem.Ymodem ymodem; 134 | } 135 | } 136 | 137 | -------------------------------------------------------------------------------- /Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using Ymodem; 11 | namespace IAP 12 | { 13 | 14 | 15 | public partial class mainForm : Form 16 | { 17 | public mainForm() 18 | { 19 | InitializeComponent(); 20 | } 21 | 22 | private void mainForm_Load(object sender, EventArgs e)//窗口创建时被调用 23 | { 24 | foreach (string s in System.IO.Ports.SerialPort.GetPortNames())//寻找可用串口 25 | { 26 | this.SerialPortComboBox.Items.Add(s); 27 | this.SerialPortComboBox.Text = this.SerialPortComboBox.Items[0].ToString(); 28 | } 29 | } 30 | 31 | private void selectFileButton_Click(object sender, EventArgs e) 32 | { 33 | Button button = (Button)sender; 34 | if (button.Text == "打开文件") 35 | { 36 | OpenFileDialog openFileDialog = new OpenFileDialog(); 37 | if (openFileDialog.ShowDialog() == DialogResult.OK) 38 | { 39 | this.pathTextBox.Text = openFileDialog.FileName.ToString(); 40 | } 41 | } 42 | 43 | } 44 | private System.IO.Ports.SerialPort serialPort = new System.IO.Ports.SerialPort(); 45 | private void downloadButton_Click(object sender, EventArgs e) 46 | { 47 | Button button = (Button)sender; 48 | 49 | if (button.Text == "开始升级") 50 | { 51 | try 52 | { 53 | serialPort.PortName = SerialPortComboBox.Text; 54 | serialPort.BaudRate = Convert.ToInt32(BaudRateComboBox.SelectedItem.ToString()); 55 | serialPort.Open(); 56 | } 57 | catch //错误处理 58 | { 59 | MessageBox.Show("端口错误,请检查串口是否被占用"); 60 | return; 61 | } 62 | serialPort.Write("upgrade\r"); //写数据 63 | System.Threading.Thread.Sleep(200); //延时200ms 64 | string str = serialPort.ReadExisting(); //字符串方式读 65 | int index = 0; 66 | 67 | index = str.IndexOf("Enter 9", index); 68 | if (index < 0) 69 | { 70 | index = 0; 71 | index = str.IndexOf("Enter 1", index); 72 | if (index < 0) 73 | { 74 | MessageBox.Show("请检查设备连接"); 75 | serialPort.Close(); 76 | return; 77 | } 78 | } 79 | else 80 | { 81 | serialPort.Write("9");//写数据 82 | System.Threading.Thread.Sleep(200); //延时200ms 83 | str = serialPort.ReadExisting(); //字符串方式读 84 | index = 0; 85 | index = str.IndexOf("Enter 1", index); 86 | if (index < 0) 87 | { 88 | MessageBox.Show("请检查设备连接"); 89 | serialPort.Close(); 90 | return; 91 | } 92 | } 93 | serialPort.Write("1");//写数据 94 | System.Threading.Thread.Sleep(200); //延时200ms 95 | serialPort.Close(); 96 | button.Text = "正在下载"; 97 | ymodem = new Ymodem.Ymodem(); 98 | ymodem.Path = pathTextBox.Text.ToString(); 99 | ymodem.PortName = SerialPortComboBox.SelectedItem.ToString(); 100 | ymodem.BaudRate = Convert.ToInt32(BaudRateComboBox.SelectedItem.ToString()); 101 | downloadThread = new System.Threading.Thread(ymodem.YmodemUploadFile); 102 | ymodem.NowDownloadProgressEvent += new EventHandler(NowDownloadProgressEvent); 103 | ymodem.DownloadResultEvent += new EventHandler(DownloadFinishEvent); 104 | downloadThread.Start(); 105 | } 106 | } 107 | #region 下载进度委托及事件响应 108 | private delegate void NowDownloadProgress(int nowValue); 109 | private void NowDownloadProgressEvent(object sender, EventArgs e) 110 | { 111 | int value = Convert.ToInt32(sender); 112 | NowDownloadProgress count = new NowDownloadProgress(UploadFileProgress); 113 | this.Invoke(count, value); 114 | } 115 | private void UploadFileProgress(int count) 116 | { 117 | DownloadProgressBar.Value = count; 118 | } 119 | #endregion 120 | #region 下载完成委托及事件响应 121 | private delegate void DownloadFinish(bool finish); 122 | private void DownloadFinishEvent(object sender, EventArgs e) 123 | { 124 | bool finish = (Boolean)sender; 125 | DownloadFinish status = new DownloadFinish(UploadFileResult); 126 | this.Invoke(status,finish); 127 | } 128 | private void UploadFileResult(bool result) 129 | { 130 | if (result == true) 131 | { 132 | MessageBox.Show("下载成功"); 133 | serialPort.Open(); 134 | serialPort.Write("3");//写数据 135 | serialPort.Close(); 136 | this.downloadButton.Text = "开始升级"; 137 | this.DownloadProgressBar.Value = 0; 138 | 139 | } 140 | else 141 | { 142 | MessageBox.Show("下载失败"); 143 | this.downloadButton.Text = "开始升级"; 144 | this.DownloadProgressBar.Value = 0; 145 | } 146 | } 147 | #endregion 148 | 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | -------------------------------------------------------------------------------- /IAP.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {8F435065-DE93-4A3E-A8C8-05CAA41B9A8C} 8 | WinExe 9 | Properties 10 | IAP 11 | IAP 12 | v4.0 13 | 512 14 | true 15 | 16 | false 17 | publish\ 18 | true 19 | Disk 20 | false 21 | Foreground 22 | 7 23 | Days 24 | false 25 | false 26 | true 27 | 0 28 | 1.0.0.%2a 29 | false 30 | true 31 | 32 | 33 | AnyCPU 34 | true 35 | full 36 | false 37 | bin\Debug\ 38 | DEBUG;TRACE 39 | prompt 40 | 4 41 | 42 | 43 | AnyCPU 44 | pdbonly 45 | true 46 | bin\Release\ 47 | TRACE 48 | prompt 49 | 4 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | Form 67 | 68 | 69 | Form1.cs 70 | 71 | 72 | 73 | 74 | True 75 | True 76 | Resources.resx 77 | 78 | 79 | 80 | Form1.cs 81 | 82 | 83 | ResXFileCodeGenerator 84 | Designer 85 | Resources.Designer.cs 86 | 87 | 88 | SettingsSingleFileGenerator 89 | Settings.Designer.cs 90 | 91 | 92 | True 93 | Settings.settings 94 | True 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | False 103 | .NET Framework 3.5 SP1 104 | false 105 | 106 | 107 | 108 | 115 | -------------------------------------------------------------------------------- /IAP.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | publish\ 5 | 6 | 7 | 8 | 9 | 10 | zh-CN 11 | false 12 | 13 | -------------------------------------------------------------------------------- /IAP.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2018 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IAP", "IAP.csproj", "{8F435065-DE93-4A3E-A8C8-05CAA41B9A8C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {8F435065-DE93-4A3E-A8C8-05CAA41B9A8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {8F435065-DE93-4A3E-A8C8-05CAA41B9A8C}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {8F435065-DE93-4A3E-A8C8-05CAA41B9A8C}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {8F435065-DE93-4A3E-A8C8-05CAA41B9A8C}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {AA4C0CD1-665E-4888-A6F2-AD5E08758F0F} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace IAP 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new mainForm()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Upgrade Tool V1.0")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Upgrade Tool V1.0")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | //将 ComVisible 设置为 false 将使此程序集中的类型 18 | //对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("8f435065-de93-4a3e-a8c8-05caa41b9a8c")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace IAP.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IAP.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | -------------------------------------------------------------------------------- /Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace IAP.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Ymodem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Diagnostics; 4 | using System.Threading; 5 | using IAP; 6 | namespace Ymodem 7 | { 8 | public enum InitialCrcValue { Zeros, NonZero1 = 0xffff, NonZero2 = 0x1D0F } 9 | 10 | public class Ymodem 11 | { 12 | 13 | /* 14 | * Upload file via Ymodem protocol to the device 15 | * ret: is the transfer succeeded? true is if yes 16 | */ 17 | private string path; 18 | public string Path{get {return Path;} set { path = value; } } 19 | private string portName; 20 | public string PortName { get { return portName; } set { portName = value; } } 21 | private int baudRate; 22 | public int BaudRate { get { return baudRate; } set { baudRate = value; } } 23 | private System.IO.Ports.SerialPort serialPort = new System.IO.Ports.SerialPort(); 24 | public event EventHandler NowDownloadProgressEvent; 25 | public event EventHandler DownloadResultEvent; 26 | 27 | public void YmodemUploadFile() 28 | { 29 | /* control signals */ 30 | const byte STX = 2; // Start of TeXt 31 | const byte EOT = 4; // End Of Transmission 32 | const byte ACK = 6; // Positive ACknowledgement 33 | const byte C = 67; // capital letter C 34 | 35 | /* sizes */ 36 | const int dataSize = 1024; 37 | const int crcSize = 2; 38 | 39 | /* THE PACKET: 1029 bytes */ 40 | /* header: 3 bytes */ 41 | // STX 42 | int packetNumber = 0; 43 | int invertedPacketNumber = 255; 44 | /* data: 1024 bytes */ 45 | byte[] data = new byte[dataSize]; 46 | /* footer: 2 bytes */ 47 | byte[] CRC = new byte[crcSize]; 48 | 49 | /* get the file */ 50 | FileStream fileStream = new FileStream(@path, FileMode.Open, FileAccess.Read); 51 | serialPort.PortName = portName; 52 | serialPort.BaudRate = baudRate; 53 | serialPort.Open(); 54 | try 55 | { 56 | //serialPort.Write(new byte[] { 0x31 }, 0, 1); 57 | /* send the initial packet with filename and filesize */ 58 | if (serialPort.ReadByte() != C) 59 | { 60 | Debug.WriteLine("Can't begin the transfer."); 61 | serialPort.Close(); 62 | DownloadResultEvent.Invoke(false, new EventArgs()); 63 | return;// false; 64 | } 65 | else 66 | { 67 | Debug.WriteLine(" begin the transfer."); 68 | 69 | } 70 | 71 | sendYmodemInitialPacket(STX, packetNumber, invertedPacketNumber, data, dataSize, path, fileStream, CRC, crcSize); 72 | // Thread.Sleep(5000); 73 | byte temp = (byte)serialPort.ReadByte(); 74 | Debug.WriteLine(temp); 75 | if (temp != ACK)//(serialPort.ReadByte() != ACK) 76 | { 77 | Debug.WriteLine("Can't send the initial packet."); 78 | DownloadResultEvent.Invoke(false, new EventArgs()); 79 | return;// false; 80 | } 81 | 82 | if (serialPort.ReadByte() != C) 83 | { 84 | DownloadResultEvent.Invoke(false, new EventArgs()); 85 | return;// false; 86 | } 87 | /* send packets with a cycle until we send the last byte */ 88 | int fileReadCount; 89 | do 90 | { 91 | /* if this is the last packet fill the remaining bytes with 0 */ 92 | fileReadCount = fileStream.Read(data, 0, dataSize); 93 | if (fileReadCount == 0) break; 94 | if (fileReadCount != dataSize) 95 | for (int i = fileReadCount; i < dataSize; i++) 96 | data[i] = 0; 97 | 98 | /* calculate packetNumber */ 99 | packetNumber++; 100 | if (packetNumber > 255) 101 | packetNumber -= 256; 102 | Console.WriteLine(packetNumber); 103 | 104 | /* calculate invertedPacketNumber */ 105 | invertedPacketNumber = 255 - packetNumber; 106 | 107 | /* calculate CRC */ 108 | Crc16Ccitt crc16Ccitt = new Crc16Ccitt(InitialCrcValue.Zeros); 109 | CRC = crc16Ccitt.ComputeChecksumBytes(data); 110 | 111 | /* send the packet */ 112 | sendYmodemPacket(STX, packetNumber, invertedPacketNumber, data, dataSize, CRC, crcSize); 113 | int progress = (int)(((float)dataSize * packetNumber) / fileStream.Length * 100); 114 | Debug.WriteLine("progress: " + progress); 115 | if (progress > 100) progress = 100; 116 | NowDownloadProgressEvent.Invoke(progress, new EventArgs()); 117 | /* wait for ACK */ 118 | temp = (byte)serialPort.ReadByte(); 119 | if (temp != ACK) 120 | { 121 | Debug.WriteLine("temp"+temp); 122 | Debug.WriteLine("Couldn't send a packet."); 123 | DownloadResultEvent.Invoke(false, new EventArgs()); 124 | return;// false; 125 | } 126 | } while (dataSize == fileReadCount); 127 | 128 | /* send EOT (tell the downloader we are finished) */ 129 | serialPort.Write(new byte[] { EOT }, 0, 1); 130 | /* send closing packet */ 131 | packetNumber = 0; 132 | invertedPacketNumber = 255; 133 | data = new byte[dataSize]; 134 | CRC = new byte[crcSize]; 135 | sendYmodemClosingPacket(STX, packetNumber, invertedPacketNumber, data, dataSize, CRC, crcSize); 136 | /* get ACK (downloader acknowledge the EOT) */ 137 | if (serialPort.ReadByte() != ACK) 138 | { 139 | Debug.WriteLine("Can't complete the transfer."); 140 | DownloadResultEvent.Invoke(false, new EventArgs()); 141 | return;// false; 142 | } 143 | } 144 | catch (TimeoutException) 145 | { 146 | throw new Exception("Eductor does not answering"); 147 | 148 | } 149 | finally 150 | { 151 | fileStream.Close(); 152 | 153 | } 154 | serialPort.Close(); 155 | Debug.WriteLine("File transfer is succesful"); 156 | DownloadResultEvent.Invoke(true,new EventArgs()); 157 | return;// true; 158 | } 159 | 160 | private void sendYmodemInitialPacket(byte STX, int packetNumber, int invertedPacketNumber, byte[] data, int dataSize, string path, FileStream fileStream, byte[] CRC, int crcSize) 161 | { 162 | string fileName = System.IO.Path.GetFileName(path); 163 | string fileSize = fileStream.Length.ToString(); 164 | Debug.WriteLine("fileSize" + fileSize); 165 | /* add filename to data */ 166 | int i; 167 | for (i = 0; i < fileName.Length && (fileName.ToCharArray()[i] != 0); i++) 168 | { 169 | data[i] = (byte)fileName.ToCharArray()[i]; 170 | } 171 | data[i] = 0; 172 | 173 | /* add filesize to data */ 174 | int j; 175 | for (j = 0; j < fileSize.Length && (fileSize.ToCharArray()[j] != 0); j++) 176 | { 177 | data[(i + 1) + j] = (byte)fileSize.ToCharArray()[j]; 178 | } 179 | data[(i + 1) + j] = 0; 180 | 181 | /* fill the remaining data bytes with 0 */ 182 | for (int k = ((i + 1) + j) + 1; k < dataSize; k++) 183 | { 184 | data[k] = 0; 185 | } 186 | 187 | /* calculate CRC */ 188 | Crc16Ccitt crc16Ccitt = new Crc16Ccitt(InitialCrcValue.Zeros); 189 | CRC = crc16Ccitt.ComputeChecksumBytes(data); 190 | 191 | /* send the packet */ 192 | sendYmodemPacket(STX, packetNumber, invertedPacketNumber, data, dataSize, CRC, crcSize); 193 | } 194 | 195 | private void sendYmodemClosingPacket(byte STX, int packetNumber, int invertedPacketNumber, byte[] data, int dataSize, byte[] CRC, int crcSize) 196 | { 197 | /* calculate CRC */ 198 | Crc16Ccitt crc16Ccitt = new Crc16Ccitt(InitialCrcValue.Zeros); 199 | CRC = crc16Ccitt.ComputeChecksumBytes(data); 200 | 201 | /* send the packet */ 202 | sendYmodemPacket(STX, packetNumber, invertedPacketNumber, data, dataSize, CRC, crcSize); 203 | } 204 | 205 | private void sendYmodemPacket(byte STX, int packetNumber, int invertedPacketNumber, byte[] data, int dataSize, byte[] CRC, int crcSize) 206 | { 207 | serialPort.Write(new byte[] { STX }, 0, 1); 208 | serialPort.Write(new byte[] { (byte)packetNumber }, 0, 1); 209 | Debug.WriteLine("\rpacketNumber:" + packetNumber); 210 | serialPort.Write(new byte[] { (byte)invertedPacketNumber }, 0, 1); 211 | Debug.WriteLine("\rinvertedPacketNumber:" + invertedPacketNumber); 212 | serialPort.Write(data, 0, dataSize); 213 | serialPort.Write(CRC, 0, crcSize); 214 | //Debug.WriteLine("\rdata:"); 215 | //for (UInt16 i = 0; i < dataSize; i++) 216 | //{ 217 | // Debug.Write(string.Format("{0:X}",data[i]) + "\t"); 218 | //} 219 | //Debug.WriteLine(""); 220 | } 221 | } 222 | public class Crc16Ccitt 223 | { 224 | const ushort poly = 4129; 225 | ushort[] table = new ushort[256]; 226 | ushort initialValue = 0; 227 | 228 | public ushort ComputeChecksum(byte[] bytes) 229 | { 230 | ushort crc = this.initialValue; 231 | for (int i = 0; i < bytes.Length; ++i) 232 | { 233 | crc = (ushort)((crc << 8) ^ table[((crc >> 8) ^ (0xff & bytes[i]))]); 234 | } 235 | return crc; 236 | } 237 | 238 | public byte[] ComputeChecksumBytes(byte[] bytes) 239 | { 240 | ushort crc = ComputeChecksum(bytes); 241 | return BitConverter.GetBytes(crc); 242 | } 243 | 244 | public Crc16Ccitt(InitialCrcValue initialValue) 245 | { 246 | this.initialValue = (ushort)initialValue; 247 | ushort temp, a; 248 | for (int i = 0; i < table.Length; ++i) 249 | { 250 | temp = 0; 251 | a = (ushort)(i << 8); 252 | for (int j = 0; j < 8; ++j) 253 | { 254 | if (((temp ^ a) & 0x8000) != 0) 255 | { 256 | temp = (ushort)((temp << 1) ^ poly); 257 | } 258 | else 259 | { 260 | temp <<= 1; 261 | } 262 | a <<= 1; 263 | } 264 | table[i] = temp; 265 | } 266 | } 267 | } 268 | } -------------------------------------------------------------------------------- /bin/Debug/IAP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/bin/Debug/IAP.exe -------------------------------------------------------------------------------- /bin/Debug/IAP.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bin/Debug/IAP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/bin/Debug/IAP.pdb -------------------------------------------------------------------------------- /bin/Debug/IAP.vshost.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bin/Debug/IAP.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /bin/Release/IAP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/bin/Release/IAP.exe -------------------------------------------------------------------------------- /bin/Release/IAP.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bin/Release/IAP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/bin/Release/IAP.pdb -------------------------------------------------------------------------------- /obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /obj/Debug/IAP.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/IAP.Properties.Resources.resources -------------------------------------------------------------------------------- /obj/Debug/IAP.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 181ab12e260dbb756f704187545e2af25e22aaec 2 | -------------------------------------------------------------------------------- /obj/Debug/IAP.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | E:\M4练习\IAP\bin\Debug\IAP.exe.config 2 | E:\M4练习\IAP\bin\Debug\IAP.exe 3 | E:\M4练习\IAP\bin\Debug\IAP.pdb 4 | E:\M4练习\IAP\obj\Debug\IAP.csprojResolveAssemblyReference.cache 5 | E:\M4练习\IAP\obj\Debug\IAP.mainForm.resources 6 | E:\M4练习\IAP\obj\Debug\IAP.Properties.Resources.resources 7 | E:\M4练习\IAP\obj\Debug\IAP.csproj.GenerateResource.Cache 8 | E:\M4练习\IAP\obj\Debug\IAP.exe 9 | E:\M4练习\IAP\obj\Debug\IAP.pdb 10 | C:\Users\xiaob\Desktop\IAP\bin\Debug\IAP.exe.config 11 | C:\Users\xiaob\Desktop\IAP\bin\Debug\IAP.exe 12 | C:\Users\xiaob\Desktop\IAP\bin\Debug\IAP.pdb 13 | C:\Users\xiaob\Desktop\IAP\obj\Debug\IAP.mainForm.resources 14 | C:\Users\xiaob\Desktop\IAP\obj\Debug\IAP.Properties.Resources.resources 15 | C:\Users\xiaob\Desktop\IAP\obj\Debug\IAP.csproj.GenerateResource.Cache 16 | C:\Users\xiaob\Desktop\IAP\obj\Debug\IAP.exe 17 | C:\Users\xiaob\Desktop\IAP\obj\Debug\IAP.pdb 18 | C:\Users\xiaob\Desktop\IAP\obj\Debug\IAP.csprojResolveAssemblyReference.cache 19 | F:\project\IAP\bin\Debug\IAP.exe.config 20 | F:\project\IAP\obj\Debug\IAP.exe 21 | F:\project\IAP\obj\Debug\IAP.pdb 22 | F:\project\IAP\bin\Debug\IAP.exe 23 | F:\project\IAP\bin\Debug\IAP.pdb 24 | F:\project\IAP\obj\Debug\IAP.csprojResolveAssemblyReference.cache 25 | F:\project\IAP\obj\Debug\IAP.mainForm.resources 26 | F:\project\IAP\obj\Debug\IAP.Properties.Resources.resources 27 | F:\project\IAP\obj\Debug\IAP.csproj.GenerateResource.Cache 28 | G:\project\IAP\bin\Debug\IAP.exe.config 29 | G:\project\IAP\bin\Debug\IAP.exe 30 | G:\project\IAP\bin\Debug\IAP.pdb 31 | G:\project\IAP\obj\Debug\IAP.mainForm.resources 32 | G:\project\IAP\obj\Debug\IAP.Properties.Resources.resources 33 | G:\project\IAP\obj\Debug\IAP.csproj.GenerateResource.Cache 34 | G:\project\IAP\obj\Debug\IAP.exe 35 | G:\project\IAP\obj\Debug\IAP.pdb 36 | G:\project\IAP\obj\Debug\IAP.csprojResolveAssemblyReference.cache 37 | G:\Visual Studio workspace\Ymodem-IAP-master\bin\Debug\IAP.exe.config 38 | G:\Visual Studio workspace\Ymodem-IAP-master\bin\Debug\IAP.exe 39 | G:\Visual Studio workspace\Ymodem-IAP-master\bin\Debug\IAP.pdb 40 | G:\Visual Studio workspace\Ymodem-IAP-master\obj\Debug\IAP.csprojAssemblyReference.cache 41 | G:\Visual Studio workspace\Ymodem-IAP-master\obj\Debug\IAP.mainForm.resources 42 | G:\Visual Studio workspace\Ymodem-IAP-master\obj\Debug\IAP.Properties.Resources.resources 43 | G:\Visual Studio workspace\Ymodem-IAP-master\obj\Debug\IAP.csproj.GenerateResource.cache 44 | G:\Visual Studio workspace\Ymodem-IAP-master\obj\Debug\IAP.csproj.CoreCompileInputs.cache 45 | G:\Visual Studio workspace\Ymodem-IAP-master\obj\Debug\IAP.exe 46 | G:\Visual Studio workspace\Ymodem-IAP-master\obj\Debug\IAP.pdb 47 | -------------------------------------------------------------------------------- /obj/Debug/IAP.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/IAP.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /obj/Debug/IAP.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/IAP.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /obj/Debug/IAP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/IAP.exe -------------------------------------------------------------------------------- /obj/Debug/IAP.mainForm.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/IAP.mainForm.resources -------------------------------------------------------------------------------- /obj/Debug/IAP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/IAP.pdb -------------------------------------------------------------------------------- /obj/Debug/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /obj/Release/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /obj/Release/IAP.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/IAP.Properties.Resources.resources -------------------------------------------------------------------------------- /obj/Release/IAP.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 671d963f95f8acf588eb597558cb17cf755c74c7 2 | -------------------------------------------------------------------------------- /obj/Release/IAP.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | G:\Visual Studio workspace\Ymodem-IAP-C#\bin\Release\IAP.exe.config 2 | G:\Visual Studio workspace\Ymodem-IAP-C#\bin\Release\IAP.exe 3 | G:\Visual Studio workspace\Ymodem-IAP-C#\bin\Release\IAP.pdb 4 | G:\Visual Studio workspace\Ymodem-IAP-C#\obj\Release\IAP.mainForm.resources 5 | G:\Visual Studio workspace\Ymodem-IAP-C#\obj\Release\IAP.Properties.Resources.resources 6 | G:\Visual Studio workspace\Ymodem-IAP-C#\obj\Release\IAP.csproj.GenerateResource.cache 7 | G:\Visual Studio workspace\Ymodem-IAP-C#\obj\Release\IAP.csproj.CoreCompileInputs.cache 8 | G:\Visual Studio workspace\Ymodem-IAP-C#\obj\Release\IAP.exe 9 | G:\Visual Studio workspace\Ymodem-IAP-C#\obj\Release\IAP.pdb 10 | G:\Visual Studio workspace\Ymodem-IAP-C#\obj\Release\IAP.csprojAssemblyReference.cache 11 | -------------------------------------------------------------------------------- /obj/Release/IAP.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/IAP.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /obj/Release/IAP.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/IAP.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /obj/Release/IAP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/IAP.exe -------------------------------------------------------------------------------- /obj/Release/IAP.mainForm.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/IAP.mainForm.resources -------------------------------------------------------------------------------- /obj/Release/IAP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/IAP.pdb -------------------------------------------------------------------------------- /obj/Release/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gooost/Ymodem-IAP/086c3ed538bf60e454a08a557d3f63d1ab1964c3/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs --------------------------------------------------------------------------------