FT8 コールサイン表示ツール

投稿者: | 2021-12-11
computer c code

各局皆様、こんにちは。アマチュア無線局、JS2IIUです。

FT8をやっているときに、交信中の相手や呼ぼうとしている相手のコールサインが少し見づらいので、大きく表示できるツールを作ってみました。JTDXやWSJT-Xは交信している間、相手きょくのコールサインをクリップボードにコピーしています。下の図のようなウィンドウを開いておくと、クリップボードを読んで、コールサインを表示するという単純なものです。

  • Visual Studio 2022 を使用
    • Visual Basic で作成
    • WPF アプリ (.NET Framework)

目次

部品

クリップボードの内容を読みだす。クリップボードの中身がテキストであることを確認してから読み込みしています。

If Clipboard.ContainsText() Then
    TextBlock.Text = Clipboard.GetText()
End If

ソースコード(抜粋)

クリップボードの内容がコールサインかどうかの判定はちゃんと行っていません。単純に文字数だけで判断していますので、コールサイン以外が表示されることもあります。FT8しているときは他ごとしない、まじめな無線家向けですね。

'タイマー処理
Imports System.ComponentModel
Imports System.Windows.Threading

Class MainWindow

    Public Const CALL_MAX_LEN As Integer = 9
    Public Const STR_NOT_CALL As String = "C/S"


    Public Sub New()

        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。
        SetupTimer()
    End Sub

    Private Sub WatchButton_Click(sender As Object, e As RoutedEventArgs) Handles WatchButton.Click
        If Clipboard.ContainsText() Then
            If Clipboard.GetText.Length < CALL_MAX_LEN Then
                Me.CB_TextBlock.Text = Clipboard.GetText()
            Else
                Me.CB_TextBlock.Text = STR_NOT_CALL
            End If
        End If

    End Sub

    'タイマメソッド
    Private Sub MyTimerMethod(sender As Object, e As EventArgs)
        If Clipboard.ContainsText() Then
            If Clipboard.GetText.Length < CALL_MAX_LEN Then
                Me.CB_TextBlock.Text = Clipboard.GetText()
            Else
                Me.CB_TextBlock.Text = STR_NOT_CALL
            End If
        End If
    End Sub

    'タイマのインスタンス
    Private _timer As DispatcherTimer

    'タイマの設定
    Private Sub SetupTimer()
        'タイマのインスタンス生成
        _timer = New DispatcherTimer()
        'interval 1sec
        _timer.Interval = New TimeSpan(0, 0, 1)
        'タイマメソッド
        AddHandler _timer.Tick, New EventHandler(AddressOf MyTimerMethod)
        'タイマを開始
        _timer.Start()


        '画面閉じられるときに、タイマを停止する
        AddHandler Me.Closing, New CancelEventHandler(AddressOf StopTimer)

    End Sub

    Private Sub StopTimer(sender As Object, e As CancelEventArgs)
        _timer.Stop()
    End Sub

End Class

参考サイト

使用イメージ

実際に使ってみましたが、コールサインが見やすいので大変便利です。画面の隙間にちょこっと見えています。(下図)早速JTAlertで自動起動できるように設定しました。

最後まで読んでいただきありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です