無線と熱帯魚とロードバイクと・・・


#アマチュア無線
#アクアリウム
#ロードバイク
#家庭

FTdx10 をCAT制御で便利に使う (その3) VB.NETによるCATコントロールソフトの開発

2024-07-11 14:29:51 | アマチュア無線

VB.NETでシリアル通信ソフトを制作する最初の関門は、送受信がスムースにできるコードを確定することです。まずツールボックスから SirialPortForm にドラッグし、そのプロパティに所定のCOMチャンネル、ボーレート、ストップビットを設定します。次に送信のコードは以下のようになります。

----------------------------------

'シリアルポートをオープンしていない場合、処理を行わない.

If SerialPort1.IsOpen = False Then 
            Return
End If
'送信するテキストは data 、ここでは VFO-A の周波数を読みに行く
Dim data As String
        data = "FA;"

 '送信するテキストがない場合、データ送信は行わない.

If String.IsNullOrEmpty(data) Then       
            Return
End If

Try             'シリアルポートからテキストを送信
            SerialPort1.WriteLine(data)          
End Try

これに対してもしポートにデータが入力された場合、これを読んで受信テキストを得ます。このコードはかなり厄介でベタコピがオススメ。

Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)Handles SerialPort1.DataReceived

 'シリアルポートをオープンしていない場合、処理を行わない.

 If SerialPort1.IsOpen = False Then   
            Return
 End If

 Try

'受信データを読み込む.
Dim data As String               
data = SerialPort1.ReadExisting()

 '受信したデータをテキストボックスに書き込む.
Dim args(0) As Object           
args(0) = data
Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), args)
        End Try

End Sub

-------------------------------------

Private Sub RcvDataToTextBox(ByVal data As String)

 RcvTextBox.AppendText(data)
 If CommandStrings = "FA;" Then  TextBox1.Text = data 

End sub

-------------------------------------------

以上のコードで FA; を送信し無事 TextBox1 に周波数を受信することができました。次に周波数を連続して受信するコードを試してみました。

-------------------------------------------

Fstart:        '周波数の連続受信
 TextBox1.Clear()
 RcvTextBox.Clear()

 CommandStrings = "FA;"
 SerialPort1.WriteLine(CommandStrings)

 GoTo Fstart

-------------------------------------------

ところがこれが全然動きません。つまり単発の送信はできても連続すると動かない、ということです。そこで試行錯誤を行った結果次のような対策で可能になりました。

・FTdx10のタイムアウトタイマーをデフォルトの10msecに戻す。

・次の位置に遅延時間要素を挿入する。

--------------------------------------

Fstart:          
  TextBox1.Clear()
  RcvTextBox.Clear()

 CommandStrings = "FA;"
 SerialPort1.WriteLine(CommandStrings)

' FUNCTION でループによる遅延時間要素を作成する、*はそのループ数(遅延時間)設定値

 DummyLoop(*)  

GoTo Fstart

----------------------------------------------

これで周波数の連続受信が可能になりましたが、この遅延時間の値が動かすPCの性能により変える必要があることが分かりました。例えばPCの動作速度が速い場合、この遅延時間を大きくする必要があります。しかしあまり大きくすると動作しなくなり、その幅はやってみなければ分からない、という状況です。


FTdx10 をCAT制御で便利に使う (その2)CATコントロールソフトの制作

2024-07-11 13:43:50 | アマチュア無線

このソフトの制作では、特にシリアル通信の送受信のタイミングをとることに苦労しました。当初はこれがなかなか分からなかったので手こずりましたが、試行錯誤を重ねてなんとかスムーズに動くところまでこぎつけました。

FTdx10のCAT制御では、ヤエス無線が提供する「FTDX10 CAT オペレーション リファレンス マニュアル」が必要です。これはネットで検索するとすぐ見つかりますが、ソフト開発では穴のあくほどこれを見ることになるのでプリントが必須です。

まずCAT制御の事始めとして適当なシリアル通信ソフトを使い、このマニュアルの最初に書かれているように文字を送信して受信できるか確認してみました。FTDx10とはUSBでつなぎ、USBチャンネル、ボーレート、ストップビットをマニュアル通りに設定して FA; と送信してみると下の様に全然受信できません。

