Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2521 → Rev 2522

/MKLiveView/v1.0/Source/MKLiveView/Waypoints.cs
0,0 → 1,137
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
 
namespace MKLiveView
{
static class Waypoints
{
 
public enum pointType
{
INVALID= 255,
WP = 0,
POI = 1,
FS = 2,
LAND = 3
}
 
public enum status
{
INVALID= 255,
NEW = 0,
DONE = 1
}
 
public static string CAMAngle(int iVal)
{
if (iVal == 255 | iVal < 0)
return "Auto";
//if (iVal < 0)
// return "WP " + (Math.Abs(iVal)).ToString();
if (iVal == 0)
return "- - -";
 
return iVal.ToString("0 °");
}
 
public static string WPSpeed(int iVal)
{
if (iVal == 0)
return "MAX";
if (iVal > 0 && iVal < 248)
return ((double)iVal * 0.1).ToString("0.0 m/s");
if (iVal > 247)
return "Poti" + (256 - iVal).ToString();
 
return iVal.ToString();
}
 
public static string Heading(int iVal)
{
if (iVal == 0)
return "- - -";
if (iVal > 0 && iVal < 360)
return iVal.ToString("0 °");
if (iVal < 0)
return "WP " + (Math.Abs(iVal)).ToString();
 
return iVal.ToString();
}
public static DataRow toDataRow(byte[]data, DataRow dr)
{
double longitude = 0, latitude = 0, altitude = 0;
int pstatus = 0, heading = 0, tolRadius = 0, holdTime = 0, eventFlag = 0, index = 0, type = 0, WPeventChanVal = 0, altitudeRate = 0, speed = 0, camAngle = 0, autoTrigger=0;
string name = "";
 
if (data.Length >= 28)
{
int i_32, iVal;
 
i_32 = data[5];
iVal = i_32 << 24;
i_32 = data[4];
iVal += i_32 << 16;
i_32 = data[3];
iVal += i_32 << 8;
iVal += data[2];
longitude = (double)iVal / Math.Pow(10, 7);
 
i_32 = data[9];
iVal = i_32 << 24;
i_32 = data[8];
iVal += i_32 << 16;
i_32 = data[7];
iVal += i_32 << 8;
iVal += data[6];
latitude = (double)iVal / Math.Pow(10, 7);
 
 
i_32 = data[13];
iVal = (i_32 << 24);
i_32 = data[12];
iVal += i_32 << 16;
i_32 = data[11];
iVal += i_32 << 8;
iVal += data[10];
altitude = (double)iVal/10;
 
pstatus = data[14];
 
i_32 = (int)(sbyte)data[16];
iVal = i_32 << 8;
iVal += data[15];
heading = iVal;
 
tolRadius = data[17];
holdTime = data[18];
eventFlag = data[19];
index = data[1];
// index = data[20];
type = data[21];
WPeventChanVal = data[22];
altitudeRate = data[23];
speed = data[24];
camAngle = (int)(sbyte)data[25];
 
name = new string(ASCIIEncoding.ASCII.GetChars(data, 26, 4)).Trim('\0');
 
autoTrigger = data[30];
dr.ItemArray = new object[] { data[1], type, name, latitude, longitude, altitude, heading, speed, altitudeRate, tolRadius, holdTime, autoTrigger, camAngle, eventFlag, WPeventChanVal, pstatus};
 
// dr.ItemArray = new object[] { data[1], ((pointType)type).ToString(), name, longitude, latitude, altitude, heading, WPSpeed(speed), altitudeRate, tolRadius, holdTime, autoTrigger, CAMAngle(camAngle), eventFlag, WPeventChanVal, ((status)pstatus).ToString() };
// dr.ItemArray = new object[] {data[1],((pointType)type).ToString(),name,longitude,latitude,altitude,heading,speed,altitudeRate,tolRadius,holdTime,autoTrigger, CAMAngle(camAngle),((status)pstatus).ToString() };
return dr;
 
}
return null;
 
 
}
 
 
 
}
}