瀏覽代碼

Serial Init Function 추가 / Folder 추가

YJ 6 年之前
父節點
當前提交
08aa3bea59

+ 21 - 9
Basic_Terminal/Basic_Terminal.csproj

@@ -46,27 +46,36 @@
46 46
     <Reference Include="System.Xml" />
47 47
   </ItemGroup>
48 48
   <ItemGroup>
49
-    <Compile Include="Crc16.cs" />
50
-    <Compile Include="Download_bar.cs">
49
+    <Compile Include="Func\Crc16.cs" />
50
+    <Compile Include="Wnd\Debug.cs">
51 51
       <SubType>Form</SubType>
52 52
     </Compile>
53
-    <Compile Include="Download_bar.Designer.cs">
53
+    <Compile Include="Wnd\Debug.Designer.cs">
54
+      <DependentUpon>Debug.cs</DependentUpon>
55
+    </Compile>
56
+    <Compile Include="Wnd\Download_bar.cs">
57
+      <SubType>Form</SubType>
58
+    </Compile>
59
+    <Compile Include="Wnd\Download_bar.Designer.cs">
54 60
       <DependentUpon>Download_bar.cs</DependentUpon>
55 61
     </Compile>
56
-    <Compile Include="File_Open.cs" />
57
-    <Compile Include="Main_Form.cs">
62
+    <Compile Include="Func\File_Open.cs" />
63
+    <Compile Include="Wnd\Main_Form.cs">
58 64
       <SubType>Form</SubType>
59 65
     </Compile>
60
-    <Compile Include="Main_Form.Designer.cs">
66
+    <Compile Include="Wnd\Main_Form.Designer.cs">
61 67
       <DependentUpon>Main_Form.cs</DependentUpon>
62 68
     </Compile>
63 69
     <Compile Include="Program.cs" />
64 70
     <Compile Include="Properties\AssemblyInfo.cs" />
65
-    <Compile Include="Serial.cs" />
66
-    <EmbeddedResource Include="Download_bar.resx">
71
+    <Compile Include="Func\Serial.cs" />
72
+    <EmbeddedResource Include="Wnd\Debug.resx">
73
+      <DependentUpon>Debug.cs</DependentUpon>
74
+    </EmbeddedResource>
75
+    <EmbeddedResource Include="Wnd\Download_bar.resx">
67 76
       <DependentUpon>Download_bar.cs</DependentUpon>
68 77
     </EmbeddedResource>
69
-    <EmbeddedResource Include="Main_Form.resx">
78
+    <EmbeddedResource Include="Wnd\Main_Form.resx">
70 79
       <DependentUpon>Main_Form.cs</DependentUpon>
71 80
     </EmbeddedResource>
72 81
     <EmbeddedResource Include="Properties\Resources.resx">
@@ -91,5 +100,8 @@
91 100
   <ItemGroup>
92 101
     <None Include="App.config" />
93 102
   </ItemGroup>
103
+  <ItemGroup>
104
+    <WCFMetadata Include="Connected Services\" />
105
+  </ItemGroup>
94 106
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
95 107
 </Project>

Basic_Terminal/Crc16.cs → Basic_Terminal/Func/Crc16.cs


Basic_Terminal/File_Open.cs → Basic_Terminal/Func/File_Open.cs


+ 65 - 0
Basic_Terminal/Func/Serial.cs

@@ -0,0 +1,65 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Threading.Tasks;
6
+//Add code
7
+using System.Windows.Forms;
8
+using System.IO;
9
+using System.IO.Ports;
10
+
11
+namespace Basic_Terminal
12
+{
13
+    class Serial
14
+    {
15
+        private System.IO.Ports.SerialPort serialPort;
16
+
17
+        public string Serial_Name { get => serialPort.PortName;  set => serialPort.PortName = value;}
18
+
19
+        public void Serial_Initialize(ref ComboBox cb_port)
20
+        {
21
+            
22
+            this.serialPort = new System.IO.Ports.SerialPort();
23
+            this.serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.Serial_DataRecvFunction);
24
+
25
+            cb_port.BeginUpdate();
26
+            foreach (string comport in SerialPort.GetPortNames())//foreach (string comport in SerialPort_TestProgram.GetPortNames())
27
+            {
28
+                cb_port.Items.Add(comport);
29
+            }
30
+            cb_port.EndUpdate();
31
+            //SerialPort 초기 설정.
32
+            cb_port.DataSource =  SerialPort.GetPortNames();
33
+            serialPort.PortName = Serial_Name = cb_port.SelectedItem.ToString();
34
+            serialPort.BaudRate = (int)115200;
35
+            serialPort.DataBits = (int)8;
36
+            serialPort.Parity = System.IO.Ports.Parity.None;
37
+            serialPort.StopBits = StopBits.One;
38
+
39
+        }
40
+        public void Serial_DataRecvFunction(object sender, SerialDataReceivedEventArgs e)
41
+        {
42
+
43
+        }
44
+        public void Serial_PortOpen(ref Button Btn_Portonoff)
45
+        {
46
+            try
47
+            {
48
+                if (serialPort.IsOpen) { //When the port is open
49
+                    serialPort.Close();
50
+                    Btn_Portonoff.Text = "Port Open";
51
+                }
52
+                else//When the port is close
53
+                {
54
+                    serialPort.Open();
55
+                    Btn_Portonoff.Text = "Port Close";
56
+                }
57
+            }
58
+            catch
59
+            {
60
+                MessageBox.Show("already port open " + Serial_Name);
61
+               
62
+            }
63
+        }
64
+    }
65
+}

