Amature Radio Station  JA1WXB

FTdx10 のCATコントロール


 ◆ FTdx10の使いにくさを補う

 ◆FTDx10のCATコントロール

 ◆VB.NETによるFTdx10CATコントロールプログラム(送受信基本コード)

 ◆VB.NETによるFTdx10CATコントロールプログラム(制作したプログラムの概要)


最初のページに戻る


◆FTdx10の使いにくさを補う

トランシーバー性能ランキングの2位といわれるFTDX101の廉価版であるFTdx10は、性能面で第3位につける優秀なリグ、というふれこみを信じ、今まで使用してきたFTDx3000の後継機として購入してみました。



確かに受信性能はFTdx3000に比べ良いかな?と思いますが、小型化をはかったため操作面での使いにくさがかなり目立ちます。まずバンドの切替にはバンドSWを押してダイヤルの周りにある多機能リングを回す二手間が、またCWでいつも使うキーイングスピードは、FUNCTIONスイッチを押してメニュー表を表示させ、その中からキースピードのボタンを押し、FUNCTIONスイッチを回す、という3つの操作が必要になります。

これはかなり使いずらく何とかならないかという声はネットでも散見されますが、特にこのいつも使う「FUNC」スイッチの硬いことと、メニュー表示で該当位置をタッチすると数秒でこれが消えることには違和感がありすぎます。

そこでこの「使いずらさ」を解消すべく、ヤエスから提供されているCAT制御のリファレンスをもとに、PCでFTdx10の操作ができるソフトを作成してみました。このリファレンスは「FTDX10 CAT オペレーションリファレンス マニュアル(PDF)」としてwebから入手できます。このCATコマンドを使ったソフトは、プログラムとしてはかなり簡単な部類に入りますので、今まで何らかのプログラム開発経験があれば簡単に作ることができると思います。

ページの先頭に戻る



◆FTdx10のCATコントロール

ヤエスさんはCATコントロールと称していますが、一般的にはシリアル通信でPCからFTdx10に向け文字列を送信し、帰り値があればそれを受信するプログラムになります。

このプログラムでは、特にシリアル通信の送受信のタイミングをとることが必要ですが、当初はこれがなかなかうまく行かず手こずりました。

まず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によるFTdx10CATコントロールプログラム(送受信基本コード)

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

シリアル通信ソフトを制作する最初の関門は、送受信がスムースにできるコードを確定することです。まずツールボックスからSirialPortを Form にドラッグし、そのプロパティに所定のCOMチャンネル、ボーレート(38400)、ストップビット(TWO)を設定します。次に送信のコードは以下のようになります。
-----------------------------------------------------------------------------------------------------
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 =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     ' 例えばFA;を送信した場合
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)
    DummyLoop(*)   ' 遅延時間要素を作成しここに挿入する(*はその遅延時間設定値)
GoTo Fstart
------------------------------------------------------
これで周波数の連続受信が可能になりましたが、この遅延時間の値が動かすPCの性能により決まることが分かり、PCの動作速度が速い場合、この遅延時間を大きくする必要があります。しかしあまり大きくすると今度は動作しなくなるので、その値はやってみなければ分からない、という状況です。

ページの先頭に戻る 



VB.NETによるFTdx10CATコントロールプログラム(制作したプログラム)

制作の概要ですが、今まで使用していたメインリグである FTdx3000 の操作感を元に、バンドSWやCWのキースピードなど常に動かすコントロールをワンタッチで変えられるようにしました。



このプログラムでは、まずバンド切替が最上段に、モード、RFアンプ、ルーフィングフィルターのボタン表示が左側に並んであり、それぞれワンクリックで設定できます。スペクトラムの設定値は下段(スコープの帯域、波形の色、ピーク形状、作画速度)と中〜右上(スコープの種類とWFでのセンター位置)にあり、その下にはメーター選択とマイク関連があります。

ここでマイクゲインなどは、各設定値をクリックすると下にあるスライダーが関連付けられ、これを動かすことで各レベルを変えられます。この時マウスホイールを回したり、スライダーの上をクリックすることでも可変できます。

またパワー出力、キーイング速度と周波数、スコープのレベル調整は使うシーンが多いので単独で用意しましたが、キーイング速度と周波数は実際に設定する数値の幅が決まっているので数値アップダウンSWにしました。なお右上には現在の周波数とその下にSメータを置いてみましたが見ることはあまり無く、必要性については?です。

以上通常の運用でFTdx10のファンクションスイッチを使う必要がないことを考慮しており、一度設定したらまず動かさない、という設定値(例えばスクリーンの明るさやコントラスト、VOX関係など)や、ほとんど使ったことがないメモリ関連は除いてあります。

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

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

ただこのリファレンスマニュアルを穴のあくほど読み込んでいますが、MULTIDNFの ON/OFF が分かりません。公開されていないのでしょうか?
ページの先頭に戻る 



 

最初のページに戻る