CUIでCI-Vコントロール その2

最近,ICOMでこのようなツイートがありました.

スマホWindows PCからICOMのリグに対してGPS位置情報や時刻設定を流し込むアプリケーションのようです.
自分はAndroidスマホWindowsノートPCも持っていないのでアプリの恩恵を受けることができません.加えて云うと「このアプリを動かすためにいちいち無線機に接続するのもなぁ」という感想です.他のプラットフォームでも動かせるようにオープンソースなり情報で欲しかったなぁ.

しかしリンク先を見て動きを類推すると,どうやら必要なGPSなり時刻情報をスマホなりPCから取得してCI-Vで設定しに行くだけなのではないかと思えてきました.

ちょっと前にこんな記事を書いたことがあります.
jo1mmi.hatenadiary.com
WindowsのWSLのLinuxからUSBで繋がったIC-9700の周波数を変更するコマンドを作ったという記事です.このときのやり方が適用できそうです.

実は時刻設定に関してはモチベーションがあります.IC-7300MはGoBoxに入れっぱなしにしているのですが,運用するときにバッテリを接続する使い方をしています.運用期間が空くと7300の時計設定が失われてしまいます.一発で時計を設定する機能が欲しいと思っていました.
当局では基本的に無線機に1台ずつ Raspberry Pi を繋いであって,主にFT8のデジタルモードの運用に利用しています.というわけで,Linuxコマンドとして時刻設定を無線機に対して発行すればいいということになります.

試しにIC-705で実験してみたところ,うまく行きました.

#!/bin/bash

export ADR='A4'
export DSET="0165"
export TSET="0166"
stty 19200 -F /dev/ttyUSB705 raw -echo
echo "FEFE""$ADR""E01A05""$DSET""`date '+%Y%m%d'`""FD" | xxd -r -p > /dev/ttyUSB705
echo "FEFE""$ADR""E01A05""$TSET""`date '+%H%M'`""FD" | xxd -r -p > /dev/ttyUSB705

stty でシリアルデバイスを設定して,日付および時刻情報は date コマンドで取得しながら echo で作った文字列を送り込むものです.パイプした xxd でバイナリにしてデバイスにリダイレクトです.デバイスはIC-705のコントロール用シリアルデバイスをこの名前にエイリアスしておいたものです.
文字列生成にあたり,ADR が IC-705 の CI-Vアドレス,DSET が IC-705 の日付設定サブコマンド,TSET が IC-705 の時刻設定サブコマンドです.これらサブコマンドは 1A-05 コマンドの配下にあります.

CI-Vアドレスと日付・時刻設定サブコマンドを IC-7300用に変更*1し,シリアルデバイスをIC-7300に接続してあるRspberry Piのものに合わせれば,IC-7300にも適用できるはずです.

追記

ようやく IC-7300 でも試してうまくいきました.
バイスを適切なものに変更した上で,スクリプト上のパラメータもIC-7300に合うように変更する必要があります.パラメータの変更部分は以下です.

export ADR='94'
export DSET="0094"
export TSET="0095"

本当は同じデバイスを使っている他のアプリケーション(FLRigとかWSJT-Xとか)とかち合わないようにしなければいけないのかもしれません.このあたりは追って勉強します.

さて,次は IC-9700 にGPS情報を送り込むべく,がんばります.

*1:日付や時刻設定など汎用っぽい設定項目のサブコマンド配置が無線機ごとに異なるとけっこう面倒くさいですね.