MISB 0903 Converter Library  Version 2.0.7
Sample Code - MISB 0903 Converter Demo Application (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.IO;
using System.Diagnostics;
namespace STD0903WrDemoApp
{
static class Constants
{
public const uint NumberOfTargets = 1;
}
class Program
{
static void Main(string[] args)
{
try
{
// Create Converter
STD0903ConverterWr conv = new STD0903ConverterWr();
// Set Tag to 74 and do not generate a checksum
conv.ConfigureEncoder(74, false);
#region Sample 1. Read data from file and decode it to (fill VMTI_PacketWr)
string path = @"C:\tmp\VmtiTest.bin";
if (File.Exists(path))
{
// Read data
byte[] buf = System.IO.File.ReadAllBytes(path);
// Decode packet
var pckt = conv.DecodeVmtiPacket(buf);
// Get Json
var jsonPckt = conv.VmtiPacketToJson(pckt, true);
// Print
PrintVmtiString("Decoded file", conv, pckt);
}
#endregion
#region Sample 2. Fill VMTI_Packet parameters and encode it ( get a data buffer )
//Create VMTI Packet
VMTI_PacketWr pcktEnc = new VMTI_PacketWr();
// Fill Local Data Set
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.UNIX_Time_Stamp, DateTime.Now);
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.System_Name, "VMTI Test");
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.Source_Sensor, "EO Nose");
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.LDS_Version_Number, (ushort)3);
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.TotalNumberOfTargets, (uint)Constants.NumberOfTargets);
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.NumberOfReportedTargets, (uint)Constants.NumberOfTargets);
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.VideoFrameNumber, (uint)44);
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.FrameWidth, (uint)720);
pcktEnc.AddLocalDataItem(VTargetLocalDataTagWr.FrameHeight, (uint)480);
// Create a Target Packets
for (uint i = 0; i < Constants.NumberOfTargets; i++)
{
VMTI_TargetPackItemWr tTargetPack = new VMTI_TargetPackItemWr((uint)(27 + i));
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetCentroidPixel, (UInt64)74985);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.BoundingBoxTopLeftPixel, (UInt64)71380);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.BoundingBoxBottomRightPixel, (UInt64)78590);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetPriority, (byte)2);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetConfidenceLevel, (byte)50);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.NewDetectionFlag, (ushort)i);
var color = Color.Red.ToArgb() & 0x00FFFFFF;
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetColor, (uint)color);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetIntensity, (uint)i + 100);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetLocationLatOffset, (float)0.01);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetLocationLonOffset, (float)0.01);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.TargetHeight, (float)(120.0 + i * 10));
tTargetPack.AddTargetPackItem(VTargetPackTagWr.BoundingBoxTopLeftLatOffset, (float)0.04);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.BoundingBoxTopLeftLonOffset, (float)0.04);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.BoundingBoxBottomRightLatOffset, (float)0.04);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.BoundingBoxBottomRightLonOffset, (float)0.04);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.Target_Location, new LocationTypeWr(40.83715820003851, -104.97543811798096, 0));
// Add tracker
VTrackerLDSWr tTracker = new VTrackerLDSWr(i);
// Create and add locus
List<LocationTypeWr> locusList = new List<LocationTypeWr>();
locusList.Add(new LocationTypeWr(40.83715820003851, -104.97543811798096, 0));
locusList.Add(new LocationTypeWr(40.837645225907835, -104.97410774230957, 0.5));
locusList.Add(new LocationTypeWr(40.838262120205684, -104.97307777404785, 100));
locusList.Add(new LocationTypeWr(40.839171217127976, -104.97307777404785, 100));
locusList.Add(new LocationTypeWr(40.84014523570922, -104.97406482696533, 100));
locusList.Add(new LocationTypeWr(40.840534839134165, -104.97445106506348, 100));
tTracker.AddLDS(VTrackerLDSTagWr.NumberOfPoints, (ushort)locusList.Count);
tTracker.AddLDS(VTrackerLDSTagWr.Locus, locusList);
// Create and add location type
VATypeWr velocity = new VATypeWr(2.0, 4.0, 6.0);
tTracker.AddLDS(VTrackerLDSTagWr.Velocity, velocity);
// Create and add acceleration type
VATypeWr acceleration = new VATypeWr(0.2, 0.4, 0.6);
tTracker.AddLDS(VTrackerLDSTagWr.Acceleration, acceleration);
tTargetPack.AddTargetPackItem(VTargetPackTagWr.VTracker_LDS, tTracker);
// Add Target Pack to TargetPackSeries container
pcktEnc.AddToTargetPackSeries(tTargetPack);
}
// Get Json
var json = conv.VmtiPacketToJson(pcktEnc, false);
// Print
PrintVmtiString("Created packet", conv, pcktEnc);
// Encode packet into data buffer.
var encDataBuff = conv.EncodeVmtiPacket(pcktEnc);
// For debugging purposes. Save the raw buffer to disk
//System.IO.File.WriteAllBytes(@"C:\tmp\VmtiTest.bin", encDataBuff);
// Decode packet
var pcktDec = conv.DecodeVmtiPacket(encDataBuff);
// Get Json
json = conv.VmtiPacketToJson(pcktDec, true);
// Print
PrintVmtiString("Decoded packet", conv, pcktDec);
#endregion
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
}
}
static void PrintVmtiString(string title, STD0903ConverterWr conv, VMTI_PacketWr pckt)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(title);
Console.ResetColor();
StringBuilder sb = new StringBuilder();
// Add Local data items
foreach (var ldItem in pckt.LocalDataItems)
{
sb.Append(String.Format("{0,-32} {1, -32}", conv.TargetLocalDataTagToString(ldItem.Key), conv.TargetLocalDataToHRString(ldItem.Key, ldItem.Value)));
sb.Append(Environment.NewLine);
}
// Add Target Series data items
foreach (var tpItemSeria in pckt.TargetPackSeries)
{
sb.Append(string.Format("--------Target Pack ( {0} )--------", tpItemSeria.TargetID));
sb.Append(Environment.NewLine);
foreach (var tpSeriesItem in tpItemSeria.TargetPackItems)
{
if (tpSeriesItem.Key < VTargetPackTagWr.Target_Location)
{
sb.Append(String.Format("{0,-38} {1, -38}", conv.TargetPackTagToString(tpSeriesItem.Key), conv.TargetPackValueToHRString(tpSeriesItem.Key, tpSeriesItem.Value)));
sb.Append(Environment.NewLine);
}
else
{
switch (tpSeriesItem.Key)
{
case VTargetPackTagWr.Target_Location:
sb.Append(String.Format("{0}", "Target Location:\n"));
var loc = (LocationTypeWr)tpSeriesItem.Value;
sb.Append(String.Format("\t{0}, \t {1}, \t {2}\n", Math.Round(loc.Latitude, 8).ToString(), Math.Round(loc.Longitude, 8).ToString(), Math.Round(loc.Height, 1).ToString()));
break;
case VTargetPackTagWr.VMask_LDS:
sb.Append(String.Format("{0,-38} {1, -38}", conv.TargetPackTagToString(tpSeriesItem.Key), "VMask_LDS"));
break;
case VTargetPackTagWr.VObject:
sb.Append(String.Format("{0,-38} {1, -38}", conv.TargetPackTagToString(tpSeriesItem.Key), "VObject"));
break;
case VTargetPackTagWr.VFeature_LDS:
sb.Append(String.Format("{0,-38} {1, -38}", conv.TargetPackTagToString(tpSeriesItem.Key), "VFeature_LDS"));
break;
case VTargetPackTagWr.VTracker_LDS:
var vtlds = tpSeriesItem.Value as VTrackerLDSWr;
sb.Append(String.Format("{0,-38} {1, -38}", conv.TargetPackTagToString(tpSeriesItem.Key), "TargetID - " + vtlds.TargetID + " (" + vtlds.LDSItems.Count + " items)"));
sb.Append(Environment.NewLine);
foreach (var vTrackerItem in vtlds.LDSItems)
{
if (vTrackerItem.Key == VTrackerLDSTagWr.NumberOfPoints)
sb.Append(String.Format("{0,-36} {1, -36}\n", conv.TrackerLocalDataTagToString(vTrackerItem.Key), vTrackerItem.Value.ToString()));
else
if (vTrackerItem.Key == VTrackerLDSTagWr.Locus)
{
sb.Append(String.Format(" {0}", "Locus:\n"));
var locus = (List<LocationTypeWr>)vTrackerItem.Value;
locus.ForEach(delegate(LocationTypeWr locItem)
{
sb.Append(String.Format("\t{0}, \t {1}, \t {2}\n", Math.Round(locItem.Latitude, 8).ToString(), Math.Round(locItem.Longitude, 8).ToString(), Math.Round(locItem.Height, 1).ToString()));
});
}
else
if (vTrackerItem.Key == VTrackerLDSTagWr.Velocity || vTrackerItem.Key == VTrackerLDSTagWr.Acceleration)
{
sb.Append(String.Format(" {0}\n", vTrackerItem.Key.ToString()));
var va = (VATypeWr)vTrackerItem.Value;
sb.Append(String.Format("\tX: {0}, \tY: {1}, \tZ: {2}\n", Math.Round(va.X_Component, 8).ToString(), Math.Round(va.Y_Component, 8).ToString(), Math.Round(va.Z_Component, 8).ToString()));
}
else
sb.Append(String.Format(" {0,-36}\n", conv.TrackerLocalDataTagToString(vTrackerItem.Key)));
}
break;
case VTargetPackTagWr.VChip_LDS:
sb.Append(String.Format(" {0,-38} {1, -36}", conv.TargetPackTagToString(tpSeriesItem.Key), "VChip_LDS"));
break;
}
sb.Append(Environment.NewLine);
}
}
}
Console.WriteLine(sb.ToString());
}
}
}
Untitled 1




 Copyright 2018,    IMPLEOTV SYSTEMS LTD