Просмотр исходного кода

Boot Loader Protocol변경 DataCnt 항목 추가 / Data Handler Recv 했을 때 Reset 항목 추가 / Str2byte 기능 추가

YJ лет назад: 6
Родитель
Сommit
7c4545b1ca

+ 34 - 19
Basic_Terminal/Func/Bluecell_BootProtocol.cs

@@ -13,8 +13,12 @@ namespace Basic_Terminal
13
         bluecell_header2,
13
         bluecell_header2,
14
         bluecell_header3,
14
         bluecell_header3,
15
         bluecell_type,
15
         bluecell_type,
16
-        bluecell_length01,
17
-        bluecell_length02,
16
+        bluecell_length_h,
17
+        bluecell_length_l,
18
+        bluecell_updatecnt_h,
19
+        bluecell_updatecnt_l,
20
+        bluecell_data,
21
+
18
     };
22
     };
19
     
23
     
20
     class Bluecell_BootProtocol
24
     class Bluecell_BootProtocol
@@ -41,34 +45,38 @@ namespace Basic_Terminal
41
         public byte[] Boot_Reset(object serial)
45
         public byte[] Boot_Reset(object serial)
42
         {
46
         {
43
             this.serial = (Serial)serial;
47
             this.serial = (Serial)serial;
44
-            byte[] fix_data = new byte[8];
48
+            byte[] fix_data = new byte[11];
45
             //Array.Clear(data, 0, data.Length);
49
             //Array.Clear(data, 0, data.Length);
46
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
50
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
47
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
51
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
48
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
52
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
49
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
53
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
50
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Reset;
54
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Reset;
51
-            fix_data[(int)Bluepro_t.bluecell_length01]  = 0;
52
-            fix_data[(int)Bluepro_t.bluecell_length02]  = 5;
55
+            fix_data[(int)Bluepro_t.bluecell_length_h]  = 0;
56
+            fix_data[(int)Bluepro_t.bluecell_length_l]  = 5;
57
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_h] = 0;
58
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_l] = 0;
53
 
59
 
54
-            fix_data[(int)Bluepro_t.bluecell_type + 1] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0xFF00) >> 8);
55
-            fix_data[(int)Bluepro_t.bluecell_type + 2] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0x00FF));
60
+            fix_data[(int)Bluepro_t.bluecell_data + 0] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0xFF00) >> 8);
61
+            fix_data[(int)Bluepro_t.bluecell_data + 1] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0x00FF));
56
             this.serial.Serial_DataSend(fix_data, fix_data.Length);
62
             this.serial.Serial_DataSend(fix_data, fix_data.Length);
57
             return fix_data;            
63
             return fix_data;            
58
         }
64
         }
59
         public byte[] Boot_DataStart()
65
         public byte[] Boot_DataStart()
60
         {
66
         {
61
             //Array.Clear(data, 0, data.Length);
67
             //Array.Clear(data, 0, data.Length);
62
-            byte[] fix_data = new byte[9];
68
+            byte[] fix_data = new byte[11];
63
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
69
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
64
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
70
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
65
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
71
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
66
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
72
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
67
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Firmupdate_start;
73
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Firmupdate_start;
68
-            fix_data[(int)Bluepro_t.bluecell_length01]  = 0;
69
-            fix_data[(int)Bluepro_t.bluecell_length02]  = 3;
70
-            fix_data[(int)Bluepro_t.bluecell_type + 1] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0xFF00) >> 8);
71
-            fix_data[(int)Bluepro_t.bluecell_type + 2] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0x00FF));
74
+            fix_data[(int)Bluepro_t.bluecell_length_h]  = 0;
75
+            fix_data[(int)Bluepro_t.bluecell_length_l]  = 3;
76
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_h] = 0;
77
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_l] = 0;
78
+            fix_data[(int)Bluepro_t.bluecell_data + 0] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0xFF00) >> 8);
79
+            fix_data[(int)Bluepro_t.bluecell_data + 1] = Convert.ToByte((crc16.CRC16_Generate(fix_data, fix_data.Length) & 0x00FF));
72
             return fix_data;
80
             return fix_data;
73
         }
81
         }
74
         public byte[] Boot_DataSending(byte[] data,int length)
82
         public byte[] Boot_DataSending(byte[] data,int length)
