Procházet zdrojové kódy

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

YJ před 6 roky
rodič
revize
7c4545b1ca

+ 34 - 19
Basic_Terminal/Func/Bluecell_BootProtocol.cs

@@ -13,8 +13,12 @@ namespace Basic_Terminal
13 13
         bluecell_header2,
14 14
         bluecell_header3,
15 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 24
     class Bluecell_BootProtocol
@@ -41,34 +45,38 @@ namespace Basic_Terminal
41 45
         public byte[] Boot_Reset(object serial)
42 46
         {
43 47
             this.serial = (Serial)serial;
44
-            byte[] fix_data = new byte[8];
48
+            byte[] fix_data = new byte[11];
45 49
             //Array.Clear(data, 0, data.Length);
46 50
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
47 51
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
48 52
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
49 53
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
50 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 62
             this.serial.Serial_DataSend(fix_data, fix_data.Length);
57 63
             return fix_data;            
58 64
         }
59 65
         public byte[] Boot_DataStart()
60 66
         {
61 67
             //Array.Clear(data, 0, data.Length);
62
-            byte[] fix_data = new byte[9];
68
+            byte[] fix_data = new byte[11];
63 69
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
64 70
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
65 71
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
66 72
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
67 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 80
             return fix_data;
73 81
         }
74 82
         public byte[] Boot_DataSending(byte[] data,int length)
@@ -80,22 +88,29 @@ namespace Basic_Terminal
80 88
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
81 89
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
82 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 97
             return data;
86 98
         }
87
-        public byte[] Boot_DataEnd()
99
+        public byte[] Boot_DataEnd(byte[] data,int length)
88 100
         {
89 101
             //Array.Clear(data, 0, data.Length);
90
-            byte[] fix_data = new byte[5];
102
+            byte[] fix_data = new byte[11];
91 103
             fix_data[(int)Bluepro_t.bluecell_header0] = Bluecell_Header0;
92 104
             fix_data[(int)Bluepro_t.bluecell_header1] = Bluecell_Header1;
93 105
             fix_data[(int)Bluepro_t.bluecell_header2] = Bluecell_Header2;
94 106
             fix_data[(int)Bluepro_t.bluecell_header3] = Bluecell_Header3;
95 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 114
             return fix_data;
100 115
         }
101 116
     }

+ 16 - 3
Basic_Terminal/Func/Data_Handler.cs

@@ -11,18 +11,31 @@ namespace Basic_Terminal
11 11
         FileDownload fileDownload;
12 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 26
             int DataAckcnt = data[(int)Bluepro_t.bluecell_type + 1];
27
+
17 28
             if (HeaderCheck == false)
18 29
             {
19 30
                 return;
20 31
             }
21 32
             else
22 33
             {
23
-                DataSeq seq = DataSeq.UpdateResetOK;
34
+                
24 35
                 switch (seq)
25 36
                 {
37
+                    case DataSeq.UpdateResetOK:
38
+                    case DataSeq.UpdateStartOK:
26 39
                     case DataSeq.UpdateSendingOK:
27 40
                         this.fileDownload.UpdateFileSend(data, DataAckcnt);
28 41
                         break;

+ 1 - 2
Basic_Terminal/Func/FileDownload.cs

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

+ 10 - 4
Basic_Terminal/Func/Serial.cs

@@ -41,7 +41,7 @@ namespace Basic_Terminal
41 41
         private delegate void StringSend(string Text);
42 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 46
             string resultHex = string.Empty;
47 47
             byte[] arr_byteStr = Encoding.Default.GetBytes(strData);
@@ -57,10 +57,16 @@ namespace Basic_Terminal
57 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 64
             System.Text.ASCIIEncoding asencoding = new System.Text.ASCIIEncoding();
63 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 72
         public void Serial_DataRecvFunction(object sender, SerialDataReceivedEventArgs e)
@@ -70,9 +76,9 @@ namespace Basic_Terminal
70 76
             if(Debug.RadioButton_ascii.Checked == true)
71 77
                 Debug.Invoke(new StringSend(Debug.Data_Recv_Str), data);
72 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 83
         public Boolean Serial_PortOpen(ref Button Btn_Portonoff)
78 84
         {

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

@@ -119,7 +119,7 @@
119 119
             this.button_Clear.TabIndex = 2;
120 120
             this.button_Clear.Text = "삭제";
121 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 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 157
             try
158 158
             {