mirror of https://github.com/ArduPilot/ardupilot
121 lines
3.9 KiB
C#
121 lines
3.9 KiB
C#
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;
|
|
|
|
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();
|
|
|
|
zedGraphControl1.GraphPane.AddCurve("Rssi Local",plotdatarssil,Color.Red,SymbolType.None);
|
|
zedGraphControl1.GraphPane.AddCurve("Rssi Remote", plotdatarssir, Color.Green, SymbolType.None);
|
|
zedGraphControl1.GraphPane.AddCurve("Noice Local", plotdatanoicel, Color.Blue, SymbolType.None);
|
|
zedGraphControl1.GraphPane.AddCurve("Noice Remote", plotdatanoicer, Color.Orange, SymbolType.None);
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|