Data_Handler.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Basic_Terminal
  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. length = data[2];
  32. crcindex = (byte)(length + 1);
  33. ret = crc.STH30_CheckCrc(data,length,data[crcindex]);
  34. return ret;
  35. }
  36. public void Recv_dataCheck(object fileDownload, byte[] data)
  37. {
  38. Boolean Header_Check;
  39. byte Crc_Check,seq = data[1];
  40. if (fileDownload != null)
  41. {
  42. this.fileDownload = (Update_Serial)fileDownload;
  43. }
  44. else
  45. {
  46. this.fileDownload = new Update_Serial();
  47. }
  48. if (this.fileDownload.Update_ready == true)
  49. {
  50. Header_Check = HeaderCheck(data);
  51. if (Header_Check == false)
  52. {
  53. return;
  54. }
  55. Crc_Check = CrcCheck(data);
  56. if(Crc_Check == 0)
  57. {
  58. return;
  59. }
  60. switch (seq)
  61. {
  62. case Terminal_Reset:
  63. case Terminal_BootStart:
  64. case Terminal_Controller_Update_Ack:
  65. case Terminal_Controller_Update_Nak:
  66. //int DataAckcnt = data[(int)Bluepro_t.bluecell_type + 1];
  67. //this.fileDownload.UpdateFileSend(data, DataAckcnt);
  68. this.fileDownload.Termianl__Operate(data);
  69. break;
  70. case 3:
  71. break;
  72. default:
  73. break;
  74. }
  75. }
  76. }
  77. }
  78. }