ここから苦労が始まるのですが、まずこのマニュアルの次のような記述に注意します。

〇CATコントロールのタイムアウトタイマーはセッティングメニューにより・・・・・

ここで FTdx10のタイムアウトタイマーはデフォルトで10msecになっています。つまりこの時間が短いと、送信してPCが受信体制?に入る前にFTDx10からの返信を受けるため、これを長く設定する必要があるようです。そこでこれを最大の 3000ms に設定してみました。しかし状態は同じで ?! しか表示しません。改めて各設定値を確認してみましたが全然動きません。そこでまたマニュアルを詳しく見ていくと次のような記述に目が止まりました。

!一般的にパソコンは、雑音を発生する可能性があり、本機とパソコンを接続すると、この雑音により受信が妨害されることがあります。

これでピンときたのが以前 SDR-RSPドングルでソフトウエア受信ソフトを動かし、リグとのトラッキングを設定した時のトラブルです。これは最初はトラッキングが働きリグのダイヤルを回すとPCディスプレイ上のカーソルがちゃんと動くのですが、送信に移るとこのトラッキングが切れ再度SDRドングルをPCのUSBに刺し直さないと復帰しないという現象です。そしてこれを回避できたのがリグのUSB出力の根元で、USBケーブルをリングコアに巻き付けるという対策です。

早速同じものを用意して FA; を送信してみましたところ、やっと受信に成功しました。

試しにバンド切替の BS1~9; を打ってみると、FTdx10がカチっといって各バンドに切り替わります。これはもう楽勝と思いソフト制作を思い立ちました。

開発言語は VB.NET ですが、以前ソフト開発に使った Visual Stadio 2008 が、当時なかった Windows 11 で動くかどうか分かりませんでした。しかしそのままインストールしてみると、ラッキーなことに何のトラブルもなく動きました。 Windows 11 は、VB6は受け付けなくても VB.NET になってからは、どのバージョンでも64bitで動くんですね~

ーーー(その3)VB.NETによるCATコントロールソフト開発に続く


FTdx10 をCAT制御で便利に使う (その1)

2024-07-11 11:11:54 | アマチュア無線

FTdx10 を1か月ほど使ってみて、操作がどうにも気に入らないので VB.NETCAT制御ソフトを作ってみました。このソフトは、今までのメインリグである FTdx3000 の操作感を元に、バンドSWやCWのキースピードなど常に動かすコントロールをワンタッチで変えられるようにすることが目的です。

このソフトではバンド切替、モード、RFアンプ、ルーフィングフィルター、出力、キーイング速度と周波数、スペクトラムの各設定値がワンクリックで設定できます。基本的にはFTdx10でファンクションスイッチを押さなくても設定可能にしていますが、一度設定したらまず動かさない、という設定値(例えばスクリーンの明るさやコントラスト、VOX関係など)は除いてあります。

またSSB関連のマイクゲインなどは、各設定値をクリックすると下にあるスライダーが関連付けられ、これを動かすことで各レベルを変えられます。この時マウスホイールを回したり、スライダーの上をクリックすることでも可変できます。なお右上には現在の周波数とその下にSメータを置いてみました。

このソフトを使うことでスペクトラムは常にEXPANDにしておくことができ、操作は快適になりますが、特に良く使うスペクトラムのレベル調整はマウスホイールを回すことで、またバンドSWでバンドスタッキング機能が同じバンド表示(ボタン)をクリックすることで可能になり非常に便利です。

なおバンドSWの右端を見て分かるように、本機ではバンド設定がないMWがあり、これをクリックすると1.7MHz以下の中波に移ります。これは本機にはない設定がCATコントロールメニューにあり、このような隠れ?機能が他にもあることが分かりました。

ただCAT説明書を穴のあくほど読み込んでいますが MULTI と DNF の ON/OFF が分かりません。公開されていないのでしょうか?

なお FT991 でもほぼ同様なCATコマンドなので、ある程度の範囲では使うことができると思います。

ーーーー ソフトの開発については(その2)をご覧ください。