添付写真画像では730V-1ボタンを押した時の7.050の設定周波数がハムログ入力フォーム[A]に転送されている時のものです。
少しプログラミングの方法として取った内容を書きますと、引数を渡す方法をとり以下のサブルーチンに汎用性を持たせました。以下はリターンキーの無い場合です。
Public Sub sendingDataToHamlog(ByVal cdat As Integer, ByVal ndat As String)
cmmd = cdat
cmmd = cmmd Or THW_FOCUS
' cmmd = cmmd Or THW_ENTER
cds.dwData = cmmd
cbuff = ndat
cds.cbData = Len(Trim(cbuff))
cds.lpData = cbuff
Hwnd2 = SendMessage(Hwnd1, WM_COPYDATA, Me.Handle, cds)
If Not Hwnd2.Equals(IntPtr.Zero) Then
SetForegroundWindow(Hwnd2)
End If
End sub
引数cdatはコマンド番号で0がコールサイン、1の時はエリア、2は日付、...6は周波数となります。
同様引数ndatはコールサインや、日付、時間、他周波数などの送る文字情報としました。
上記サブルーチンを指定したい位置のコマンドをcdatに送出データをndatにセットしてコールします。
尚、自動でリターンキーを押す場合と、リターンキーを押さない場合の2つのケースを使い分けています。リターンが入るとフォーカスが次の項目へ移りますのでコールサインの欄では上記のリターンキーなしにしています。
日付時間もエイヤッで無理やりプログラムでつくり各ボタン押下時、データとして送っています。
'日付処理(2)-------------------------------------------
Dim kakotoday As String
Dim lentoday As Integer
lentoday = Len(Trim(Today))
kakotoday = Mid(Today, 3, lentoday - 2)
ndat = kakotoday
addrtnDataToHamlog(2, ndat)
'時間処理(3)-------------------------------------------
Dim JTIME As String
JTIME = "J"
Dim kakotime As String
Dim imajikan As String
Dim lenimajikan As Integer
lenimajikan = Len(Trim(TimeOfDay))
If lenimajikan = 7 Then
kakotime = "0" & TimeOfDay
Else
kakotime = TimeOfDay
End If
imajikan = Mid(kakotime, 1, lenimajikan - 2) & JTIME
ndat = imajikan
addrtnDataToHamlog(3, ndat) 'TIMEをリターン
'コールサイン欄へリターンなしでフォーカス(0)------------
sendingDataToHamlog(0, "") 'リターンせずにCALL欄へフォーカス
時間は基本JSTのみの対応です。いろいろと考えられますが今は手動でDX時は切り替えると言うことでプログラム対応はしていません。フォーム[A]のDXチェック欄を読み取り切り替えるなどは可能かと思われますが、読み取りについては、まだ確認していません。必要に応じてチェック対応してゆきたいと思います。他、フィーチャーとして無線機への周波数データ送出(RS-232C)の方も追加してゆく予定です。
尚情報源としてJG1MOU浜田OMのホームページの独断と偏見に満ちたプログラミングを参考にさせていただきました。特にHamlogMs.txtの情報は必見です。他JA2BQX OMの公開プログラミングソースも大変参考にさせていただきました。本当にVB2008Netにて短時間でプログラミングすることが出来ました。本当にありがとうございました、OM諸氏に感謝いたします。
つづく