+ 0 - 37
Basic_Terminal/Serial.cs

@@ -1,37 +0,0 @@
1
-using System;
2
-using System.Collections.Generic;
3
-using System.Linq;
4
-using System.Text;
5
-using System.Threading.Tasks;
6
-//Add code
7
-using System.Windows.Forms;
8
-using System.IO;
9
-using System.IO.Ports;
10
-
11
-namespace Basic_Terminal
12
-{
13
-    class Serial
14
-    {
15
-        private System.IO.Ports.SerialPort serialPort;
16
-
17
-        public void Serial_Initialize(ref ComboBox cb_port)
18
-        {
19
-            
20
-            this.serialPort = new System.IO.Ports.SerialPort();
21
-            this.serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.Serial_DataRecvFunction);
22
-
23
-            cb_port.BeginUpdate();
24
-            foreach (string comport in SerialPort.GetPortNames())//foreach (string comport in SerialPort_TestProgram.GetPortNames())
25
-            {
26
-                cb_port.Items.Add(comport);
27
-            }
28
-            cb_port.EndUpdate();
29
-            //SerialPort 초기 설정.
30
-            cb_port.DataSource = SerialPort.GetPortNames();
31
-        }
32
-        public void Serial_DataRecvFunction(object sender, SerialDataReceivedEventArgs e)
33
-        {
34
-
35
-        }
36
-    }
37
-}

+ 64 - 0
Basic_Terminal/Wnd/Debug.Designer.cs

@@ -0,0 +1,64 @@
1
+namespace Basic_Terminal
2
+{
3
+    partial class Debug
4
+    {
5
+        /// <summary>
6
+        /// Required designer variable.
7
+        /// </summary>
8
+        private System.ComponentModel.IContainer components = null;
9
+
10
+        /// <summary>
11
+        /// Clean up any resources being used.
12
+        /// </summary>
13
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
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 Form Designer generated code
24
+
25
+        /// <summary>
26
+        /// Required method for Designer support - do not modify
27
+        /// the contents of this method with the code editor.
28
+        /// </summary>
29
+        private void InitializeComponent()
30
+        {
31
+            this.tbReceived2 = new System.Windows.Forms.RichTextBox();
32
+            this.SuspendLayout();
33
+            // 
34
+            // tbReceived2
35
+            // 
36
+            this.tbReceived2.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
37
+            this.tbReceived2.Dock = System.Windows.Forms.DockStyle.Fill;
38
+            this.tbReceived2.ForeColor = System.Drawing.SystemColors.Window;
39
+            this.tbReceived2.Location = new System.Drawing.Point(0, 0);
40
+            this.tbReceived2.MaxLength = 0;
41
+            this.tbReceived2.Name = "tbReceived2";
42
+            this.tbReceived2.ReadOnly = true;
43
+            this.tbReceived2.Size = new System.Drawing.Size(800, 450);
44
+            this.tbReceived2.TabIndex = 63;
45
+            this.tbReceived2.Text = "";
46
+            this.tbReceived2.WordWrap = false;
47
+            // 
48
+            // Debug
49
+            // 
50
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
51
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
52
+            this.ClientSize = new System.Drawing.Size(800, 450);
53
+            this.Controls.Add(this.tbReceived2);
54
+            this.Name = "Debug";
55
+            this.Text = "Debug";
56
+            this.ResumeLayout(false);
57
+
58
+        }
59
+
60
+        #endregion
61
+
62
+        public System.Windows.Forms.RichTextBox tbReceived2;
63
+    }
64
+}

