Skip to content

Commit

Permalink
Merge pull request #6 from sam210723/dev
Browse files Browse the repository at this point in the history
Merge v1.3
  • Loading branch information
sam210723 committed Aug 22, 2020
2 parents 1592090 + c0537c3 commit 1677dcd
Show file tree
Hide file tree
Showing 21 changed files with 1,467 additions and 59 deletions.
16 changes: 15 additions & 1 deletion README.md
Expand Up @@ -6,7 +6,7 @@

goesrecv monitor is a software utility for monitoring the status of [goesrecv](https://github.com/pietern/goestools) by [Pieter Noordhuis](https://twitter.com/pnoordhuis). goesrecv is a BPSK demodulator and CCSDS decoder for LRIT and HRIT downlinks transmitted by geostationary weather satellites like GOES-16/17 and GK-2A.

<p align="center"><img src="screenshot.png"></p>
<p align="center"><img src="screenshots/main-window.png"></p>

## Getting Started
Microsoft [.NET Framework Runtime v4.8](https://dotnet.microsoft.com/download/dotnet-framework/net48) ([direct download](https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-web-installer)) is required to run **goesrecv monitor**. Once .NET is installed, download the [latest release](https://github.com/sam210723/goesrecv-monitor/releases/latest/download/goesrecv-monitor.zip) of **goesrecv monitor** and extract all files inside the ZIP to a new folder.
Expand All @@ -28,6 +28,20 @@ Finally, open **goesrecv monitor** and enter the IP address of a device running

If **goesrecv monitor** fails to connect, check for firewalls on the device running goesrecv. Inbound connections on ports ```5002```, ```6001``` and ```6002``` must be allowed.

## Statistics Plot
**goesrecv monitor** can plot the Viterbi and Reed-Solomon error counts in real-time using the Statistics Plot window. The plot has selectable time ranges from ``1 minute`` up to ``24 hours``. Plot data can be exported to a ``CSV`` file using the "Export CSV" button on the lower right of the window.

Launch the Statistics Plot by clicking on the "Open Statistics Plot" button in the main window.

<p align="center"><img src="screenshots/stats-plot.png"></p>

## Large Statistics
The large statistics window is intended to improve visibility of the Viterbi error count and Signal Quality percentage from a distance. This is useful while while fine tuning the alignment of an antenna. The window background colour changes between red and green to indicate the Signal Lock state.

Launch the Large Statistics window by clicking on the "Open Large View" button in the main window.

<p align="center"><img src="screenshots/large-stats.png"></p>

## Debug Logs
**goesrecv monitor** can log certain information to a text file for the purposes of debugging crashes or configuration issues. Changing the ```logging``` setting in ```goesrecv-monitor.exe.config``` to either ```True``` or ```False``` will enable or disable the log file.
```
Expand Down
3 changes: 3 additions & 0 deletions goesrecv-monitor/App.config
Expand Up @@ -19,6 +19,9 @@
<setting name="order" serializeAs="String">
<value>2</value>
</setting>
<setting name="period" serializeAs="String">
<value>0</value>
</setting>
</goesrecv_monitor.Properties.Settings>
</userSettings>
<applicationSettings>
Expand Down
158 changes: 158 additions & 0 deletions goesrecv-monitor/Big.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

149 changes: 149 additions & 0 deletions goesrecv-monitor/Big.cs
@@ -0,0 +1,149 @@
using System;
using System.Drawing;
using System.Windows.Forms;

namespace goesrecv_monitor
{
public partial class Big : Form
{
public Big()
{
InitializeComponent();
}

/// <summary>
/// Resets UI elements after disconnect
/// </summary>
public void ResetUI()
{
if (labelRsErr.InvokeRequired)
{
labelRsErr.Invoke((MethodInvoker)(() => {
this.BackColor = Color.Black;
labelRsErr.Text = "----";
labelVitErr.Text = "----";
labelQuality.Text = "----";
}));
}
else
{
this.BackColor = Color.Black;
labelRsErr.Text = "----";
labelVitErr.Text = "----";
labelQuality.Text = "----";
}
}

/// <summary>
/// Toggle font colour
/// </summary>
private void btnFontColour_Click(object sender, EventArgs e)
{
if (ForeColor == Color.White)
{
ForeColor = Color.Black;
btnFontColour.BackColor = Color.White;
}
else
{
ForeColor = Color.White;
btnFontColour.BackColor = Color.FromArgb(1, 1, 1);
}
}


#region Properties
public bool SignalLock
{
set
{
if (value)
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)(() =>
{
this.BackColor = Color.Green;
}));
}
else
{
this.BackColor = Color.Green;
}
}
else
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)(() =>
{
this.BackColor = Color.Red;
}));
}
else
{
this.BackColor = Color.Red;
}
}
}
}

public int SignalQuality
{
set
{
if (labelQuality.InvokeRequired)
{
labelQuality.Invoke((MethodInvoker)(() =>
{
labelQuality.Text = value.ToString().PadLeft(3, ' ') + "%";
}));
}
else
{
labelQuality.Text = value.ToString().PadLeft(3, ' ') + "%";
}

}
}

public int ViterbiErrors
{
set
{
if (labelVitErr.InvokeRequired)
{
labelVitErr.Invoke((MethodInvoker)(() =>
{
labelVitErr.Text = value.ToString().PadLeft(4, ' ');
}));
}
else
{
labelVitErr.Text = value.ToString().PadLeft(4, ' ');
}

}
}

public int RSErrors
{
set
{
if (labelRsErr.InvokeRequired)
{
labelRsErr.Invoke((MethodInvoker)(() =>
{
labelRsErr.Text = value.ToString().PadLeft(4, ' ');
}));
}
else
{
labelRsErr.Text = value.ToString().PadLeft(4, ' ');
}

}
}
#endregion
}
}

0 comments on commit 1677dcd

Please sign in to comment.