├── .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
--------------------------------------------------------------------------------