+ 156 - 0
Basic_Terminal/Wnd/Debug.cs

@@ -0,0 +1,156 @@
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
+//Add code
11
+using System.Runtime.InteropServices; //ini파일 로드 필요라이브러리
12
+namespace Basic_Terminal
13
+{
14
+    public partial class Debug : Form
15
+    {
16
+        int LineLimit = 500;
17
+        [DllImport("user32.dll")]
18
+        public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
19
+        private const int WM_SETREDRAW = 255;
20
+
21
+        public Debug()
22
+        {
23
+            InitializeComponent();
24
+        }
25
+
26
+
27
+
28
+        TextBox temp_data = new TextBox();
29
+        public void Controller_TextLoad(string text)
30
+        {
31
+            int nLimitLines = Convert.ToInt32(LineLimit); //제한 라인 수
32
+            try
33
+            {
34
+                try
35
+                {
36
+                    SendMessage(this.Handle, WM_SETREDRAW, false, 0);
37
+                }
38
+                catch { return; }
39
+                if (tbReceived2.Lines.Length > nLimitLines)
40
+                {
41
+                    LinkedList<string> tempLines = new LinkedList<string>(tbReceived2.Lines);
42
+                    while ((tempLines.Count - nLimitLines) > 0)
43
+                    {
44
+                        tempLines.RemoveFirst();
45
+                    }
46
+
47
+                    tbReceived2.Lines = tempLines.ToArray();
48
+
49
+                }
50
+                try
51
+                {
52
+                    SendMessage(this.Handle, WM_SETREDRAW, true, 0);
53
+                }
54
+                catch { return; }
55
+                tbReceived2.AppendText(text);
56
+                tbReceived2.SelectionStart = tbReceived2.Text.Length;//맨 마지막 선택... 
57
+                tbReceived2.ScrollToCaret();
58
+            }
59
+            catch { try { SendMessage(this.Handle, WM_SETREDRAW, true, 0); } catch { return; } }
60
+        }
61
+        public void Controller_TextLoad(byte[] text)
62
+        {
63
+            string AppendMessage = "\n[RX]";
64
+
65
+            int nLimitLines = Convert.ToInt32(LineLimit); //제한 라인 수
66
+            try
67
+            {
68
+                for (int i = 0; i < text.Length; i++)
69
+                {
70
+                    AppendMessage += Convert.ToString(text[i], 16);
71
+                }
72
+                //string AppendMessage = DateTime.Now.ToString("hh:mm:ss.fff") + " " + text;
73
+                try
74
+                {
75
+                    tbReceived2.AppendText(AppendMessage);
76
+                }
77
+                catch { return; }
78
+                try
79
+                {
80
+                    SendMessage(this.Handle, WM_SETREDRAW, false, 0);
81
+                }
82
+                catch { return; }
83
+                if (tbReceived2.Lines.Length > nLimitLines)
84
+                {
85
+                    LinkedList<string> tempLines = new LinkedList<string>(tbReceived2.Lines);
86
+
87
+                    while ((tempLines.Count - nLimitLines) > 0)
88
+                    {
89
+                        tempLines.RemoveFirst();
90
+                    }
91
+
92
+                    tbReceived2.Lines = tempLines.ToArray();
93
+                }
94
+                try
95
+                {
96
+                    SendMessage(this.Handle, WM_SETREDRAW, true, 0);
97
+                }
98
+                catch { return; }
99
+                tbReceived2.Select(tbReceived2.Text.Length, 0);
100
+                tbReceived2.ScrollToCaret();
101
+            }
102
+            finally { }
103
+
104
+        }
105
+
106
+        public void Controller_TX_TextLoad(byte[] text)
107
+        {
108
+            string AppendMessage = "\n[TX]";
109
+
110
+            int nLimitLines = Convert.ToInt32(LineLimit); //제한 라인 수
111
+            try
112
+            {
113
+                for (int i = 0; i < text.Length; i++)
114
+                {
115
+                    AppendMessage += Convert.ToString(text[i], 16);
116
+                }
117
+                tbReceived2.AppendText(AppendMessage);
118
+                try
119
+                {
120
+                    SendMessage(this.Handle, WM_SETREDRAW, false, 0);
121
+                }
122
+                catch { return; }
123
+                if (tbReceived2.Lines.Length > nLimitLines)
124
+                {
125
+                    LinkedList<string> tempLines = new LinkedList<string>(tbReceived2.Lines);
126
+
127
+                    while ((tempLines.Count - nLimitLines) > 0)
128
+                    {
129
+                        tempLines.RemoveFirst();
130
+                    }
131
+
132
+                    tbReceived2.Lines = tempLines.ToArray();
133
+                }
134
+                try
135
+                {
136
+                    SendMessage(this.Handle, WM_SETREDRAW, true, 0);
137
+                }
138
+                catch { return; }
139
+                tbReceived2.Select(tbReceived2.Text.Length, 0);
140
+                tbReceived2.ScrollToCaret();
141
+            }
142
+            finally { }
143
+
144
+        }
145
+        public void Controller_DebugBoxClear()
146
+        {
147
+            try
148
+            {
149
+                this.tbReceived2.Text = "";
150
+            }
151
+            finally { }
152
+
153
+        }
154
+    
155
+    }
156
+}

