正在显示
13 个修改的文件
包含
301 行增加
和
392 行删除
| @@ -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 | - { | ||
| 129 | - if (HaveReadLen >= (DataLen - 5)) | ||
| 130 | - { | ||
| 131 | - //JZSDK_LOG_INFO("没有找到帧头"); | ||
| 132 | - } | 147 | + { |
| 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 | - | ||
| 174 | - // 如果没有数据残留了 | 197 | + |
| 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 | ||
| 183 | - { | ||
| 184 | - | 206 | + // 到达这里时 |
| 207 | + // 完整的帧 已处理 | ||
| 208 | + // 有帧头且长度为4的帧则已返回 | ||
| 209 | + // 没有剩余数据则已返回 | ||
| 210 | + | ||
| 211 | + // 剩下的是 | ||
| 212 | + // 1、剩余长度为所有0~3的帧 | ||
| 213 | + // 2、切帧的帧(即带帧头 长度大于4 小于帧长度的帧) | ||
| 214 | + // 3、以及无实际意义数据 | ||
| 215 | + | ||
| 216 | + // 如果有帧头与长度位判定, 说明是切帧的帧,判断长度是否合理,如果合理返回帧长度给接收线程 | ||
| 217 | + if (FrameFlag != 0) //bu | ||
| 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 | + } | ||
| 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; | ||
| 249 | + } | ||
| 250 | + | ||
| 251 | + printf("检查最后3 4位%d\n",(DataLen - HaveDealLen)); | ||
| 252 | + | ||
| 253 | + ResidualLength = (DataLen - HaveDealLen); | ||
| 254 | + return ResidualLength; | ||
| 255 | + } | ||
| 185 | } | 256 | } |
| 186 | 257 | ||
| 187 | - return ResidualLength; | ||
| 188 | -} | 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 | + } | ||
| 189 | 270 | ||
| 271 | + printf("检查最后两位%d\n",(DataLen - HaveDealLen)); | ||
| 190 | 272 | ||
| 191 | -static T_JZsdkReturnCode | ||
| 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 | + } | ||
| 290 | + | ||
| 291 | + printf("检查最后一位%d\n",(DataLen - HaveDealLen)); | ||
| 292 | + | ||
| 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; |
-
请 注册 或 登录 后发表评论