| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- C51 COMPILER V9.53.0.0 PACKDATA 09/30/2018 11:45:28 PAGE 1
- C51 COMPILER V9.53.0.0, COMPILATION OF MODULE PACKDATA
- OBJECT MODULE PLACED IN .\Output\PackData.obj
- COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\..\Code\User\Common\PackData.c LARGE OPTIMIZE(0,SPEED) BROWSE INCDIR(
- -../../Code/Include;../../Code/User;../../Code/User/Common;../../Code/User/Driver) DEFINE(FOSC_160000=1) DEBUG OBJECTEXTE
- -ND PRINT(.\Output\LST\PackData.lst) TABS(2) OBJECT(.\Output\PackData.obj)
- line level source
- 1 /**
- 2 * @File: PackData.c
- 3 * @Author: Kinve JQ
- 4 * @Version: V0.1
- 5 * @Date: 2018.09.29
- 6 * @Brief: 封包与校验
- 7 * @Modify:
- 8 2018.09.29.Kinve:1.创建文件
- 9 **/
- 10
- 11 #include "PackData.h"
- 12
- 13 u8 CrcData ( u8 *Data, u8 Len )
- 14 {
- 15 1 u8 i, crc = 0;
- 16 1
- 17 1 for ( i = 0; i < Len; i++ )
- 18 1 {
- 19 2 crc ^= Data[i];
- 20 2 }
- 21 1
- 22 1 return crc;
- 23 1 }
- 24
- 25 #define DATA_LEN 4
- 26 //AA 长度1[类型 .....] 校验码 BB
- 27 u8 CheckData ( u8 *Data, u8 Len, pDataBuff *Out )
- 28 {
- 29 1 //u8 tail_pos = 0; //尾位
- 30 1 //u8 head_pos = 0; //0xF0 头位置
- 31 1 u8 i, size;
- 32 1
- 33 1 for ( i = 0; i < Len - 1; i++ )
- 34 1 {
- 35 2 if ( Data[i + 0] == 0xAA ) //检查头尾"@" .. "#"
- 36 2 {
- 37 3 //head_pos = i;
- 38 3 if ( Len - i >= DATA_LEN ) //剩余数据>=5
- 39 3 {
- 40 4 size = Data[i + 1];
- 41 4
- 42 4 if ( Data[i + size + 3] == 0xBB )
- 43 4 {
- 44 5 Out->Data = &Data[i];
- 45 5 Out->Len = DATA_LEN + size;
- 46 5
- 47 5 if ( CrcData ( &(Out->Data[2]), Out->Len-DATA_LEN ) == Data[i + size + 2] ) //校验码
- 48 5 {
- 49 6 return 1;
- 50 6 }
- 51 5 }
- 52 4 }
- 53 3 }
- C51 COMPILER V9.53.0.0 PACKDATA 09/30/2018 11:45:28 PAGE 2
- 54 2 }
- 55 1
- 56 1 return 0;
- 57 1 }
- 58
- 59 static u8 PackBuff[50];
- 60 u8 PackData ( u8 *Data, u8 Len, u8 *Out )
- 61 {
- 62 1 u8 i;
- 63 1
- 64 1 if ( Len < sizeof ( PackBuff ) - DATA_LEN )
- 65 1 {
- 66 2 PackBuff[0] = 0xAA;
- 67 2 PackBuff[1] = Len;
- 68 2
- 69 2 for ( i = 0; i < Len; i++ )
- 70 2 {
- 71 3 PackBuff[i + 2] = Data[i];
- 72 3 }
- 73 2
- 74 2 PackBuff[i + 2] = CrcData ( Data, Len );
- 75 2 PackBuff[i + 3] = 0xBB;
- 76 2
- 77 2 //拷贝到Out
- 78 2 for ( i = 0; i < Len + DATA_LEN; i++ )
- 79 2 {
- 80 3 *(Out+i) = PackBuff[i];
- 81 3 }
- 82 2
- 83 2 return Len + DATA_LEN;
- 84 2 }
- 85 1 return 0;
- 86 1 }
- 87
- 88 /********************* (C) COPYRIGHT Kinve JQ *******END OF FILE ********/
- 89
- MODULE INFORMATION: STATIC OVERLAYABLE
- CODE SIZE = 774 ----
- CONSTANT SIZE = ---- ----
- XDATA SIZE = 73 ----
- PDATA SIZE = ---- ----
- DATA SIZE = ---- ----
- IDATA SIZE = ---- ----
- BIT SIZE = ---- ----
- END OF MODULE INFORMATION.
- C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|