Basic_Terminal/Download_bar.resx → Basic_Terminal/Wnd/Debug.resx


Basic_Terminal/Download_bar.Designer.cs → Basic_Terminal/Wnd/Download_bar.Designer.cs


Basic_Terminal/Download_bar.cs → Basic_Terminal/Wnd/Download_bar.cs


Basic_Terminal/Main_Form.resx → Basic_Terminal/Wnd/Download_bar.resx


+ 17 - 29
Basic_Terminal/Main_Form.Designer.cs

@@ -30,11 +30,10 @@
30 30
         {
31 31
             this.groupBox9 = new System.Windows.Forms.GroupBox();
32 32
             this.button3 = new System.Windows.Forms.Button();
33
-            this.Start_button = new System.Windows.Forms.Button();
33
+            this.button_terminal = new System.Windows.Forms.Button();
34 34
             this.Ascii_checkBox = new System.Windows.Forms.CheckBox();
35 35
             this.cmCom_Port = new System.Windows.Forms.Label();
36 36
             this.button_PortOpen = new System.Windows.Forms.Button();
37
-            this.button_PortClose = new System.Windows.Forms.Button();
38 37
             this.comboBox_Port = new System.Windows.Forms.ComboBox();
39 38
             this.cmBaudRate = new System.Windows.Forms.Label();
40 39
             this.comboBox_baudrate = new System.Windows.Forms.ComboBox();
@@ -49,11 +48,10 @@
49 48
             | System.Windows.Forms.AnchorStyles.Left) 
50 49
             | System.Windows.Forms.AnchorStyles.Right)));
51 50
             this.groupBox9.Controls.Add(this.button3);
52
-            this.groupBox9.Controls.Add(this.Start_button);
51
+            this.groupBox9.Controls.Add(this.button_terminal);
53 52
             this.groupBox9.Controls.Add(this.Ascii_checkBox);
54 53
             this.groupBox9.Controls.Add(this.cmCom_Port);
55 54
             this.groupBox9.Controls.Add(this.button_PortOpen);
56
-            this.groupBox9.Controls.Add(this.button_PortClose);
57 55
             this.groupBox9.Controls.Add(this.comboBox_Port);
58 56
             this.groupBox9.Controls.Add(this.cmBaudRate);
59 57
             this.groupBox9.Controls.Add(this.comboBox_baudrate);
@@ -66,22 +64,23 @@
66 64
             // 
67 65
             // button3
68 66
             // 
69
-            this.button3.Location = new System.Drawing.Point(14, 180);
67
+            this.button3.Location = new System.Drawing.Point(14, 171);
70 68
             this.button3.Name = "button3";
71
-            this.button3.Size = new System.Drawing.Size(200, 28);
69
+            this.button3.Size = new System.Drawing.Size(197, 34);
72 70
             this.button3.TabIndex = 93;
73 71
             this.button3.Text = "Firmware Update";
74 72
             this.button3.UseVisualStyleBackColor = true;
75 73
             this.button3.Click += new System.EventHandler(this.Firmware_Update_Click);
76 74
             // 
77
-            // Start_button
75
+            // button_terminal
78 76
             // 