@@ -80,22 +88,29 @@ namespace Basic_Terminal
80
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
88
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
81
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
89
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
82
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Firmupdate_sending;
90
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Firmupdate_sending;
83
-            fix_data[(int)Bluepro_t.bluecell_length01] = Convert.ToByte((length & 0xFF00) >> 8);
84
-            fix_data[(int)Bluepro_t.bluecell_length02] = Convert.ToByte((length & 0x00FF));
91
+            fix_data[(int)Bluepro_t.bluecell_length_h] = 0;
92
+            fix_data[(int)Bluepro_t.bluecell_length_l] = 3;
93
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_h] = 0;
94
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_l] = 0;
95
+            fix_data[(int)Bluepro_t.bluecell_data + 0] = Convert.ToByte((length & 0xFF00) >> 8);
96
+            fix_data[(int)Bluepro_t.bluecell_data + 1] = Convert.ToByte((length & 0x00FF));
85
             return data;
97
             return data;
86
         }
98
         }
87
-        public byte[] Boot_DataEnd()
99
+        public byte[] Boot_DataEnd(byte[] data,int length)
88
         {
100
         {
89
             //Array.Clear(data, 0, data.Length);
101
             //Array.Clear(data, 0, data.Length);
90
-            byte[] fix_data = new byte[5];
102
+            byte[] fix_data = new byte[11];
91
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
103
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
92
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
104
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
93
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
105
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
94
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
106
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
95
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Firmupdate_end;
107
             fix_data[(int)Bluepro_t.bluecell_type]    = Bluecell_Firmupdate_end;
96
-            fix_data[(int)Bluepro_t.bluecell_length01] = 0;
97
-            fix_data[(int)Bluepro_t.bluecell_length02] = 3;
98
-
108
+            fix_data[(int)Bluepro_t.bluecell_length_h] = 0;
109
+            fix_data[(int)Bluepro_t.bluecell_length_l] = 3;
110
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_h] = 0;
111
+            fix_data[(int)Bluepro_t.bluecell_updatecnt_l] = 0;
112
+            fix_data[(int)Bluepro_t.bluecell_data + 0] = Convert.ToByte((length & 0xFF00) >> 8);
113
+            fix_data[(int)Bluepro_t.bluecell_data + 1] = Convert.ToByte((length & 0x00FF));
99
             return fix_data;
114
             return fix_data;
100
         }
115
         }
101
     }
116
     }

+ 16 - 3
Basic_Terminal/Func/Data_Handler.cs

@@ -11,18 +11,31 @@ namespace Basic_Terminal
11
         FileDownload fileDownload;
11
         FileDownload fileDownload;
12
         public void Recv_dataCheck(object fileDownload, byte[] data)
12
         public void Recv_dataCheck(object fileDownload, byte[] data)
