2012-05-16 09:21:27 -03:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using ZedGraph;
|
|
|
|
|
using ArdupilotMega;
|
|
|
|
|
using System.Text.RegularExpressions;
|
2012-05-20 02:54:35 -03:00
|
|
|
|
using System.IO;
|
2012-05-16 09:21:27 -03:00
|
|
|
|
|
|
|
|
|
namespace _3DRRadio
|
|
|
|
|
{
|
|
|
|
|
public partial class Rssi : UserControl
|
|
|
|
|
{
|
|
|
|
|
_3DRradio inter = new _3DRradio();
|
|
|
|
|
int tickStart = 0;
|
|
|
|
|
|
|
|
|
|
RollingPointPairList plotdatarssil = new RollingPointPairList(1200);
|
|
|
|
|
RollingPointPairList plotdatarssir = new RollingPointPairList(1200);
|
|
|
|
|
RollingPointPairList plotdatanoicel = new RollingPointPairList(1200);
|
|
|
|
|
RollingPointPairList plotdatanoicer = new RollingPointPairList(1200);
|
|
|
|
|
|
|
|
|
|
public Rssi()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
2012-05-20 02:54:35 -03:00
|
|
|
|
zedGraphControl1.GraphPane.AddCurve("RSSI Local",plotdatarssil,Color.Red,SymbolType.None);
|
|
|
|
|
zedGraphControl1.GraphPane.AddCurve("RSSI Remote", plotdatarssir, Color.Green, SymbolType.None);
|
|
|
|
|
zedGraphControl1.GraphPane.AddCurve("Noise Local", plotdatanoicel, Color.Blue, SymbolType.None);
|
|
|
|
|
zedGraphControl1.GraphPane.AddCurve("Noise Remote", plotdatanoicer, Color.Orange, SymbolType.None);
|
|
|
|
|
|
|
|
|
|
zedGraphControl1.GraphPane.Title.Text = "RSSI";
|
|
|
|
|
|
|
|
|
|
if (Terminal.sw == null)
|
|
|
|
|
Terminal.sw = new StreamWriter("Terminal-" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".txt");
|
2012-05-16 09:21:27 -03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BUT_connect_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
CustomMessageBox.Show("Ensure you disconnect properly, to leave the radio in a good state");
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
MainV2.comPort.BaseStream.Open();
|
|
|
|
|
|
|
|
|
|
inter.doConnect(MainV2.comPort.BaseStream);
|
|
|
|
|
|
|
|
|
|
inter.doCommand(MainV2.comPort.BaseStream, "AT&T=RSSI");
|
|
|
|
|
|
|
|
|
|
inter.doCommand(MainV2.comPort.BaseStream, "ATO");
|
|
|
|
|
|
|
|
|
|
tickStart = Environment.TickCount;
|
|
|
|
|
|
|
|
|
|
timer1.Start();
|
|
|
|
|
|
|
|
|
|
BUT_disconnect.Enabled = true;
|
|
|
|
|
BUT_connect.Enabled = false;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch { CustomMessageBox.Show("Bad Port Setting"); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BUT_disconnect_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
timer1.Stop();
|
|
|
|
|
|
|
|
|
|
inter.doConnect(MainV2.comPort.BaseStream);
|
|
|
|
|
|
|
|
|
|
inter.doCommand(MainV2.comPort.BaseStream, "AT&T");
|
|
|
|
|
|
|
|
|
|
inter.doCommand(MainV2.comPort.BaseStream, "ATO");
|
|
|
|
|
|
|
|
|
|
MainV2.comPort.BaseStream.Close();
|
|
|
|
|
|
|
|
|
|
BUT_disconnect.Enabled = false;
|
|
|
|
|
BUT_connect.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (MainV2.comPort.BaseStream != null && MainV2.comPort.BaseStream.IsOpen)
|
|
|
|
|
{
|
|
|
|
|
MainV2.comPort.BaseStream.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
|
|
|
|
|
|
|
|
|
if (MainV2.comPort.BaseStream.BytesToRead < 50)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
string line = MainV2.comPort.BaseStream.ReadLine();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
L/R RSSI: 12/0 L/R noise: 17/0 pkts: 0 txe=0 rxe=0 stx=0 srx=0 ecc=0/0 temp=61 dco=0
|
|
|
|
|
L/R RSSI: 12/0 L/R noise: 16/0 pkts: 0 txe=0 rxe=0 stx=0 srx=0 ecc=0/0 temp=61 dco=0
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
Regex rssi = new Regex(@"RSSI: ([0-9]+)/([0-9]+)\s+L/R noise: ([0-9]+)/([0-9]+)");
|
|
|
|
|
|
|
|
|
|
Match match = rssi.Match(line);
|
|
|
|
|
|
|
|
|
|
if (match.Success) {
|
|
|
|
|
double time = (Environment.TickCount - tickStart) / 1000.0;
|
|
|
|
|
|
|
|
|
|
plotdatarssil.Add(time, double.Parse(match.Groups[1].Value));
|
|
|
|
|
plotdatarssir.Add(time, double.Parse(match.Groups[2].Value));
|
|
|
|
|
plotdatanoicel.Add(time, double.Parse(match.Groups[3].Value));
|
|
|
|
|
plotdatanoicer.Add(time, double.Parse(match.Groups[4].Value));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure the Y axis is rescaled to accommodate actual data
|
|
|
|
|
zedGraphControl1.AxisChange();
|
|
|
|
|
|
|
|
|
|
// Force a redraw
|
|
|
|
|
|
|
|
|
|
zedGraphControl1.Invalidate();
|
2012-05-20 02:54:35 -03:00
|
|
|
|
|
|
|
|
|
if (Terminal.sw != null)
|
|
|
|
|
{
|
|
|
|
|
Terminal.sw.Write(line);
|
|
|
|
|
Terminal.sw.Flush();
|
|
|
|
|
}
|
2012-05-16 09:21:27 -03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|