ce58592cde637c6db033951303d7b4e4353b562d.svn-base 4.1 KB

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