13
         {
13
         {
14
-            this.fileDownload = (FileDownload)fileDownload;
15
-            Boolean HeaderCheck = this.fileDownload.Serial_HeaderCheck(data);
14
+            Boolean HeaderCheck;
15
+            DataSeq seq = DataSeq.UpdateResetOK;
16
+            if (fileDownload != null)
17
+            {
18
+                this.fileDownload = (FileDownload)fileDownload;
19
+            }
20
+            else
21
+            {
22
+                this.fileDownload = new FileDownload();
23
+            }
24
+            HeaderCheck = this.fileDownload.Serial_HeaderCheck(data);
25
+            
16
             int DataAckcnt = data[(int)Bluepro_t.bluecell_type + 1];
26
             int DataAckcnt = data[(int)Bluepro_t.bluecell_type + 1];
27
+
17
             if (HeaderCheck == false)
28
             if (HeaderCheck == false)
18
             {
29
             {
19
                 return;
30
                 return;
20
             }
31
             }
21
             else
32
             else
22
             {
33
             {
23
-                DataSeq seq = DataSeq.UpdateResetOK;
34
+                
24
                 switch (seq)
35
                 switch (seq)
25
                 {
36
                 {
37
+                    case DataSeq.UpdateResetOK:
38
+                    case DataSeq.UpdateStartOK:
26
                     case DataSeq.UpdateSendingOK:
39
                     case DataSeq.UpdateSendingOK:
27
                         this.fileDownload.UpdateFileSend(data, DataAckcnt);
40
                         this.fileDownload.UpdateFileSend(data, DataAckcnt);
28
                         break;
41
                         break;

+ 1 - 2
Basic_Terminal/Func/FileDownload.cs

@@ -98,9 +98,8 @@ namespace Basic_Terminal
98
                 /*send index modify*/
98
                 /*send index modify*/
99
                 sourceindex = cnt * Bluecell_BootProtocol.bluecell_Firmupdate_sendlength;
99
                 sourceindex = cnt * Bluecell_BootProtocol.bluecell_Firmupdate_sendlength;
100
             }
100
             }
101
-
102
         }
101
         }
103
-
102
+             
104
         public Boolean Serial_HeaderCheck(byte[] data)
103
         public Boolean Serial_HeaderCheck(byte[] data)
105
         {
104
         {
106
             Boolean ret = false;
105
             Boolean ret = false;

+ 10 - 4
Basic_Terminal/Func/Serial.cs

@@ -41,7 +41,7 @@ namespace Basic_Terminal
41
         private delegate void StringSend(string Text);
41
         private delegate void StringSend(string Text);
42
         private delegate void ByteSend(byte[] Text);
42
         private delegate void ByteSend(byte[] Text);
43
 
43
 
44
-        public string str2hex(string strData,Boolean Compotable)
44
+        public string Str2hex(string strData,Boolean Compotable)
45
         {
45
         {
46
             string resultHex = string.Empty;
46
             string resultHex = string.Empty;
47
             byte[] arr_byteStr = Encoding.Default.GetBytes(strData);
47
             byte[] arr_byteStr = Encoding.Default.GetBytes(strData);
@@ -57,10 +57,16 @@ namespace Basic_Terminal
57
             return resultHex;
57
             return resultHex;
58
         }
58
         }
59
 
59
 
60
-        static public byte[] str2bytes(string byteData)
60
+        static public byte[] Str2bytes(string byteData)
61
         {
61
         {
62
+
63
+#if false
62
             System.Text.ASCIIEncoding asencoding = new System.Text.ASCIIEncoding();
64
             System.Text.ASCIIEncoding asencoding = new System.Text.ASCIIEncoding();
63
             return Encoding.Default.GetBytes(byteData);
65
             return Encoding.Default.GetBytes(byteData);
66
+#else 
67
+            byte[] arr_byteStr = Encoding.Default.GetBytes(byteData);
68
+            return arr_byteStr;
69
+#endif
64
         }
70
         }
65
 
71
 
66
         public void Serial_DataRecvFunction(object sender, SerialDataReceivedEventArgs e)
72
         public void Serial_DataRecvFunction(object sender, SerialDataReceivedEventArgs e)
@@ -70,9 +76,9 @@ namespace Basic_Terminal
70
             if(Debug.RadioButton_ascii.Checked == true)
76
             if(Debug.RadioButton_ascii.Checked == true)
71
                 Debug.Invoke(new StringSend(Debug.Data_Recv_Str), data);
77
                 Debug.Invoke(new StringSend(Debug.Data_Recv_Str), data);
72
             else
78
             else
73
-                Debug.Invoke(new StringSend(Debug.Data_Recv_Str), str2hex(data,true));
79
+                Debug.Invoke(new StringSend(Debug.Data_Recv_Str), Str2hex(data,true));
74
 
80
 
75
-            data_Handler.Recv_dataCheck(this.fileDownload, str2bytes(str2hex(data,false)));
81
+            data_Handler.Recv_dataCheck(this.fileDownload, Str2bytes(data));
76
         }
82
         }
77
         public Boolean Serial_PortOpen(ref Button Btn_Portonoff)
83
         public Boolean Serial_PortOpen(ref Button Btn_Portonoff)
78
         {
84
         {

+ 1 - 1
Basic_Terminal/Wnd/Debug.Designer.cs

@@ -119,7 +119,7 @@
119
             this.button_Clear.TabIndex = 2;
119
             this.button_Clear.TabIndex = 2;
120
             this.button_Clear.Text = "삭제";
120
             this.button_Clear.Text = "삭제";
121
             this.button_Clear.UseVisualStyleBackColor = true;
121
             this.button_Clear.UseVisualStyleBackColor = true;
122
-            this.button_Clear.Click += new System.EventHandler(this.button_Clear_Click);
122
+            this.button_Clear.Click += new System.EventHandler(this.Button_Clear_Click);
123
             // 
123
             // 
124
             // button_Send
124
             // button_Send
125
             // 
125
             // 

+ 1 - 1
Basic_Terminal/Wnd/Debug.cs

@@ -152,7 +152,7 @@ namespace Basic_Terminal
152
             }
152
             }
153
         }
153
         }
154
 
154
 
155
-        private void button_Clear_Click(object sender, EventArgs e)
155
+        private void Button_Clear_Click(object sender, EventArgs e)
156
         {
156
         {
157
             try
157
             try
158
             {
158
             {