using System.Runtime.InteropServices; namespace DroneData { public enum DataMode : ushort { None = 0, Response = 1, Request = 2 }; public enum DataType : ushort { None = 0, Head = 1, // Output DataAcc = 1001, DataGyr = 1002, DataMag = 1003, DataRange = 1004, DataLocal = 1005, DataBar = 1006, // Input DataMotor4 = 2001, DataMotor6 = 2002 }; public struct DataHead { public int Size; public DataMode Mode; public DataType Type; public uint Time; // Общее время static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataHead)); } public struct XYZ { public float X, Y, Z; } public struct DataAcc { public DataHead Head; public XYZ Acc; public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataAcc)); } public struct DataGyr { public DataHead Head; public XYZ Gyr; public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataGyr)); } public struct DataMag { public DataHead Head; public XYZ Mag; public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMag)); } public struct DataRange { public DataHead Head; public float LiDAR; // Датчик посадки public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataRange)); } public struct DataLocal { public DataHead Head; public XYZ Local; // Локальные координаты public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataLocal)); } public struct DataBar { public DataHead Head; public int Pressure; // Локальные координаты public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataBar)); } public struct DataMotor4 { public DataHead Head; public float UL, UR, DL, DR; static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMotor4)); } public struct DataMotor6 { public DataHead Head; public float UL, UR, LL, RR, DL, DR; static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataMotor6)); } }