DataHandleHelper.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace DWZB_Agv_Agreement.Agv_Agreement
  7. {
  8. public static class DataHandleHelper
  9. {
  10. public static bool Verify_PackageHeadCRC(byte[] btArr)
  11. {
  12. try
  13. {
  14. byte[] pckHead = new byte[9];
  15. Array.Copy(btArr, pckHead, pckHead.Length);
  16. byte[] pckHeadCRC = new byte[8];
  17. Array.Copy(pckHead, pckHeadCRC, pckHeadCRC.Length);
  18. if (Get_CustomCRC(pckHeadCRC) == pckHead[^1])
  19. {
  20. return true;
  21. }
  22. else
  23. {
  24. return false;
  25. }
  26. }
  27. catch
  28. {
  29. return false;
  30. }
  31. }
  32. public static bool Verify_DataMsgCRC(byte[] btArr)
  33. {
  34. try
  35. {
  36. byte[] pckHead = new byte[9];
  37. Array.Copy(btArr, pckHead, pckHead.Length);
  38. byte[] dataLenBt = new byte[4];
  39. Array.Copy(btArr, 2, dataLenBt, 0, dataLenBt.Length);
  40. Array.Reverse(dataLenBt);
  41. int dataLen = BitConverter.ToInt32(dataLenBt, 0);
  42. byte[] dataBtArr = new byte[dataLen];
  43. Array.Copy(btArr, 9, dataBtArr, 0, dataLen);
  44. if (Get_CustomCRC(dataBtArr) == pckHead[^2])
  45. {
  46. return true;
  47. }
  48. else
  49. {
  50. return false;
  51. }
  52. }
  53. catch
  54. {
  55. return false;
  56. }
  57. }
  58. public static byte Get_CustomCRC(byte[] dataBtArr)
  59. {
  60. int data_Xor = 0;
  61. for (int i = 0; i < dataBtArr.Length; i++)
  62. {
  63. data_Xor ^= dataBtArr[i];
  64. }
  65. return Convert.ToByte(data_Xor);
  66. }
  67. public static byte[] ReverseBtyArr(byte[] btArr)
  68. {
  69. Array.Reverse(btArr);
  70. return btArr;
  71. }
  72. }
  73. }