using System.Net; 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, DataOF = 1007, DataGPS = 1008, // Input DataMotor4 = 2001, DataMotor6 = 2002, // State DataQuat = 3001, }; 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 float Pressure; // Давление public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataBar)); } public struct DataOF { public DataHead Head; public float X, Y; // Угловой сдвиг public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataOF)); } public struct DataGPS { public DataHead Head; public double Lat, Lon; // Координаты (градусы) public float Alt; // Высота (метры) public float Speed; // Скорость (м/с) public int UTC; // Время UTC hhmmss public byte Fix; // Тип решения 0-8 (NMEA Fix type) public byte SatVisible; // Количество видимых спутников public byte SatUsed; // Количество используемых спутников public float Hdop, Vdop, Pdop; // Геометрический фактор public float Noise; // Шум (db) public uint Time; // Последнее время изменения данных static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataOF)); } 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)); } public struct DataQuat { public DataHead Head; public float X, Y, Z, W; static public int StrLen = Marshal.SizeOf(typeof(DroneData.DataQuat)); } }