diff --git a/piv.cs b/piv.cs
index 131d4a4..a3b22b3 100644
--- a/piv.cs
+++ b/piv.cs
@@ -1,7 +1,7 @@
using System;
///
-/// Ноавя версия ПИВ 1.22
+/// Ноавя версия ПИВ 1.23
///
namespace PIV
@@ -821,6 +821,10 @@ namespace PIV
}
public static class OES2BVM
{
+ private const UInt16 _len_pack = 32;
+ private static UInt16 _len_data = _len_pack - 8;
+ private static UInt16 _len_crc = _len_pack - 2;
+
private static Byte _num_pack = 1;
private static Byte _dir_pack = 2;
private static Byte _addr_pack = 2;
@@ -938,12 +942,8 @@ namespace PIV
public static float usAZ;
public static float usUM;
public static UInt16 CRC16;
- public static UInt16 CalcCRC()
- {
- return CONST.CRC16(ref Data, 30);
- }
- public static Byte[] Data = new Byte[32];
+ public static Byte[] Data = new Byte[_len_pack];
public static void MakeData()
{
Array.Copy(BitConverter.GetBytes(Start), 0, Data, 0, 1);
@@ -958,8 +958,8 @@ namespace PIV
Array.Copy(BitConverter.GetBytes(usAZ), 0, Data, 22, 4);
Array.Copy(BitConverter.GetBytes(usUM), 0, Data, 26, 4);
- UInt16 _crc16 = CONST.CRC16(ref Data, 30);
- Array.Copy(BitConverter.GetBytes(_crc16), 0, Data, 30, 2);
+ UInt16 _crc16 = CONST.CRC16(ref Data, _len_crc);
+ Array.Copy(BitConverter.GetBytes(_crc16), 0, Data, _len_crc, 2);
}
public static void GetData()
{
@@ -984,7 +984,7 @@ namespace PIV
}
public static class BVM2OES
{
- private const UInt16 _len_pack = 42;
+ private const UInt16 _len_pack = 60;
private static UInt16 _len_data = _len_pack - 8;
private static UInt16 _len_crc = _len_pack - 2;
@@ -1094,21 +1094,27 @@ namespace PIV
}
}
}
- public static float ustAZ;
- public static float ustUM;
- public static UInt16 X;
- public static UInt16 Y;
- public static Byte lx;
- public static Byte ly;
- public static float AZ;
- public static float UM;
- public static Int16 Xrks;
- public static Int16 Yrks;
+ public static float ustAZ; // Установочные поправки по АЗ
+ public static float ustUM; // Установочные поправки по УМ
+ public static UInt16 X; // Координата центра цели по горизонтали в растре
+ public static UInt16 Y; // Координата центра цели по вертикали в растре
+ public static Byte lx; // Размер цели по горизонтали в растре эталонного изображения
+ public static Byte ly; // Размер цели по вертикали в растре эталонного изображения
+ public static float AZ; // Сигнал управления центром визирования ОЭС
+ public static float UM; // Сигнал управления центром визирования ОЭС
+ public static Int16 Xrks; // Скорректированная координата центра цели по горизонтали
+ public static Int16 Yrks; // Скорректированная координата центра цели по вертикали
+ ///
+ /// новый ПИВ 1.23
+ ///
+ public static Int32 Shirota; // Широта БЛА
+ public static Int32 Dolgota; // Долгота БЛА
+ public static Int32 Vysota; // Высота БЛА
+ public static Int16 Kren; // Крен БЛА
+ public static Int16 Tangaj; // Тангаж БЛА
+ public static Int16 Kurs; // Курс БЛА
+
public static UInt16 CRC16;
- public static UInt16 CalcCRC()
- {
- return CONST.CRC16(ref Data, _len_crc);
- }
public static Byte[] Data = new Byte[_len_pack];
public static void MakeData()
@@ -1130,8 +1136,18 @@ namespace PIV
Array.Copy(BitConverter.GetBytes(UM), 0, Data, 32, 4);
Array.Copy(BitConverter.GetBytes(Xrks), 0, Data, 36, 2);
Array.Copy(BitConverter.GetBytes(Yrks), 0, Data, 38, 2);
- UInt16 _crc16 = CONST.CRC16(ref Data, 40);
- Array.Copy(BitConverter.GetBytes(_crc16), 0, Data, 40, 2);
+ ///
+ /// новый ПИВ 1.23
+ ///
+ Array.Copy(BitConverter.GetBytes(Shirota), 0, Data, 40, 4);
+ Array.Copy(BitConverter.GetBytes(Dolgota), 0, Data, 44, 4);
+ Array.Copy(BitConverter.GetBytes(Vysota), 0, Data, 48, 4);
+ Array.Copy(BitConverter.GetBytes(Kren), 0, Data, 52, 2);
+ Array.Copy(BitConverter.GetBytes(Tangaj), 0, Data, 54, 2);
+ Array.Copy(BitConverter.GetBytes(Kurs), 0, Data, 56, 2);
+
+ UInt16 _crc16 = CONST.CRC16(ref Data, _len_crc);
+ Array.Copy(BitConverter.GetBytes(_crc16), 0, Data, _len_crc, 2);
}
public static void GetData()
{
@@ -1152,7 +1168,17 @@ namespace PIV
UM = BitConverter.ToSingle(Data, 32);
Xrks = BitConverter.ToInt16(Data, 36);
Yrks = BitConverter.ToInt16(Data, 38);
- CRC16 = BitConverter.ToUInt16(Data, 40);
+ ///
+ /// новый ПИВ 1.23
+ ///
+ Shirota = BitConverter.ToInt32(Data, 40);
+ Dolgota = BitConverter.ToInt32(Data, 44);
+ Vysota = BitConverter.ToInt32(Data, 48);
+ Kren = BitConverter.ToInt16(Data, 52);
+ Tangaj = BitConverter.ToInt16(Data, 54);
+ Kurs = BitConverter.ToInt16(Data, 56);
+
+ CRC16 = BitConverter.ToUInt16(Data, 58);
}
public static void ClearData()
{