正在显示
13 个修改的文件
包含
296 行增加
和
387 行删除
@@ -72,7 +72,13 @@ | @@ -72,7 +72,13 @@ | ||
72 | "rk_rga.h": "c", | 72 | "rk_rga.h": "c", |
73 | "rgautils.h": "c", | 73 | "rgautils.h": "c", |
74 | "im2d_type.h": "c", | 74 | "im2d_type.h": "c", |
75 | - "im2d.h": "c" | 75 | + "im2d.h": "c", |
76 | + "halrecv_tpye1.h": "c", | ||
77 | + "jzsdk_uart_recvdeal.h": "c", | ||
78 | + "jzsdk_framecomparsion.h": "c", | ||
79 | + "jzsdk_definingcode.h": "c", | ||
80 | + "test_data_transmission.h": "c", | ||
81 | + "halrecv_type1.h": "c" | ||
76 | }, | 82 | }, |
77 | "Codegeex.GenerationPreference": "automatic", | 83 | "Codegeex.GenerationPreference": "automatic", |
78 | "C_Cpp.dimInactiveRegions": false | 84 | "C_Cpp.dimInactiveRegions": false |
1 | # 编译链的配置 | 1 | # 编译链的配置 |
2 | 2 | ||
3 | #1、编译链与设备类型的选择 | 3 | #1、编译链与设备类型的选择 |
4 | -set(DEVICE_NAME JZ_H10T) | 4 | +set(DEVICE_NAME JZ_H1E) |
5 | #上一行为禁止修改行 | 5 | #上一行为禁止修改行 |
6 | 6 | ||
7 | message("**************************JZSDK构建编译开始***************************\n") | 7 | message("**************************JZSDK构建编译开始***************************\n") |
@@ -24,6 +24,7 @@ extern "C" { | @@ -24,6 +24,7 @@ extern "C" { | ||
24 | #include "./JZsdk_ReturnCode.h" | 24 | #include "./JZsdk_ReturnCode.h" |
25 | #include "./JZsdk_FileType.h" | 25 | #include "./JZsdk_FileType.h" |
26 | #include "./JZsdk_WidgetCode.h" | 26 | #include "./JZsdk_WidgetCode.h" |
27 | +#include "./JZsdk_DefineCode.h" | ||
27 | 28 | ||
28 | /* Exported types ------------------------------------------------------------*/ | 29 | /* Exported types ------------------------------------------------------------*/ |
29 | 30 |
1 | +#include <stdio.h> | ||
2 | +#include "./JZsdk_DefineCode.h" | ||
3 | + | ||
4 | +unsigned char * JZsdk_DefineCode_GetPortName(int Port) | ||
5 | +{ | ||
6 | + switch (Port) | ||
7 | + { | ||
8 | + case UART_4G: | ||
9 | + return "设备4G"; | ||
10 | + break; | ||
11 | + | ||
12 | + case UART_DEV_1: | ||
13 | + return "设备UART1"; | ||
14 | + break; | ||
15 | + | ||
16 | + case UART_DEV_2: | ||
17 | + return "设备UART2"; | ||
18 | + break; | ||
19 | + | ||
20 | + case HAL_DATA_TRANSMISSION: | ||
21 | + return "HAL数据"; | ||
22 | + break; | ||
23 | + | ||
24 | + case NO_SPECIFIED: | ||
25 | + return "无指定设备"; | ||
26 | + break; | ||
27 | + | ||
28 | + default: | ||
29 | + return "无指定设备"; | ||
30 | + break; | ||
31 | + } | ||
32 | +} |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file JZsdk_DefiningCode.h | ||
4 | + * 用于记录各种定义类型的表 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef JZSDK_DEFININGCODE_H | ||
11 | +#define JZSDK_DEFININGCODE_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | + | ||
15 | +#ifdef __cplusplus | ||
16 | +extern "C" | ||
17 | +{ | ||
18 | +#endif | ||
19 | + | ||
20 | +/* Exported constants --------------------------------------------------------*/ | ||
21 | +/* 常亮定义*/ | ||
22 | + | ||
23 | +/* Exported types ------------------------------------------------------------*/ | ||
24 | +typedef enum | ||
25 | +{ | ||
26 | + DEVICE_PSDK = 0x1000, // psdk功能 | ||
27 | + UART_4G = 0x1001, // 4G功能 | ||
28 | + UART_DEV_1 = 0x1002, // 1号设备功能 | ||
29 | + UART_DEV_2 = 0x1003, // 2号设备功能 | ||
30 | + UART_DEV_3 = 0x1004, // 3号设备功能 | ||
31 | + UART_DEV_4 = 0x1005, // 4号设备功能 | ||
32 | + UART_DEV_5 = 0x1006, // 5号设备功能 | ||
33 | + | ||
34 | + UART_USB_1 = 0x1100, // usb设备 | ||
35 | + UART_USB_2 = 0x1101, // usb设备 | ||
36 | + UART_USB_3 = 0x1102, // usb设备 | ||
37 | + UART_USB_4 = 0x1103, // usb设备 | ||
38 | + UART_USB_5 = 0x1104, // usb设备 | ||
39 | + | ||
40 | + HAL_DATA_TRANSMISSION = 0x1200, // hal定制的特殊数据传播 | ||
41 | + | ||
42 | + COMBINE_DEVICE = 0x1998, // 组合设备 | ||
43 | + NO_SPECIFIED = 0x1999, // 无制定设备 | ||
44 | +} JZ_DEVICE_PORT_TYPE; | ||
45 | + | ||
46 | +/* Exported functions --------------------------------------------------------*/ | ||
47 | + | ||
48 | +#ifdef __cplusplus | ||
49 | +} | ||
50 | +#endif | ||
51 | + | ||
52 | +#endif |
@@ -21,25 +21,6 @@ extern "C" { | @@ -21,25 +21,6 @@ extern "C" { | ||
21 | 21 | ||
22 | /* Exported constants --------------------------------------------------------*/ | 22 | /* Exported constants --------------------------------------------------------*/ |
23 | /* 常亮定义*/ | 23 | /* 常亮定义*/ |
24 | -#define DEVICE_PSDK 0x1000 //psdk功能 | ||
25 | -#define UART_4G 0x1001 //4G功能 | ||
26 | -#define UART_DEV_1 0x1002 //1号设备功能 | ||
27 | -#define UART_DEV_2 0x1003 //2号设备功能 | ||
28 | -#define UART_DEV_3 0x1004 //3号设备功能 | ||
29 | -#define UART_DEV_4 0x1005 //4号设备功能 | ||
30 | -#define UART_DEV_5 0x1006 //5号设备功能 | ||
31 | - | ||
32 | -#define UART_USB_1 0x1100 //usb设备 | ||
33 | -#define UART_USB_2 0x1101 //usb设备 | ||
34 | -#define UART_USB_3 0x1102 //usb设备 | ||
35 | -#define UART_USB_4 0x1103 //usb设备 | ||
36 | -#define UART_USB_5 0x1104 //usb设备 | ||
37 | - | ||
38 | -#define HAL_DATA_TRANSMISSION 0x1200 //hal定制的特殊数据传播 | ||
39 | - | ||
40 | - | ||
41 | -#define COMBINE_DEVICE 0x1998 //组合设备 | ||
42 | -#define NO_SPECIFIED 0x1999 //无制定设备 | ||
43 | 24 | ||
44 | //展架通讯串口 | 25 | //展架通讯串口 |
45 | #if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | 26 | #if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T |
@@ -7,19 +7,19 @@ | @@ -7,19 +7,19 @@ | ||
7 | #define VERSION_CHOOSE_H | 7 | #define VERSION_CHOOSE_H |
8 | #include "./ConfigParams.h" | 8 | #include "./ConfigParams.h" |
9 | //1~10行 除了D可以修改版本选择 禁止动任何东西 | 9 | //1~10行 除了D可以修改版本选择 禁止动任何东西 |
10 | -#define DEVICE_VERSION JZ_H10T | 10 | +#define DEVICE_VERSION JZ_H1E |
11 | 11 | ||
12 | //禁止修改行 选择是串口程序 还是 psdk程序 | 12 | //禁止修改行 选择是串口程序 还是 psdk程序 |
13 | -#define APP_VERSION APP_PSDK | 13 | +#define APP_VERSION APP_UART |
14 | 14 | ||
15 | //禁止修改行 板子型号 | 15 | //禁止修改行 板子型号 |
16 | #define PLATFORM_VERSION PLATFORM_V3S | 16 | #define PLATFORM_VERSION PLATFORM_V3S |
17 | 17 | ||
18 | //禁止修改行 串口连接程序的软件版本号 | 18 | //禁止修改行 串口连接程序的软件版本号 |
19 | -#define MAJOR_VERSION 0x01 | ||
20 | -#define MINOR_VERSION 0x03 | ||
21 | -#define MODIFY_VERSION 0x09 | ||
22 | -#define DEBUG_VERSION 0x03 | 19 | +#define MAJOR_VERSION 0x00 |
20 | +#define MINOR_VERSION 0x00 | ||
21 | +#define MODIFY_VERSION 0x02 | ||
22 | +#define DEBUG_VERSION 0x09 | ||
23 | 23 | ||
24 | //禁止修改行 滤波方式 | 24 | //禁止修改行 滤波方式 |
25 | #define FILTERING_TYPE HIGH_PASS_FILTERING | 25 | #define FILTERING_TYPE HIGH_PASS_FILTERING |
@@ -9,6 +9,8 @@ | @@ -9,6 +9,8 @@ | ||
9 | #include <stdio.h> | 9 | #include <stdio.h> |
10 | #include "JZsdkLib.h" | 10 | #include "JZsdkLib.h" |
11 | #include "BaseConfig.h" | 11 | #include "BaseConfig.h" |
12 | +#include "Hal_Recv/HalRecv_type1/HalRecv_type1.h" | ||
13 | +#include "Hal_Recv/HalRecv_type1/HalRecv_type1_RecvDeal.h" | ||
12 | 14 | ||
13 | /*************** | 15 | /*************** |
14 | * | 16 | * |
@@ -19,12 +21,27 @@ | @@ -19,12 +21,27 @@ | ||
19 | * 输入要 处理的原始数据data 以及 数据长度DataLen 还有输入的接口 | 21 | * 输入要 处理的原始数据data 以及 数据长度DataLen 还有输入的接口 |
20 | * 返回值:未处理的长度数据 | 22 | * 返回值:未处理的长度数据 |
21 | * | 23 | * |
22 | - * 返回后在 | 24 | + * 该协议的帧排序为 |
25 | + * | ||
26 | + * 帧头三位 0x5A 0x5A 0x77 | 组成了实际的帧头 | ||
27 | + * 帧长度两位 0x00 0x00 | | ||
28 | + * | ||
29 | + * 应答位一位 0x00 | 组成了识别顺序的部分 | ||
30 | + * 帧序列一位 0x00 | | ||
31 | + * | ||
32 | + * 一级功能码一位 0x00 | 组成了数据功能识别的部分 | ||
33 | + * 二级功能码一位 0x00 | | ||
34 | + * | ||
35 | + * 数据位 不定 | 用于描述该帧的实际内容 | ||
36 | + * | ||
37 | + * 帧尾两位 0x00 0x23 | 祖册了实际的帧尾 | ||
38 | + * | ||
23 | * ********************/ | 39 | * ********************/ |
24 | -int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int DataLen, int Port) | 40 | +int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int DataLen, int Port) |
25 | { | 41 | { |
26 | int ResidualLength = 0; // 剩余数据长度 | 42 | int ResidualLength = 0; // 剩余数据长度 |
27 | 43 | ||
44 | + //串口打印 | ||
28 | switch (Port) | 45 | switch (Port) |
29 | { | 46 | { |
30 | case UART_DEV_1: | 47 | case UART_DEV_1: |
@@ -63,9 +80,10 @@ int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D | @@ -63,9 +80,10 @@ int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D | ||
63 | int FrameLen = 0; | 80 | int FrameLen = 0; |
64 | 81 | ||
65 | //将数据提取出来 | 82 | //将数据提取出来 |
83 | + //为什么是减3呢,因为帧头为3位 | ||
66 | for (HaveReadLen = 0; HaveReadLen <= (DataLen - 3); ) | 84 | for (HaveReadLen = 0; HaveReadLen <= (DataLen - 3); ) |
67 | { | 85 | { |
68 | - //查找是否存在 帧头 | 86 | + //查找是否存在帧头 |
69 | switch (Data[HaveReadLen]) | 87 | switch (Data[HaveReadLen]) |
70 | { | 88 | { |
71 | case 0x5A: | 89 | case 0x5A: |
@@ -124,28 +142,34 @@ int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D | @@ -124,28 +142,34 @@ int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D | ||
124 | break; | 142 | break; |
125 | } | 143 | } |
126 | 144 | ||
145 | + //没有检测到帧头,向后继续查找 | ||
127 | if (FrameFlag == 0x00) | 146 | if (FrameFlag == 0x00) |
128 | { | 147 | { |
129 | - if (HaveReadLen >= (DataLen - 5)) | ||
130 | - { | ||
131 | - //JZSDK_LOG_INFO("没有找到帧头"); | ||
132 | - } | ||
133 | HaveReadLen++; | 148 | HaveReadLen++; |
134 | continue; | 149 | continue; |
135 | } | 150 | } |
136 | 151 | ||
137 | - //如果有帧头,则先判断前面有没有多余的数据残留,并将其移除 | 152 | + //如果有帧头 |
153 | + //判断前面有没有多余的数据残留,并将其移除 | ||
138 | if (HaveReadLen > HaveDealLen) | 154 | if (HaveReadLen > HaveDealLen) |
139 | { | 155 | { |
140 | //JZSDK_LOG_INFO("残余处理%d",(HaveReadLen - HaveDealLen)); | 156 | //JZSDK_LOG_INFO("残余处理%d",(HaveReadLen - HaveDealLen)); |
141 | HaveDealLen = HaveReadLen; | 157 | HaveDealLen = HaveReadLen; |
142 | } | 158 | } |
143 | 159 | ||
144 | - //检查帧长度是否超出数据剩余的内容 | 160 | + //检查此时的剩余长度是否足够容纳帧长度位 |
161 | + if ((DataLen - HaveReadLen) < 5) | ||
162 | + { | ||
163 | + //如果已经容纳不下长度位了,则返回内容 | ||
164 | + ResidualLength = (DataLen - HaveReadLen); | ||
165 | + return ResidualLength; | ||
166 | + } | ||
167 | + | ||
168 | + //此时有足够的长度位置,可以计算长度,检查帧长度是否超出数据剩余的内容 | ||
145 | FrameLen = (((int)Data[HaveReadLen+3]) << 8) + (int)Data[HaveReadLen+4]; | 169 | FrameLen = (((int)Data[HaveReadLen+3]) << 8) + (int)Data[HaveReadLen+4]; |
146 | if (FrameLen > (DataLen - HaveReadLen)) | 170 | if (FrameLen > (DataLen - HaveReadLen)) |
147 | { | 171 | { |
148 | - //JZSDK_LOG_DEBUG("当前帧长度位长度%d 超出剩余帧长度%d ",FrameLen,(getbufLen - HaveReadLen)); | 172 | + //JZSDK_LOG_DEBUG("当前帧长度位长度%d 超出剩余帧长度%d ",FrameLen,(DataLen - HaveReadLen)); |
149 | // 直接跳出for循环 | 173 | // 直接跳出for循环 |
150 | break; | 174 | break; |
151 | } | 175 | } |
@@ -160,32 +184,118 @@ int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D | @@ -160,32 +184,118 @@ int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D | ||
160 | 184 | ||
161 | //以上检查都没问题,则正常输出帧 | 185 | //以上检查都没问题,则正常输出帧 |
162 | //JZSDK_LOG_INFO("正常输出帧%d",FrameLen); | 186 | //JZSDK_LOG_INFO("正常输出帧%d",FrameLen); |
187 | + HalRecv_type1_FrameDeal(Port, &Data[HaveReadLen], FrameLen); | ||
163 | 188 | ||
164 | - //UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveReadLen], FrameLen); | ||
165 | HaveReadLen = HaveReadLen + FrameLen; | 189 | HaveReadLen = HaveReadLen + FrameLen; |
166 | HaveDealLen = HaveReadLen; | 190 | HaveDealLen = HaveReadLen; |
167 | 191 | ||
168 | - JZSDK_LOG_INFO("Prot:%x f_len%d h_r%d [h_r]:%x get%d",Port,FrameLen ,HaveReadLen, getbuf[HaveReadLen-1], DataLen); | 192 | + JZSDK_LOG_INFO("Prot:%x f_len%d h_r%d [h_r]:%x get%d",Port,FrameLen ,HaveReadLen, Data[HaveReadLen-1], DataLen); |
169 | 193 | ||
170 | FrameLen = 0; | 194 | FrameLen = 0; |
171 | FrameFlag = 0; | 195 | FrameFlag = 0; |
172 | } | 196 | } |
173 | 197 | ||
174 | - // 如果没有数据残留了 | 198 | + // 如果没有数据残留了,可以直接退出了 |
175 | if (HaveDealLen >= DataLen) | 199 | if (HaveDealLen >= DataLen) |
176 | { | 200 | { |
177 | - //printf("HaveReadLen:%d HaveDealLen%d getbufLen:%d\n",HaveReadLen,HaveDealLen,getbufLen); | 201 | + //printf("HaveReadLen:%d HaveDealLen%d DataLen:%d\n",HaveReadLen,HaveDealLen,DataLen); |
178 | ResidualLength = 0; | 202 | ResidualLength = 0; |
179 | return ResidualLength; | 203 | return ResidualLength; |
180 | } | 204 | } |
181 | 205 | ||
182 | - else | 206 | + // 到达这里时 |
207 | + // 完整的帧 已处理 | ||
208 | + // 有帧头且长度为4的帧则已返回 | ||
209 | + // 没有剩余数据则已返回 | ||
210 | + | ||
211 | + // 剩下的是 | ||
212 | + // 1、剩余长度为所有0~3的帧 | ||
213 | + // 2、切帧的帧(即带帧头 长度大于4 小于帧长度的帧) | ||
214 | + // 3、以及无实际意义数据 | ||
215 | + | ||
216 | + // 如果有帧头与长度位判定, 说明是切帧的帧,判断长度是否合理,如果合理返回帧长度给接收线程 | ||
217 | + if (FrameFlag != 0) //bu | ||
183 | { | 218 | { |
219 | + // 1、判断帧的长度会不会不合理,帧的长度最大为文件名帧,其长度为9+2+1024 | ||
220 | + if (FrameLen > (9 + 2 + 1024)) | ||
221 | + { | ||
222 | + // 将其移除数据 | ||
223 | + HaveDealLen = HaveReadLen; | ||
224 | + ResidualLength = 0; | ||
225 | + return ResidualLength; | ||
226 | + } | ||
227 | + | ||
228 | + printf("切帧返回%d\n",(DataLen - HaveDealLen)); | ||
229 | + | ||
230 | + // 2、如果合理,则返回剩余长度 | ||
231 | + ResidualLength = (DataLen - HaveDealLen); | ||
232 | + return ResidualLength; | ||
233 | + } | ||
184 | 234 | ||
235 | + //接下来判断1类型 | ||
236 | + | ||
237 | + //检查最后3位 | ||
238 | + for (; HaveReadLen < DataLen - 2; HaveReadLen++) | ||
239 | + { | ||
240 | + if ((Data[HaveReadLen] == 0x5A && Data[HaveReadLen + 1] == 0x5A && Data[HaveReadLen + 2] == 0x77) || | ||
241 | + (Data[HaveReadLen] == 0x5B && Data[HaveReadLen + 1] == 0x5B && Data[HaveReadLen + 2] == 0x77) || | ||
242 | + (Data[HaveReadLen] == 0x6A && Data[HaveReadLen + 1] == 0x6A && Data[HaveReadLen + 2] == 0x77) || | ||
243 | + (Data[HaveReadLen] == 0x6B && Data[HaveReadLen + 1] == 0x6B && Data[HaveReadLen + 2] == 0x77)) | ||
244 | + { | ||
245 | + //如果最后三位前还有数据,将其清空 | ||
246 | + if ((HaveReadLen - HaveDealLen) > 0) | ||
247 | + { | ||
248 | + HaveDealLen = HaveReadLen; | ||
185 | } | 249 | } |
186 | 250 | ||
251 | + printf("检查最后3 4位%d\n",(DataLen - HaveDealLen)); | ||
252 | + | ||
253 | + ResidualLength = (DataLen - HaveDealLen); | ||
187 | return ResidualLength; | 254 | return ResidualLength; |
188 | -} | 255 | + } |
256 | + } | ||
257 | + | ||
258 | + //检查最后两位 | ||
259 | + for (; HaveReadLen < DataLen - 1; HaveReadLen++) | ||
260 | + { | ||
261 | + if ((Data[HaveReadLen] == 0x5A && Data[HaveReadLen + 1] == 0x5A) || | ||
262 | + (Data[HaveReadLen] == 0x5B && Data[HaveReadLen + 1] == 0x5B) || | ||
263 | + (Data[HaveReadLen] == 0x6A && Data[HaveReadLen + 1] == 0x6A) || | ||
264 | + (Data[HaveReadLen] == 0x6B && Data[HaveReadLen + 1] == 0x6B)) | ||
265 | + { | ||
266 | + if ((HaveReadLen - HaveDealLen) > 0) | ||
267 | + { | ||
268 | + HaveDealLen = HaveReadLen; | ||
269 | + } | ||
270 | + | ||
271 | + printf("检查最后两位%d\n",(DataLen - HaveDealLen)); | ||
272 | + | ||
273 | + ResidualLength = (DataLen - HaveDealLen); | ||
274 | + return ResidualLength; | ||
275 | + } | ||
276 | + } | ||
277 | + | ||
278 | + //检查最后一位 | ||
279 | + for (; HaveReadLen < DataLen - 0; HaveReadLen++) | ||
280 | + { | ||
281 | + if (Data[HaveReadLen] == 0x5A || | ||
282 | + Data[HaveReadLen] == 0x5B || | ||
283 | + Data[HaveReadLen] == 0x6A || | ||
284 | + Data[HaveReadLen] == 0x6B) | ||
285 | + { | ||
286 | + if ((HaveReadLen - HaveDealLen) > 0) | ||
287 | + { | ||
288 | + HaveDealLen = HaveReadLen; | ||
289 | + } | ||
189 | 290 | ||
291 | + printf("检查最后一位%d\n",(DataLen - HaveDealLen)); | ||
190 | 292 | ||
191 | -static T_JZsdkReturnCode | ||
293 | + ResidualLength = (DataLen - HaveDealLen); | ||
294 | + return ResidualLength; | ||
295 | + } | ||
296 | + } | ||
297 | + | ||
298 | + //都检查完了,还是没有帧头在里面,清空所有数据 | ||
299 | + ResidualLength = 0; | ||
300 | + return ResidualLength; | ||
301 | +} |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file HalRecv_tpye1.h | ||
4 | + * HalRecv_tpye1.h的头文件 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef HALRECV_TPYE1_H | ||
11 | +#define HALRECV_TPYE1_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | + | ||
15 | +#ifdef __cplusplus | ||
16 | +extern "C" { | ||
17 | +#endif | ||
18 | + | ||
19 | +/* Exported constants --------------------------------------------------------*/ | ||
20 | +/* 常亮定义*/ | ||
21 | + | ||
22 | +/* Exported types ------------------------------------------------------------*/ | ||
23 | + | ||
24 | +/* Exported functions --------------------------------------------------------*/ | ||
25 | + | ||
26 | +int HalRecv_tpye1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int DataLen, int Port); | ||
27 | + | ||
28 | + | ||
29 | +#ifdef __cplusplus | ||
30 | +} | ||
31 | +#endif | ||
32 | + | ||
33 | +#endif |
此 diff 太大无法显示。
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file HalRecv_type1_RecvDeal.h | ||
4 | + * HalRecv_type1_RecvDeal | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef HALRECV_TYPE1_RECVDEAL_H | ||
11 | +#define HALRECV_TYPE1_RECVDEAL_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | + | ||
15 | +#ifdef __cplusplus | ||
16 | +extern "C" { | ||
17 | +#endif | ||
18 | + | ||
19 | +/* Exported constants --------------------------------------------------------*/ | ||
20 | +/* 常亮定义*/ | ||
21 | +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
22 | + | ||
23 | +/* Exported types ------------------------------------------------------------*/ | ||
24 | + | ||
25 | +/* Exported functions --------------------------------------------------------*/ | ||
26 | +T_JZsdkReturnCode HalRecv_type1_FrameDeal(int Port, unsigned char *getbuf, int len); | ||
27 | + | ||
28 | +#ifdef __cplusplus | ||
29 | +} | ||
30 | +#endif | ||
31 | + | ||
32 | +#endif |
@@ -8,6 +8,7 @@ | @@ -8,6 +8,7 @@ | ||
8 | #include "JZsdk_Base/JZsdk_FrameComparsion/JZsdk_FrameComparsion.h" | 8 | #include "JZsdk_Base/JZsdk_FrameComparsion/JZsdk_FrameComparsion.h" |
9 | #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" | 9 | #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" |
10 | #include "BaseConfig.h" | 10 | #include "BaseConfig.h" |
11 | +#include "Hal_Recv/HalRecv_type1/HalRecv_type1.h" | ||
11 | 12 | ||
12 | typedef struct | 13 | typedef struct |
13 | { | 14 | { |
@@ -365,7 +366,7 @@ static void *JZsdk_hal_data_deal(void *arg) | @@ -365,7 +366,7 @@ static void *JZsdk_hal_data_deal(void *arg) | ||
365 | } | 366 | } |
366 | 367 | ||
367 | // 处理数据 | 368 | // 处理数据 |
368 | - ResidualLength = UartDeal_Recv_interface(1,HAL_DATA_TRANSMISSION, args->Message, args->MessageLength); | 369 | + ResidualLength = HalRecv_type1_PreliminaryScreeningOfData(args->Message, args->MessageLength, HAL_DATA_TRANSMISSION); |
369 | //如果还有剩余的长度 | 370 | //如果还有剩余的长度 |
370 | if (ResidualLength != 0) | 371 | if (ResidualLength != 0) |
371 | { | 372 | { |
@@ -8,12 +8,13 @@ | @@ -8,12 +8,13 @@ | ||
8 | #include <termios.h> | 8 | #include <termios.h> |
9 | #include <sys/time.h> | 9 | #include <sys/time.h> |
10 | #include "JZsdk_uart/Uart_Config.h" | 10 | #include "JZsdk_uart/Uart_Config.h" |
11 | -#include "JZsdk_Uart_Recv/JZsdk_Uart_RecvDeal.h" | 11 | + |
12 | #include "JZsdkLib.h" | 12 | #include "JZsdkLib.h" |
13 | #include "JZsdk_uart/JZsdk_Uart_Input.h" | 13 | #include "JZsdk_uart/JZsdk_Uart_Input.h" |
14 | #include "JZsdk_TaskManagement/TaskManagement.h" | 14 | #include "JZsdk_TaskManagement/TaskManagement.h" |
15 | #include "JZsdk_Uart_UartDeal.h" | 15 | #include "JZsdk_Uart_UartDeal.h" |
16 | 16 | ||
17 | +#include "Hal_Recv/HalRecv_type1/HalRecv_type1.h" | ||
17 | 18 | ||
18 | #if APP_VERSION == APP_PSDK | 19 | #if APP_VERSION == APP_PSDK |
19 | #include "data_transmission/test_data_transmission.h" | 20 | #include "data_transmission/test_data_transmission.h" |
@@ -301,7 +302,7 @@ static void *UartDeal_deal(void *arg) | @@ -301,7 +302,7 @@ static void *UartDeal_deal(void *arg) | ||
301 | if (args->MessageLength > 0) | 302 | if (args->MessageLength > 0) |
302 | { | 303 | { |
303 | //处理数据 | 304 | //处理数据 |
304 | - ResidualLength = UartDeal_Recv_interface(0, args->UartFd, args->Message, args->MessageLength); | 305 | + ResidualLength = HalRecv_tpye1_PreliminaryScreeningOfData(args->Message, args->MessageLength, args->UartDevName); |
305 | 306 | ||
306 | //如果还有剩余的长度 | 307 | //如果还有剩余的长度 |
307 | if (ResidualLength != 0) //将其返还到缓冲区 | 308 | if (ResidualLength != 0) //将其返还到缓冲区 |
@@ -357,346 +358,6 @@ static void *UartDeal_deal(void *arg) | @@ -357,346 +358,6 @@ static void *UartDeal_deal(void *arg) | ||
357 | **********************************************************************************************************************/ | 358 | **********************************************************************************************************************/ |
358 | 359 | ||
359 | 360 | ||
360 | - | ||
361 | - | ||
362 | - | ||
363 | - | ||
364 | -/* | ||
365 | - | ||
366 | - 数据排出函数 | ||
367 | - | ||
368 | -*/ | ||
369 | -static int UartDeal_Recv_Ouput(int tpye, int fd, unsigned char *getbuf, int ReadLen) | ||
370 | -{ | ||
371 | - //JZSDK_LOG_INFO("UartDeal_Recv_Ouput排出函数%d",ReadLen); | ||
372 | - if (tpye == 0) | ||
373 | - { | ||
374 | - if (fd == Uart_DEV1_fd) | ||
375 | - { | ||
376 | - JZsdk_Uart_RecvDeal_CharmDeal(UART_DEV_1, getbuf, ReadLen); | ||
377 | - | ||
378 | - } | ||
379 | - else if (fd == Uart_DEV2_fd) | ||
380 | - { | ||
381 | - JZsdk_Uart_RecvDeal_CharmDeal(UART_DEV_2, getbuf, ReadLen); | ||
382 | - } | ||
383 | - else if (fd == Uart_4G_fd) | ||
384 | - { | ||
385 | - JZsdk_Uart_RecvDeal_CharmDeal(UART_4G, getbuf, ReadLen); | ||
386 | - } | ||
387 | - else | ||
388 | - { | ||
389 | - JZSDK_LOG_ERROR("接收到的数据不是从正常串口来的"); | ||
390 | - return 0; | ||
391 | - } | ||
392 | - } | ||
393 | - else if (tpye == 1) | ||
394 | - { | ||
395 | - if (fd == HAL_DATA_TRANSMISSION) | ||
396 | - { | ||
397 | - JZsdk_Uart_RecvDeal_CharmDeal(HAL_DATA_TRANSMISSION, getbuf, ReadLen); | ||
398 | - } | ||
399 | - else | ||
400 | - { | ||
401 | - JZSDK_LOG_ERROR("接收到的数据不是从hal_transmisson来的"); | ||
402 | - return 0; | ||
403 | - } | ||
404 | - } | ||
405 | -} | ||
406 | - | ||
407 | -/* | ||
408 | - | ||
409 | - 处理数据接口,返回没有处理的数据长度 | ||
410 | - | ||
411 | -*/ | ||
412 | -int UartDeal_Recv_interface(int type, int Uart_fd , unsigned char *getbuf, int getbufLen) | ||
413 | -{ | ||
414 | - //0即是串口内容 | ||
415 | - if (type == 0) | ||
416 | - { | ||
417 | - if (Uart_fd == Uart_DEV1_fd) | ||
418 | - { | ||
419 | - //JZSDK_LOG_INFO("串口-设备1号,接受到数据+未处理数据的长度len: %d", getbufLen); | ||
420 | - } | ||
421 | - else if (Uart_fd == Uart_DEV2_fd) | ||
422 | - { | ||
423 | - //JZSDK_LOG_INFO("串口-设备2号,接受到数据+未处理数据的长度len: %d", getbufLen); | ||
424 | - } | ||
425 | - else if (Uart_fd == Uart_4G_fd) | ||
426 | - { | ||
427 | - //JZSDK_LOG_INFO("串口-设备4G,接受到数据+未处理数据的长度len: %d", getbufLen); | ||
428 | - } | ||
429 | - else | ||
430 | - { | ||
431 | - JZSDK_LOG_ERROR("接收到的数据不是从正常串口来的"); | ||
432 | - return 0; | ||
433 | - } | ||
434 | - } | ||
435 | - else if (type == 1) | ||
436 | - { | ||
437 | - if (Uart_fd == HAL_DATA_TRANSMISSION) | ||
438 | - { | ||
439 | - //JZSDK_LOG_INFO("hal_data,接受到数据+未处理数据的长度len: %d", getbufLen); | ||
440 | - } | ||
441 | - else | ||
442 | - { | ||
443 | - JZSDK_LOG_ERROR("接收到的数据不是从hal_transmisson来的"); | ||
444 | - return 0; | ||
445 | - } | ||
446 | - } | ||
447 | - | ||
448 | - // 是否要打印内容 | ||
449 | - // printf("getbuf: %s\n", getbuf); | ||
450 | - // for (int i = 0; i < getbufLen; i++) | ||
451 | - // { | ||
452 | - // printf("%x ", getbuf[i]); | ||
453 | - // } | ||
454 | - // printf("\n"); | ||
455 | - | ||
456 | - int HaveReadLen = 0; // 已读长度 | ||
457 | - int HaveDealLen = 0; // 已处理长度 | ||
458 | - int FrameFlag = 0; // 帧标志 | ||
459 | - int FrameLen = 0; | ||
460 | - | ||
461 | - // 检索出帧数据 | ||
462 | - | ||
463 | - // 遍历数据找帧头,直到数据的倒数第4位,如果这里有帧,帧存在帧头3位+数据长度两位 | ||
464 | - | ||
465 | - //printf("遍历开始\n"); | ||
466 | - for (HaveReadLen = 0; HaveReadLen < (getbufLen - 4); ) | ||
467 | - { | ||
468 | - // 1、如果找到 5A 5B 6A 6B 判断是否是帧 | ||
469 | - switch (getbuf[HaveReadLen]) | ||
470 | - { | ||
471 | - case 0x5A: | ||
472 | - if ( (getbuf[HaveReadLen + 1] == 0x5A) && (getbuf[HaveReadLen + 2] == 0x77)) | ||
473 | - { | ||
474 | - //JZSDK_LOG_INFO("输入5A"); | ||
475 | - FrameFlag = 0x5A; | ||
476 | - break; | ||
477 | - } | ||
478 | - else | ||
479 | - { | ||
480 | - FrameFlag = 0x00; | ||
481 | - break; | ||
482 | - } | ||
483 | - | ||
484 | - case 0x5B: | ||
485 | - if ((getbuf[HaveReadLen + 1] == 0x5B) && (getbuf[HaveReadLen + 2] == 0x77)) | ||
486 | - { | ||
487 | - //JZSDK_LOG_INFO("输入5B"); | ||
488 | - FrameFlag = 0x5B; | ||
489 | - break; | ||
490 | - } | ||
491 | - else | ||
492 | - { | ||
493 | - FrameFlag = 0x00; | ||
494 | - break; | ||
495 | - } | ||
496 | - | ||
497 | - case 0x6A: | ||
498 | - if ((getbuf[HaveReadLen + 1] == 0x6A) && (getbuf[HaveReadLen + 2] == 0x77)) | ||
499 | - { | ||
500 | - //JZSDK_LOG_INFO("输入6A"); | ||
501 | - FrameFlag = 0x6A; | ||
502 | - break; | ||
503 | - } | ||
504 | - else | ||
505 | - { | ||
506 | - FrameFlag = 0x00; | ||
507 | - break; | ||
508 | - } | ||
509 | - | ||
510 | - case 0x6B: | ||
511 | - if ((getbuf[HaveReadLen + 1] == 0x6B) && (getbuf[HaveReadLen + 2] == 0x77)) | ||
512 | - { | ||
513 | - //JZSDK_LOG_INFO("输入6B"); | ||
514 | - FrameFlag = 0x6B; | ||
515 | - break; | ||
516 | - } | ||
517 | - else | ||
518 | - { | ||
519 | - FrameFlag = 0x00; | ||
520 | - break; | ||
521 | - } | ||
522 | - | ||
523 | - default: | ||
524 | - FrameFlag = 0x00; | ||
525 | - break; | ||
526 | - } | ||
527 | - | ||
528 | - if (FrameFlag == 0) | ||
529 | - { | ||
530 | - if (HaveReadLen >= (getbufLen - 5)) | ||
531 | - { | ||
532 | - //JZSDK_LOG_INFO("没有找到帧头"); | ||
533 | - } | ||
534 | - HaveReadLen++; | ||
535 | - continue; | ||
536 | - } | ||
537 | - | ||
538 | - // 3、如果有帧头,则先判断前面有没有多余的数据残留,并将其排出到处理线程 | ||
539 | - if ((HaveReadLen - HaveDealLen) > 0) | ||
540 | - { | ||
541 | - //JZSDK_LOG_INFO("残余处理%d",(HaveReadLen - HaveDealLen)); | ||
542 | - UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveDealLen], (HaveReadLen - HaveDealLen)); | ||
543 | - HaveDealLen = HaveReadLen; | ||
544 | - } | ||
545 | - | ||
546 | - // 4、检查帧长度是否超过数组剩余内容 | ||
547 | - FrameLen = (((int)getbuf[HaveReadLen+3]) << 8) + (int)getbuf[HaveReadLen+4]; | ||
548 | - if (FrameLen > (getbufLen - HaveReadLen)) | ||
549 | - { | ||
550 | - JZSDK_LOG_DEBUG("当前帧长度位长度%d 超出剩余帧长度%d ",FrameLen,(getbufLen - HaveReadLen)); | ||
551 | - // 直接跳出for循环 | ||
552 | - break; | ||
553 | - } | ||
554 | - | ||
555 | - //5、检查帧长度是否为0,避免卡死接收串口 | ||
556 | - if (FrameLen == 0) | ||
557 | - { | ||
558 | - JZSDK_LOG_ERROR("严重错误,接收到的帧出现长度为空"); | ||
559 | - //直接清空接收的数组 | ||
560 | - return 0; | ||
561 | - } | ||
562 | - | ||
563 | - // 6、以上检查都没问题,则正常输出帧 | ||
564 | - //JZSDK_LOG_INFO("正常输出帧%d",FrameLen); | ||
565 | - UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveReadLen], FrameLen); | ||
566 | - HaveReadLen = HaveReadLen + FrameLen; | ||
567 | - HaveDealLen = HaveReadLen; | ||
568 | - | ||
569 | - JZSDK_LOG_INFO("fd:%x f_len%d h_r%d [h_r]:%x get%d", Uart_fd,FrameLen ,HaveReadLen, getbuf[HaveReadLen-1], getbufLen); | ||
570 | - | ||
571 | - FrameLen = 0; | ||
572 | - FrameFlag = 0; | ||
573 | - } | ||
574 | - | ||
575 | - //JZSDK_LOG_INFO("UartDeal_Recv_Ouput%d %d %d",HaveDealLen,HaveReadLen , getbufLen); | ||
576 | - | ||
577 | - // 如果没有数据残留了 | ||
578 | - if (HaveDealLen >= getbufLen) | ||
579 | - { | ||
580 | - //printf("HaveReadLen:%d HaveDealLen%d getbufLen:%d\n",HaveReadLen,HaveDealLen,getbufLen); | ||
581 | - return 0; | ||
582 | - } | ||
583 | - | ||
584 | - // 如果是有帧头的情况跳出的,说明是帧被切了,需要返回帧长度给接收线程 | ||
585 | - if (FrameFlag != 0) //bu | ||
586 | - { | ||
587 | - // 1、判断帧的长度会不会不合理,帧的长度最大为文件名帧,其长度为9+2+400 | ||
588 | - if (FrameLen > (9 + 2 + 400)) | ||
589 | - { | ||
590 | - // 将其排出不返回 | ||
591 | - UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveReadLen], (getbufLen - HaveReadLen)); | ||
592 | - HaveDealLen = HaveReadLen; | ||
593 | - return 0; | ||
594 | - } | ||
595 | - | ||
596 | - printf("切帧返回%d\n",(getbufLen - HaveDealLen)); | ||
597 | - | ||
598 | - // 2、如果合理,则返回剩余长度 | ||
599 | - return (getbufLen - HaveDealLen); | ||
600 | - } | ||
601 | - | ||
602 | - // 如果是没有帧头的情况下跳出的 | ||
603 | - // 1、先检查 未经检查最后 最后4 3位 | ||
604 | - //如果还有4 或者 3 位未处理 | ||
605 | - for (; HaveReadLen < getbufLen - 2; HaveReadLen++) | ||
606 | - { | ||
607 | - if ((getbuf[HaveReadLen] == 0x5A && getbuf[HaveReadLen + 1] == 0x5A && getbuf[HaveReadLen + 2] == 0x77) || | ||
608 | - (getbuf[HaveReadLen] == 0x5B && getbuf[HaveReadLen + 1] == 0x5B && getbuf[HaveReadLen + 2] == 0x77) || | ||
609 | - (getbuf[HaveReadLen] == 0x6A && getbuf[HaveReadLen + 1] == 0x6A && getbuf[HaveReadLen + 2] == 0x77) || | ||
610 | - (getbuf[HaveReadLen] == 0x6B && getbuf[HaveReadLen + 1] == 0x6B && getbuf[HaveReadLen + 2] == 0x77)) | ||
611 | - { | ||
612 | - if ((HaveReadLen - HaveDealLen) > 0) | ||
613 | - { | ||
614 | - UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveDealLen], (HaveReadLen - HaveDealLen)); | ||
615 | - HaveDealLen = HaveReadLen; | ||
616 | - } | ||
617 | - | ||
618 | - printf("检查最后3 4位%d\n",(getbufLen - HaveDealLen)); | ||
619 | - | ||
620 | - return (getbufLen - HaveDealLen); | ||
621 | - } | ||
622 | - } | ||
623 | - | ||
624 | - // 2、检查最后两位 | ||
625 | - // 如果还有两位未处理 | ||
626 | - for (; HaveReadLen < getbufLen - 1; HaveReadLen++) | ||
627 | - { | ||
628 | - if ((getbuf[HaveReadLen] == 0x5A && getbuf[HaveReadLen + 1] == 0x5A) || | ||
629 | - (getbuf[HaveReadLen] == 0x5B && getbuf[HaveReadLen + 1] == 0x5B) || | ||
630 | - (getbuf[HaveReadLen] == 0x6A && getbuf[HaveReadLen + 1] == 0x6A) || | ||
631 | - (getbuf[HaveReadLen] == 0x6B && getbuf[HaveReadLen + 1] == 0x6B)) | ||
632 | - { | ||
633 | - if ((HaveReadLen - HaveDealLen) > 0) | ||
634 | - { | ||
635 | - UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveDealLen], (HaveReadLen - HaveDealLen)); | ||
636 | - HaveDealLen = HaveReadLen; | ||
637 | - } | ||
638 | - | ||
639 | - printf("检查最后两位%d\n",(getbufLen - HaveDealLen)); | ||
640 | - | ||
641 | - return (getbufLen - HaveDealLen); | ||
642 | - } | ||
643 | - } | ||
644 | - | ||
645 | - // 2、检查最后一位 | ||
646 | - // 如果还有一位未处理 | ||
647 | - for (; HaveReadLen < getbufLen - 0; HaveReadLen++) | ||
648 | - { | ||
649 | - // 1、检查最后一位 | ||
650 | - if (getbuf[HaveReadLen] == 0x5A || | ||
651 | - getbuf[HaveReadLen] == 0x5B || | ||
652 | - getbuf[HaveReadLen] == 0x6A || | ||
653 | - getbuf[HaveReadLen] == 0x6B) | ||
654 | - { | ||
655 | - if ((HaveReadLen - HaveDealLen) > 0) | ||
656 | - { | ||
657 | - UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveDealLen], (HaveReadLen - HaveDealLen)); | ||
658 | - HaveDealLen = HaveReadLen; | ||
659 | - } | ||
660 | - | ||
661 | - printf("检查最后一位%d\n",(getbufLen - HaveDealLen)); | ||
662 | - | ||
663 | - return (getbufLen - HaveDealLen); | ||
664 | - } | ||
665 | - } | ||
666 | - | ||
667 | - // 都检查完了,还是没有帧头在里面, 将剩余的所有数据排出 | ||
668 | - UartDeal_Recv_Ouput(type, Uart_fd, &getbuf[HaveDealLen], (HaveReadLen - HaveDealLen)); | ||
669 | - printf("检查完毕,排出剩余数据HaveReadLen:%d HaveDealLen%d getbufLen:%d\n",HaveReadLen,HaveDealLen,getbufLen); | ||
670 | - | ||
671 | - return 0; | ||
672 | -} | ||
673 | - | ||
674 | -/********** | ||
675 | - * | ||
676 | - * 无任务发送函数 | ||
677 | - * | ||
678 | - * ***********/ | ||
679 | -T_JZsdkReturnCode JZsdk_Uart_UartSend_NotTask(int Uart_Name, unsigned char *str, int str_lenth) | ||
680 | -{ | ||
681 | - if (Uart_Name == UART_4G) | ||
682 | - { | ||
683 | - printf("向4G设备发送\n"); | ||
684 | - write(Uart_4G_fd, str, str_lenth); | ||
685 | - } | ||
686 | - else if (Uart_Name == UART_DEV_1) | ||
687 | - { | ||
688 | - printf("向串口1号设备发送\n"); | ||
689 | - write(Uart_DEV1_fd, str, str_lenth); | ||
690 | - } | ||
691 | - else if (Uart_Name = UART_DEV_2) | ||
692 | - { | ||
693 | - printf("向串口2号设备发送\n"); | ||
694 | - write(Uart_DEV2_fd, str, str_lenth); | ||
695 | - } | ||
696 | - | ||
697 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
698 | -} | ||
699 | - | ||
700 | typedef struct { | 361 | typedef struct { |
701 | char* str; | 362 | char* str; |
702 | int str_lenth; | 363 | int str_lenth; |
-
请 注册 或 登录 后发表评论