Data_Handler.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace RF_TRIO_PLL_ZIG
  7. {
  8. class Data_Handler
  9. {
  10. //FileDownload fileDownload;
  11. Update_Serial fileDownload;
  12. const byte Terminal_Controller_Update_Ack = 0x11;
  13. const byte Terminal_Controller_Update_Nak = 0x22;
  14. const byte Terminal_Controller_FirmwareUpdateLen = 250;
  15. const byte Terminal_Reset = 0x0A;
  16. const byte Terminal_BootStart = 0x0B;
  17. private Boolean HeaderCheck(byte[] data)
  18. {
  19. Boolean ret = false;
  20. if(data[0] == 0xbe)
  21. {
  22. ret = true;
  23. }
  24. return ret;
  25. }
  26. private byte CrcCheck(byte[] data)
  27. {
  28. byte ret = 0;
  29. Crc16 crc = new Crc16();
  30. byte length,crcindex;
  31. try
  32. {
  33. length = data[2];
  34. }
  35. catch
  36. {
  37. return ret;
  38. }
  39. crcindex = (byte)(length + 1);
  40. ret = crc.STH30_CheckCrc(data,length,data[crcindex]);
  41. return ret;
  42. }
  43. public void Recv_dataCheck(object fileDownload, byte[] data)
  44. {
  45. Boolean Header_Check;
  46. byte Crc_Check, seq;
  47. try
  48. {
  49. seq = data[1];
  50. }
  51. catch {
  52. return;
  53. }
  54. if (fileDownload != null)
  55. {
  56. this.fileDownload = (Update_Serial)fileDownload;
  57. }
  58. else
  59. {
  60. this.fileDownload = new Update_Serial();
  61. }
  62. if (this.fileDownload.Update_ready == true)
  63. {
  64. Header_Check = HeaderCheck(data);
  65. if (Header_Check == false)
  66. {
  67. return;
  68. }
  69. Crc_Check = CrcCheck(data);
  70. if(Crc_Check == 0)
  71. {
  72. return;
  73. }
  74. switch (seq)
  75. {
  76. case Terminal_Reset:
  77. case Terminal_BootStart:
  78. case Terminal_Controller_Update_Ack:
  79. case Terminal_Controller_Update_Nak:
  80. //int DataAckcnt = data[(int)Bluepro_t.bluecell_type + 1];
  81. //this.fileDownload.UpdateFileSend(data, DataAckcnt);
  82. this.fileDownload.Termianl__Operate(data);
  83. break;
  84. case 3:
  85. break;
  86. default:
  87. break;
  88. }
  89. }
  90. }
  91. }
  92. }