イメージ 1

イメージ 2

イメージ 3

ハムログのプログラムをいじり始めたついでに、プログラムから起動した場合のハムログが閉じるボタンで終了した場合の検出方法を検討した。考えると意外と方法はあるもので、今回の730V-1Aのコントロールプログラムではタイマーを使いハムログの周波数を106のコマンド制御コードをおくりタイマーインターバル毎に値を取得している。タイマー処理のなかでは毎回上記を繰り返し行っていてしかもハムログ起動のチェックも同様に行っている。ここを利用する方法がある。今までだとハムログが起動していないと、即ルーチンを抜ける処理であった。ここにまず最初にタイマーのインターバルを停止するセンテンスを筆頭にかく。これをしないと後に表示するメッセージボックスが連続して永久に表示が追加されていく。後はフォーム上に表示している。ハムログの状態表示ラベルを追加する。そしてメッセージボックスの表示の順番である。メッセージボックスはOKボタンがついているが、すでにタイマーは終了しているので、OKボタンを押して即ルーチンを抜けるだけとなる。次に各コマンドボタンのイネーブルで消したボタンを元に戻す処理を入れる。初期状態に戻す為だ。通常はハムログが起動していると毎回チエックされているここのルーチンは素通りである。終了しているとHwnd1が0となりこのルーチンに入る。
以下がタイマー部から呼び出しているルーチン部分の一部である。

Hwnd1 = FindWindow("TThwin", vbNullString)
If Hwnd1 < 1 Then
Timer1.Enabled = False 'TIMER STOP し 終了
Label10.Text = "ハムログが起動していません。"
MsgBox("HAMLOGは閉じました。")
combtnoff()
Exit Sub
End If
ハムログの終了ボタンを押してうまい具合に検出した格好になった。
ちなみに私のタイマーコマンドの中でのプログラムはハムログの周波数を上記のルーチンからパブリック変数にしてあるAutoRLcont変数に値を取り込みその値をSelectCase分で出力制御しているだけです。AutoRLcont変数は最初に初期化で0にしてから使います。Button9_Click(sender,e)が上記変数に値を取得するルーチンです。前のフォームで表示したハムログ読取ボタンのプログラム部です。このボタン9をプログラム上から呼んで自動押下処理としています。
以下記します。
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
AutoRLcont = 0
Button9_Click(sender, e)
Select Case AutoRLcont
Case 0.1 To 3.555
Dim inRet As Boolean
intDat(0) = Val("&H" + "D")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 3.551 To 3.575
Dim inRet As Boolean
intDat(0) = Val("&H" + "C")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 3.576 To 3.764
Dim inRet As Boolean
intDat(0) = Val("&H" + "9")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 3.765 To 4.999
Dim inRet As Boolean
intDat(0) = Val("&H" + "8")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 5.0 To 7.099 '730v-1
Dim inRet As Boolean
intDat(0) = Val("&H" + "F")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 7.1 To 7.199 '730v-1 +high
Dim inRet As Boolean
intDat(0) = Val("&H" + "E")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 7.2 To 29.999
Dim inRet As Boolean
intDat(0) = Val("&H" + "F")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
End Select
End Sub
もちろん周波数範囲は自分で作製したコントロールボックスの中の回路と無線機の仕様にて決めています。改善した部分のフォームを添付しました。最初がハムログを開くボタンを押してハムログが起動した状態のフォーム、次がハムログの閉じるボタンで終了した後のフォーム上のメッセージボックスの状態、最後がメッセージボックスのOKボタンを押してからの初期化フォームの状態(初期化とはいっても周波数コマンド設定はされています。また先に読み取った周波数表示はそのままです。本当の立ち上げ時は101のコールサインコマンドで周波数はFreqの表示が本当の初期状態です。)以上です。まだまだ改善の余地はありそうです。