Package_Data_Msg .cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace SIASUN.Autopilot.Device
  7. {
  8. class Package_Data_Msg<T>
  9. {
  10. public Package_Data_Msg()
  11. {
  12. }
  13. /// <summary>
  14. /// 实际数据部分
  15. /// </summary>
  16. [Data(DataType = "LIST", Description = "", Sequence = 2)]
  17. public List<T> Message { get; set; }
  18. public byte[] Package()
  19. {
  20. System.IO.MemoryStream mspackage = new System.IO.MemoryStream();
  21. System.IO.MemoryStream msbody = new System.IO.MemoryStream();
  22. System.IO.MemoryStream msmessage = new System.IO.MemoryStream();
  23. byte[] bytedata;
  24. foreach (object o in this.Message as System.Collections.IEnumerable)
  25. {
  26. bytedata = MessageCoder.Serialize(o);
  27. msmessage.Write(bytedata, 0, bytedata.Length);
  28. }
  29. byte[] bytemessage = msmessage.ToArray();
  30. mspackage.Write(bytemessage, 0, bytemessage.Length);
  31. return mspackage.ToArray();
  32. }
  33. public object UnPackage(string msgId, byte[] data)
  34. {
  35. //#region 小端转成大端
  36. //byte[] bytefield = new byte[data.Length];
  37. //for (int i = data.Length - 1; i >= 0; i--)
  38. //{
  39. // bytefield[data.Length - 1 - i] = data[i];
  40. //}
  41. //#endregion
  42. this.Message = new List<T>();
  43. object msg = MessageId.GetMessageByType(msgId);
  44. this.Message.Add((T)MessageCoder.DeSerialize(msg, data));
  45. return this;
  46. }
  47. }
  48. }