79
-            this.Start_button.Location = new System.Drawing.Point(13, 146);
80
-            this.Start_button.Name = "Start_button";
81
-            this.Start_button.Size = new System.Drawing.Size(200, 28);
82
-            this.Start_button.TabIndex = 94;
83
-            this.Start_button.Text = "Terminal";
84
-            this.Start_button.UseVisualStyleBackColor = true;
77
+            this.button_terminal.Location = new System.Drawing.Point(14, 131);
78
+            this.button_terminal.Name = "button_terminal";
79
+            this.button_terminal.Size = new System.Drawing.Size(197, 34);
80
+            this.button_terminal.TabIndex = 94;
81
+            this.button_terminal.Text = "Terminal";
82
+            this.button_terminal.UseVisualStyleBackColor = true;
83
+            this.button_terminal.Click += new System.EventHandler(this.button_terminal_Click);
85 84
             // 
86 85
             // Ascii_checkBox
87 86
             // 
@@ -113,24 +112,13 @@
113 112
             this.button_PortOpen.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
114 113
             | System.Windows.Forms.AnchorStyles.Left) 
115 114
             | System.Windows.Forms.AnchorStyles.Right)));
116
-            this.button_PortOpen.Location = new System.Drawing.Point(19, 95);
115
+            this.button_PortOpen.Location = new System.Drawing.Point(13, 91);
117 116
             this.button_PortOpen.Name = "button_PortOpen";
118
-            this.button_PortOpen.Size = new System.Drawing.Size(93, 34);
117
+            this.button_PortOpen.Size = new System.Drawing.Size(197, 34);
119 118
             this.button_PortOpen.TabIndex = 86;
120 119
             this.button_PortOpen.Text = "Port Open";
121 120
             this.button_PortOpen.UseVisualStyleBackColor = true;
122
-            // 
123
-            // button_PortClose
124
-            // 
125
-            this.button_PortClose.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
126
-            | System.Windows.Forms.AnchorStyles.Left) 
127
-            | System.Windows.Forms.AnchorStyles.Right)));
128
-            this.button_PortClose.Location = new System.Drawing.Point(118, 95);
129
-            this.button_PortClose.Name = "button_PortClose";
130
-            this.button_PortClose.Size = new System.Drawing.Size(93, 34);
131
-            this.button_PortClose.TabIndex = 87;
132
-            this.button_PortClose.Text = "Port Closed";
133
-            this.button_PortClose.UseVisualStyleBackColor = true;
121
+            this.button_PortOpen.Click += new System.EventHandler(this.button_PortOpen_Click);
134 122
             // 
135 123
             // comboBox_Port
136 124
             // 
@@ -143,6 +131,7 @@
143 131
             this.comboBox_Port.Name = "comboBox_Port";
144 132
             this.comboBox_Port.Size = new System.Drawing.Size(101, 20);
145 133
             this.comboBox_Port.TabIndex = 88;
134
+            this.comboBox_Port.SelectedIndexChanged += new System.EventHandler(this.comboBox_Port_SelectedIndexChanged);
146 135
             // 
147 136
             // cmBaudRate
148 137
             // 
@@ -216,11 +205,10 @@
216 205
 
217 206
         private System.Windows.Forms.GroupBox groupBox9;
218 207
         private System.Windows.Forms.Button button3;
219
-        private System.Windows.Forms.Button Start_button;
208
+        private System.Windows.Forms.Button button_terminal;
220 209
         private System.Windows.Forms.CheckBox Ascii_checkBox;
221 210
         private System.Windows.Forms.Label cmCom_Port;
222 211
         private System.Windows.Forms.Button button_PortOpen;
223
-        private System.Windows.Forms.Button button_PortClose;
224 212
         private System.Windows.Forms.Label cmBaudRate;
225 213
         private System.Windows.Forms.ComboBox comboBox_baudrate;
226 214
         private System.Windows.Forms.Button Crc16_Check;

+ 15 - 4
Basic_Terminal/Main_Form.cs

@@ -16,12 +16,9 @@ namespace Basic_Terminal
16 16
     
17 17
     public partial class Main_Form : Form
18 18
     {
19
-        
20
-        public delegate void Serial_EventFunction(object sender, SerialDataReceivedEventArgs e);
19
+        Serial serial = new Serial();
21 20
         public Main_Form()
22 21
         {
23
-            Serial serial = new Serial();
24
-
25 22
             InitializeComponent();
26 23
             serial.Serial_Initialize(ref comboBox_Port);
27 24
         }
@@ -40,5 +37,19 @@ namespace Basic_Terminal
40 37
             label1.Text = crc16.CRC16_Generate(tempdata, 11).ToString();
41 38
         }
42 39
 
