Work QTC traffic on RTTY the way N1MM does

The QTC window put nothing on the air on RTTY except the lines themselves,
so the operator typed the rest into the digital window's transmit pane and
copied the lines by hand. N1MM sends a message for each step and fills the
lines in from a click. Both are here now, with N1MM's messages, N1MM's
defaults and N1MM's settings behind them.

The messages, all of them settings in the QTC window's setup area:

- RX Ready, `WAERXReadyText`, `{ENTERLF}I AM QRV BK`
- All Agn, `WAEAllAgnText`, `{ENTERLF}ALL AGN ALL AGN BK`
- Agn n, `WAEAGNText`, `{ENTERLF}AGN QTC: $ $ $ `, where `$` is the line
- Save, `WAESaveQTCText`, `{ENTERLF}R R R ALL OK BK`
- R U QRV, `WAERUQRVText`, `{ENTERLF}R U QRV BK`
- Save, reading traffic out, `WAESSaveQTCText`, `{ENTERLF}GL DE {MYCALL}`

Each keys the transmitter, sends the text and drops it again, and an empty
one sends nothing. The line spacing default is N1MM's `{ENTERLF}` rather
than `{ENTER}`, which was wrong.

The buttons: R U QRV and Snd Hdr were hidden while reading traffic out on
RTTY, though that is where N1MM starts — R U QRV is the first button
pressed. All Agn is new, and so is the S button on each line, which strikes
a line through a QTC that arrived too broken to read so the rows after it
keep their places; Agn n clears the strike and asks for that line again.

Clicking a line in the digital window fills the next row, which is how the
series is copied on RTTY: the other station sends the header and all ten
lines in one transmission. A click anywhere in a line hands the whole line
to the QTC window, which reads the time, the callsign and the serial number
out of it by shape and flashes the line to show it was taken. A line that is
not a QTC is left to mean what a click always means there.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0157i7PiZyqBkquxS9A6FTdQ
This commit is contained in:
2026-09-10 20:03:18 +00:00
co-authored by Claude Opus 5
parent e0f307968e
commit f24cab0ae5
11 changed files with 418 additions and 27 deletions
+23 -6
View File
@@ -33,19 +33,36 @@
</Grid>
<TextBlock Text="The spacing goes between the fields of a QTC line, written N1MM's way with S for a space. The three again messages go out on shift and Enter in that box while taking traffic down. TU goes out when the window closes after reading a series out; empty sends nothing."
FontSize="11" Opacity="0.7" TextWrapping="Wrap" Margin="0,-2,0,0" />
<TextBlock Text="RTTY messages" FontWeight="Bold" Margin="0,10,0,0" />
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto,Auto">
<TextBlock Text="Line spacing" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Column="1" Name="RttySpacingBox" Margin="0,2" />
<TextBlock Text="RTTY messages, reading traffic out" FontWeight="Bold" Margin="0,10,0,0" />
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto,Auto,Auto,Auto">
<TextBlock Text="R U QRV" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Column="1" Name="RttyAreYouReadyBox" Margin="0,2" />
<TextBlock Grid.Row="1" Text="Send All heading" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="1" Grid.Column="1" Name="SendAllHeadingBox" Margin="0,2" />
<TextBlock Grid.Row="2" Text="Send All ending" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="2" Grid.Column="1" Name="SendAllEndingBox" Margin="0,2" />
<TextBlock Grid.Row="3" Text="Save" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="3" Grid.Column="1" Name="RttySendSaveBox" Margin="0,2" />
<TextBlock Grid.Row="4" Text="Line spacing" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="4" Grid.Column="1" Name="RttySpacingBox" Margin="0,2" />
</Grid>
<TextBlock Text="These go out when the All button reads a whole series out on RTTY. The spacing goes between the lines, not between the fields of one — use {ENTER} or {ENTERLF} for a carriage return. {QTC} stands for the header of the series, and the other function key macros work as well."
<TextBlock Text="The spacing goes between the lines of a series, not between the fields of one — use {ENTER} or {ENTERLF} for a carriage return. {QTC} stands for the header of the series, and the other function key macros work as well."
FontSize="11" Opacity="0.7" TextWrapping="Wrap" Margin="0,-2,0,0" />
<TextBlock Text="RTTY messages, taking traffic down" FontWeight="Bold" Margin="0,10,0,0" />
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto,Auto,Auto">
<TextBlock Text="RX Ready" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Column="1" Name="RttyReadyBox" Margin="0,2" />
<TextBlock Grid.Row="1" Text="All Agn" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="1" Grid.Column="1" Name="RttyAllAgainBox" Margin="0,2" />
<TextBlock Grid.Row="2" Text="Agn n" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="2" Grid.Column="1" Name="RttyLineAgainBox" Margin="0,2" />
<TextBlock Grid.Row="3" Text="Save" VerticalAlignment="Center" Margin="0,2,8,2" />
<TextBox Grid.Row="3" Grid.Column="1" Name="RttySaveBox" Margin="0,2" />
</Grid>
<TextBlock Text="$ in the Agn n message stands for the line being asked for, so AGN QTC: $ $ $ goes out as AGN QTC: 5 5 5. Each of these keys the transmitter, sends the message and drops it again; an empty one sends nothing."
FontSize="11" Opacity="0.7" TextWrapping="Wrap" Margin="0,-2,0,0" />
<TextBlock Name="MissingText" FontSize="11" Opacity="0.7" TextWrapping="Wrap" Margin="0,6,0,0"
Text="N1MM's SSB recordings are left out: playing those needs a voice keyer, and this program has none. So are its RTTY messages for the station taking traffic down — RX Ready, All Agn, Agn and Save — which are typed into the digital window's transmit pane here." />
Text="N1MM's SSB recordings are left out: playing those needs a voice keyer, and this program has none." />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Spacing="6" Margin="0,8,0,0">
<Button Content="Cancel" Click="OnCancel" />
<Button Content="Save" Click="OnSave" IsDefault="True" />
@@ -27,6 +27,12 @@ public sealed partial class QtcSetupDialog : Window
RttySpacingBox.Text = settings.QtcRttySpacing;
SendAllHeadingBox.Text = settings.QtcRttySendAllHeading;
SendAllEndingBox.Text = settings.QtcRttySendAllEnding;
RttyAreYouReadyBox.Text = settings.QtcRttyAreYouReady;
RttySendSaveBox.Text = settings.QtcRttySendSave;
RttyReadyBox.Text = settings.QtcRttyReady;
RttyAllAgainBox.Text = settings.QtcRttyAllAgain;
RttyLineAgainBox.Text = settings.QtcRttyLineAgain;
RttySaveBox.Text = settings.QtcRttySave;
}
private void OnSave(object? sender, RoutedEventArgs e) => Close(settings with
@@ -46,6 +52,12 @@ public sealed partial class QtcSetupDialog : Window
QtcRttySpacing = RttySpacingBox.Text ?? "",
QtcRttySendAllHeading = SendAllHeadingBox.Text ?? "",
QtcRttySendAllEnding = SendAllEndingBox.Text ?? "",
QtcRttyAreYouReady = RttyAreYouReadyBox.Text ?? "",
QtcRttySendSave = RttySendSaveBox.Text ?? "",
QtcRttyReady = RttyReadyBox.Text ?? "",
QtcRttyAllAgain = RttyAllAgainBox.Text ?? "",
QtcRttyLineAgain = RttyLineAgainBox.Text ?? "",
QtcRttySave = RttySaveBox.Text ?? "",
});
private void OnCancel(object? sender, RoutedEventArgs e) => Close(null);