AirScout/AirScoutPlaneServer/JSONWriter.cs

97 wiersze
4.4 KiB
C#

using System;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Globalization;
using System.Reflection;
using AirScout.Database.Core;
using AirScout.Database.Aircrafts;
using ScoutBase.Core;
namespace AirScoutPlaneServer
{
public partial class MainDlg : Form
{
private void bw_JSONWriter_DoWork(object sender, DoWorkEventArgs e)
{
while (!bw_JSONWriter.CancellationPending)
{
Thread.Sleep(60000);
DataTable dt = new DataTable();
// DataTable dt = FlightRadar.GetPlanePositions((int)Properties.Settings.Default.Planes_Lifetime);
// get planes each minute
// write json file
try
{
using (StreamWriter sw = new StreamWriter(TmpDirectory + Path.DirectorySeparatorChar + "planes.json"))
{
int major = Assembly.GetExecutingAssembly().GetName().Version.Major;
sw.Write("{\"full_count\":" + dt.Rows.Count.ToString() + ",\"version\":" + major.ToString());
for (int i = 0; i < dt.Rows.Count; i++)
{
string index = "\"" + i.ToString("x8") + "\"";
string hex = "\"" + dt.Rows[i]["Hex"].ToString() + "\"";
string lat = ((double)dt.Rows[i]["Lat"]).ToString("F4", CultureInfo.InvariantCulture);
string lon = ((double)dt.Rows[i]["Lon"]).ToString("F4", CultureInfo.InvariantCulture);
string track = dt.Rows[i]["Track"].ToString();
string alt = UnitConverter.m_ft((double)dt.Rows[i]["Alt"]).ToString("F0");
string speed = UnitConverter.kmh_kts((double)dt.Rows[i]["Speed"]).ToString("F0");
string squawk = "\"" + dt.Rows[i]["Squawk"].ToString() + "\"";
string radar = "\"" + dt.Rows[i]["Radar"].ToString() + "\"";
AircraftDesignator d = AircraftDatabase_old.AircraftFindByHex(dt.Rows[i]["Hex"].ToString());
string type;
if (d != null)
type = "\"" + d.TypeCode + "\"";
else
type = "\"" + "\"";
string reg = "\"" + dt.Rows[i]["Reg"].ToString() + "\"";
DateTime rtime = System.Convert.ToDateTime(dt.Rows[i]["Time"].ToString());
rtime = rtime.ToUniversalTime();
DateTime sTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
string time = ((long)(rtime - sTime).TotalSeconds).ToString();
string dep = "\"\"";
string dest = "\"\"";
string flight = "\"\"";
string dummy0 = "\"\"";
string dummy1 = "0";
string dummy2 = "0";
string call = "\"" + dt.Rows[i]["Call"].ToString() + "\"";
string dummy3 = "0";
sw.WriteLine("," + index + ":[" +
hex + "," +
lat + "," +
lon + "," +
track + "," +
alt + "," +
speed + "," +
squawk + "," +
radar + "," +
type + "," +
reg + "," +
time + "," +
dep + "," +
dest + "," +
flight + "," +
dummy1 + "," +
dummy2 + "," +
call + "," +
dummy3 +
"]");
}
sw.WriteLine("}");
}
}
catch
{
// do nothing
}
}
}
}
}