40
+        private void button_PortOpen_Click(object sender, EventArgs e)
41
+        {
42
+            serial.Serial_PortOpen(ref button_PortOpen);
43
+        }
44
+
45
+        private void comboBox_Port_SelectedIndexChanged(object sender, EventArgs e)
46
+        {
47
+            serial.Serial_Name = comboBox_Port.SelectedItem.ToString();
48
+        }
49
+
50
+        private void button_terminal_Click(object sender, EventArgs e)
51
+        {
52
+
53
+        }
43 54
     }
44 55
 }

+ 120 - 0
Basic_Terminal/Wnd/Main_Form.resx

@@ -0,0 +1,120 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<root>
3
+  <!-- 
4
+    Microsoft ResX Schema 
5
+    
6
+    Version 2.0
7
+    
8
+    The primary goals of this format is to allow a simple XML format 
9
+    that is mostly human readable. The generation and parsing of the 
10
+    various data types are done through the TypeConverter classes 
11
+    associated with the data types.
12
+    
13
+    Example:
14
+    
15
+    ... ado.net/XML headers & schema ...
16
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
17
+    <resheader name="version">2.0</resheader>
18
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
24
+    </data>
25
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
+        <comment>This is a comment</comment>
28
+    </data>
29
+                
30
+    There are any number of "resheader" rows that contain simple 
31
+    name/value pairs.
32
+    
33
+    Each data row contains a name, and value. The row also contains a 
34
+    type or mimetype. Type corresponds to a .NET class that support 
35
+    text/value conversion through the TypeConverter architecture. 
36
+    Classes that don't support this are serialized and stored with the 
37
+    mimetype set.
38
+    
39
+    The mimetype is used for serialized objects, and tells the 
40
+    ResXResourceReader how to depersist the object. This is currently not 
41
+    extensible. For a given mimetype the value must be set accordingly:
42
+    
43
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
44
+    that the ResXResourceWriter will generate, however the reader can 
45
+    read any of the formats listed below.
46
+    
47
+    mimetype: application/x-microsoft.net.object.binary.base64
48
+    value   : The object must be serialized with 
49
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50
+            : and then encoded with base64 encoding.
51
+    
52
+    mimetype: application/x-microsoft.net.object.soap.base64
53
+    value   : The object must be serialized with 
54
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
+            : and then encoded with base64 encoding.
56
+
57
+    mimetype: application/x-microsoft.net.object.bytearray.base64
58
+    value   : The object must be serialized into a byte array 
59
+            : using a System.ComponentModel.TypeConverter
60
+            : and then encoded with base64 encoding.
61
+    -->
62
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64
+    <xsd:element name="root" msdata:IsDataSet="true">
65
+      <xsd:complexType>
66
+        <xsd:choice maxOccurs="unbounded">
67
+          <xsd:element name="metadata">
68
+            <xsd:complexType>
69
+              <xsd:sequence>
70
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
71
+              </xsd:sequence>
72
+              <xsd:attribute name="name" use="required" type="xsd:string" />
73
+              <xsd:attribute name="type" type="xsd:string" />
74
+              <xsd:attribute name="mimetype" type="xsd:string" />
75
+              <xsd:attribute ref="xml:space" />
76
+            </xsd:complexType>
77
+          </xsd:element>
78
+          <xsd:element name="assembly">
79
+            <xsd:complexType>
80
+              <xsd:attribute name="alias" type="xsd:string" />
81
+              <xsd:attribute name="name" type="xsd:string" />
82
+            </xsd:complexType>
83
+          </xsd:element>
84
+          <xsd:element name="data">
85
+            <xsd:complexType>
86
+              <xsd:sequence>
87
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89
+              </xsd:sequence>
90
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93
+              <xsd:attribute ref="xml:space" />
94
+            </xsd:complexType>
95
+          </xsd:element>
96
+          <xsd:element name="resheader">
97
+            <xsd:complexType>
98
+              <xsd:sequence>
99
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100
+              </xsd:sequence>
101
+              <xsd:attribute name="name" type="xsd:string" use="required" />
102
+            </xsd:complexType>
103
+          </xsd:element>
104
+        </xsd:choice>
105
+      </xsd:complexType>
106
+    </xsd:element>
107
+  </xsd:schema>
108
+  <resheader name="resmimetype">
109
+    <value>text/microsoft-resx</value>
110
+  </resheader>
111
+  <resheader name="version">
112
+    <value>2.0</value>
113
+  </resheader>
114
+  <resheader name="reader">
115
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
+  </resheader>
117
+  <resheader name="writer">
118
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119
+  </resheader>
120
+</root>