Data_Handler.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. Serial serial;
  44. Main_Form main_Form; //= new Main_Form();
  45. public void Recv_dataCheck(object serial,object main_form, object fileDownload, byte[] data)
  46. {
  47. Boolean Header_Check;
  48. Bluecell_BootProtocol bluecell_BootProtocol = new Bluecell_BootProtocol();
  49. this.serial = (Serial)serial;
  50. this.main_Form = (Main_Form)main_form;
  51. byte Crc_Check, seq;
  52. try
  53. {
  54. seq = data[1];
  55. }
  56. catch {
  57. return;
  58. }
  59. if (fileDownload != null)
  60. {
  61. this.fileDownload = (Update_Serial)fileDownload;
  62. }
  63. else
  64. {
  65. this.fileDownload = new Update_Serial();
  66. }
  67. /* * * * * * * * * * * * * *파일 다운로드 부분* * * * * * * * * * * * * */
  68. if (this.fileDownload.Update_ready == true)
  69. {
  70. Header_Check = HeaderCheck(data);
  71. if (Header_Check == false)
  72. {
  73. return;
  74. }
  75. Crc_Check = CrcCheck(data);
  76. if(Crc_Check == 0)
  77. {
  78. return;
  79. }
  80. switch (seq)
  81. {
  82. case Terminal_Reset:
  83. case Terminal_BootStart:
  84. case Terminal_Controller_Update_Ack:
  85. case Terminal_Controller_Update_Nak:
  86. //int DataAckcnt = data[(int)Bluepro_t.bluecell_type + 1];
  87. //this.fileDownload.UpdateFileSend(data, DataAckcnt);
  88. this.fileDownload.Termianl__Operate(data);
  89. break;
  90. case 3:
  91. break;
  92. default:
  93. break;
  94. }
  95. }
  96. else/* * * * * * * * * * * * * *API RECV 부분 * * * * * * * * * * * * * */
  97. {
  98. bluecell_BootProtocol.Bluecell_RF_Status_Get(this.serial,this.main_Form, data);
  99. }
  100. }
  101. }
  102. }