JH3DRN 趣味の徒然

主にアマチュア無線、電子工作について書いてます.

macOS 13.0 Ventura へバージョンアップ

少し前からmacOSのバージョンアップ案内がシステム設定からされていて、”どうしようか?”と思っていたのだが、今日ExpertSDR3 V1.0.0 がmacOS13(Ventura)に対応しているとの表示が有ったので思いきってバージョンアップしてみた。結果として、アプリ ”MacBooster8 ”が動かなくなったがサイトからV8.1をDWして再インストールした結果何とか動作する様になった。その他、心配していた"EESDR3", "JTDX 15.9", "RunlogNG"も動作したので何とか大丈夫そう。毎回ながらバージョンアップには気を遣うなあ。

ExpertSDR3 V 1.0.0 Beta リリース

 昨日(2022/10/28)の夕方、フェイスブックで ”明日、RN6LNFがV1.0 についてYouTubeで解説するよ”との書き込みが有ったので、今日EE社のサイトを見たらしっかりとV1.0.0 Beta がアップされていた。現行バージョンが 0.13.0 なので次は 0.13.1 か 0.14.0 だと思っていたらいきなり1.0ベータとは!!。開発者の意気込みが感じられるしこの闘志に敬意を表したいと思う。  通常の画面周りは大きく変わっていない。設定画面に送受信を設定する画面が追加されていて以前よりも設定が分かり易くなっている。

EESDR3 設定画面

それ以外で大きく変わったのがRadioSyncの機能。EESDR3になってから外部ソフトウェアとの通信は"TCI"と呼ばれるインターフェイスに統一されており、このインターフェイスを持たない:(従来のCATコントロールのソフト)物との接続が出来ない仕組みであり、これを回避する為に、CATとTCIを繋ぐ為に作られたのがRadioSync である。具体的に言うとRTTYで良く使用される "MMTTY"はこのRadioSyncを通してEESDR3と接続して運用する事が出来る。V 0.13.0 に比べて設定項目が多くなり、多くの外部ソフトウェアに対応出来るとの事。

EESDR3の仕組み上、EESDRの更新時に同時にSunSDR2DXのファームも更新されるので注意が必要である。今回、EESDR3をV1.0.0 に更新する場合には最初の画面でファームウェアマネージャを起動してファームを86.8に更新された事の確認が必要。

SunSDR2DX: ブロックダイアグラム掲載許可の連絡が来た

先の記事でSunSDR2DXのブロックダイアグラムについてExpertElectronics社のフォーラムの「記事にしても良いですか?」と質問した事はかいたが、今日になって管理者の"Rome"さんから「良いよ」と返信書き込みを頂いた。また、このブロック図は予想とおりEDC社の故 木下さんがEE社に依頼されたとの事も判明した。 これでようやく、SunSDR2DX を使った開局申請の手順を作成して公開する事が出来る!さて、どこに書こうかなあ??

EE社のフォーラム

SunSDR2DX: JARD殿に認証頂きました!

EXpert Electronicsへ問合せ中ですが

少し前になりますが、SunSDR2DXをJARD殿で認証頂き、無事 免許状を交付頂きました。ここまでの過程は別に書きますが、まあ色々ありました。で、当然申請資料には工事設計書が必須であり、ファイナルのトランジスタ(FET)の記述が必要となります。ところがブロックダイアグラムと終段トランジスタとかは、今は廃業されたEDC社のマニュアルにのみ記述されており、ネットには見当たらない情報となっております。それで、ExpertElectronicsのフォーラムに「公開して良い??」との投稿をしましたが、その時のログインメンバーは、、、JAでは当局のみでちょっと寂しいかも。公開の許可が得られたら公開したいと思います。

RUMlogNGのADIFファイルをQSLラベル印刷用CSVに変換する(Markdownで書いてみました)

 RUMlogNG と MacLoggerDX の両方のソフトを所有していてなぜRUMlogNG を使っているかと言うと、QSLラベルに印刷するリグ、アンテナがバンド毎に設定出来る事にある。 各バンドのリグ、アンテナを登録しておけばQSL発行時に自動的に登録内容を印刷(出力)してくれるのでとても便利。折角お金出して MacLogger買ったけど使っていないのはこれが理由。 そんなわけで RUMlogNGには満足していて重宝しているが、不満点が幾つかある。

  1. QSLラベルを印刷するのに対応しているラベルに国産が含まれていない(米国製のラベルは入手困難&高価である)
  2. QSLラベルをソートして印刷したいが思うように出来ない(ラベルの印刷単位によってソートを変えたりしたい)

1に付いては「メールくれたら対応するよ」とは言ってくれているが、手持ちによってラベルの種類を変える事もあるので、これはパス。 2に付いても同様でフレキシブルに作業したいと思っている。で、ADIFからCSVへの変換プログラムは幾つか出回っているが、変換の手間(前処理、後処理)を考えるとこれもしっくりこないので、思い切って作る事にした。 作ると言ってもプログラムを作る訳では無く(まあawkもプログラムだけれど)awksed を使って作って見た。どちらも mac であれば標準装備なので問題は無い。結果から書いて、後で解説する事にする。まず、元のADIFファイルの内容だが、

------ オリジナルのADIFファイル --------

ADIF Export from RumLogNG by DL2RUM
For further info visit: http://www.dl2rum.de

<ADIF_VER:5>3.1.3
<CREATED_TIMESTAMP:15>20220915 082455
<PROGRAMID:8>RUMlogNG
<PROGRAMVERSION:5>5.9.2
<EOH>


<call:5>ZD7MY  <qso_date:8>20211107 <time_on:6>073744 <band:3>20m  <freq:9>14.075800  <mode:3>FT8  <rst_sent:3>-17
  <qsl_rcvd:1>N <qslmsg:24>IC741 4ele Yagi 20mh  <notes:24>IC741 4ele Yagi 20mh   <eor>
<call:5>CT3KN  <qso_date:8>20211107 <time_on:6>080844 <band:3>20m  <freq:9>14.082700  <mode:4>MFSK  <submode:3>FT4
  <rst_sent:3>-09  <qsl_rcvd:1>N <qslmsg:24>IC741 4ele Yagi 20mh  <notes:24>IC741 4ele Yagi 20mh   <eor>
<call:5>F1TZE  <qso_date:8>20211107 <time_on:6>081214 <band:3>20m  <freq:9>14.082700  <mode:4>MFSK  <submode:3>FT4
  <rst_sent:3>-12  <qsl_rcvd:1>N <qslmsg:24>IC741 4ele Yagi 20mh  <notes:24>IC741 4ele Yagi 20mh   <eor>
<call:6>IS0KNG  <qso_date:8>20211107 <time_on:6>081422 <band:3>20m  <freq:9>14.082700  <mode:4>MFSK  <submode:3>FT4
  <rst_sent:3>-03  <qsl_rcvd:1>N <qslmsg:24>IC741 4ele Yagi 20mh  <notes:24>IC741 4ele Yagi 20mh   <eor>
-------------------------------------------------------------------------------------~~~

最初にヘッダがあって、その後にQSOデータがある。課題としては

  1. コールサイン不定長(後ろにスペースが入っている)
  2. FT4の場合、mode には”MFSK”と入っていて、submode に"FT4"と入っている
  3. 日時、時刻がベタ表示(20220909 1020 みたいに)

この当たりを考慮してawkのプログラムを作った。上記のADIFファイルの変換結果が

-------- 変換後のcsvファイル --------------------------------------------

ZD7MY,2021/11/07,07:37,14.0758,FT8 ,-17,IC741 4ele Yagi 20mh  
CT3KN,2021/11/07,08:08,14.0827,FT4 ,-09,IC741 4ele Yagi 20mh  
F1TZE,2021/11/07,08:12,14.0827,FT4 ,-12,IC741 4ele Yagi 20mh  
IS0KNG,2021/11/07,08:14,14.0827,FT4 ,-03,IC741 4ele Yagi 20mh  
------------------------------------------------------------------------

ご覧の様に、不定長のコールサインもスペースが取られていて日付、時刻もフォーマットされている。MFSK は FT4 に変換されており、リグ、アンテナ欄のスペースも削除されていない。これなら印刷用CSVとして使えると思う。で、awkのコマンドファイルと実際に入力するコマンドを下記する

-------- awk コマンドファイル: conv.awk の内容---------

-------- awk コマンドファイル: conv.awk の内容---------

# RUMlogNGのADIFファイルをCSV形式に変換する
#                     2022/09/15 JH3DRN
BEGIN {
   FS = "<"    #入力セパレータを < とする
   OFS= ","    #出力セパレータを , とする
   }
{
for(i=0;i<1;i++)
   { 
   if(NR>10)     # 10行目から処理する ヘッダは読み飛ばす
     {
     (/>/gsub(/ /, "", $2)); print (substr($2,8,index($2,">")+5)),
        # callの前のヘッダを削除 と callの後のスペース削除
     substr($3,12,4) "/" substr($3,16,2) "/" substr($3,18,2),        # 日付Form yyyy/mm/dd
     substr($4,12,2) ":" substr($4,14,2),   # 時刻Form hh:mm
     substr($6,8,7),                                        # 周波数切出
     substr($7,8,4),                                        # Mode 切出
     substr($(NF-4),12,3),                            # RST 切出
     substr($(NF-2),11,26)                            # リグアンテナ切出
        }
    }
}

END {
}
--------------------------------------------------------------------------------

コマンドラインからの入力>

$awk -f conv.awk 0915.adi | sort | sed -e "s/MFSK/FT4 /g" -e "s/>//g" > qsl.csv 

説明:adiファイル "0915.adi" を "conv.awk" で変換し、並び順をソートして sedに渡し、sed で"MFSK" を ”FT4"に変換してファイル"qsl.csv"に格納する。 簡単そうに見えるが作るのに丸1日掛かった!! ご参考になれば幸い。 実際の印刷は次回とします。 追記:コールサインが10文字以上の場合に正確に変換出来ないケースがあったのでconv.awkコマンドラインを修正しました。これで、昨年末からのQSO約600局のQSLラベルが正確に印刷出来ました。(修正はアンダーーラインの部分)

RUNlogNG JA向けQSL問題と同一局複数交信問題(Markdownで書いてみました)

昨日作ったスクリプトで手持ちのシールにQSOデータを印刷して久しぶりに紙カード発行作業を行った。やっぱり楽だわ〜。 カードにシールを貼ってサインして積んでおくだけでアルファベット順にソートされるのでほぼそのままビューロに送れる。 と思っていたのだがJA向けの段になってふと疑問が。単純にソートしているので。 JA1 の次はJA2 のラベルが印刷されてしまう。JARLの規定では

JARL QSLカードの仕分け方

となっていて、 JA1, JE1, JF1 .......JA2, JE2 .... の様な順序に揃えなければならない。まあ、JAとの交信は少ないので良いかとも思ったが、 どうもしっくりこないので何とか考えてみた。昨日までのソートでは JA1,JA2.....JE1,JE2  と並んでしまうのでJARL規定通りに並べる為に次の様なアルゴリズムを考えた。

最初に全QSOを記録したADIFファイルを全QSO-CSVファイルに変換する 次に全QSO-CSVファイルを国内分(ja.sql)と海外分(oversee.csv)に分割する 国内分に関して、ja.csv に対してコールサインの2文字目と3文字目を入れ替えたファイルを作成する。この操作で "JH3DRN"は"J3HDRNと変換される。 ここで作成された ja.csv をソートして再び、2文字目と3文字目を入れ替える。

awk -f get_ja.awk qsl.csv > ja.csv
awk -f cut_ja.awk qsl.csv > oversee.csv
awk -f conv_ja.awk ja.csv | sort | awk -f conv_ja.awk | sed -e "s/,,,/,/g" > ja_s.csv

(ja_s.csv に正しくソートされた国内QSOデータが格納される)

awk -f conv.awk 0915.adi| sort | sed -e "s/MFSK/FT4 /g" > qsl.csv

スクリプトは次の通り

#ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
# コールサインの2文字目と3文字目を入れ替える  conv_ja.awk
#                                2022/09/16 JH3DRN
BEGIN {
 FS = "," #入力セパレータを , とする
 OFS= "" #出力セパレータは無しとする
    }
{
for(i=0;i<1;i++)
   { 
 OFS="" # 出力セパレータを無しに設定
 print substr($1,0,1),substr($1,3,1),
 substr($1,2,1),substr($1,5,1)substr($1,5,1)substr($1,6,1),
 substr($1,7,1),substr($1,8,1)substr($1,9,1)substr($1,10,1),
 OFS=",", # 出力セパレータを , とする
 $2,$3,$4,$5,$6,$7
  }
}
END {
}

# $awk -f conv_ja.awk ja.csv | sort | awk -f conv_ja.awk | sed -e "s/,,,/,/g" > ja_s.csv
#ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
  • QSOデータから国内局のみ抽出する
#----------------------------------------------------------
# 全QSOデータ(qls.csv) から国内局のみ抽出して ja.csv に格納する
#                   get_ja.awk         2022/09/16 JH3DRN

BEGIN {
    FS = ","    #入力セパレータを , とする
    OFS= ","    #出力セパレータは無しとする
    }

{
for(i=0;i<1;i++)
    {   
    if( substr($1,0,2) == "JA"  || substr($1,0,2) == "JH" || substr($1,0,2) == "JR" || substr($1,0,2) == "JE" || substr($1,0,2) == "JF" || substr($1,0,2) == "JG" || substr($1,0,2) == "JI" || substr($1,0,2) == "JJ" || substr($1,0,2) == "JK" || substr($1,0,2) == "JL" || substr($1,0,2) == "JM" || substr($1,0,2) == "JN" || substr($1,0,2) == "JO" || substr($1,0,2) == "JP" || substr($1,0,2) == "JQ" || substr($1,0,2) == "JD" || substr($1,0,2) == "JS" || substr($1,0,2) == "7K" || substr($1,0,2) == "7L" || substr($1,0,2) == "7M" || substr($1,0,2) == "7N" || substr($1,0,2) == "8J" || substr($1,0,2) == "8N" )
        {
        print $0
        }
    else
    }
}

END {
}

# awk -f get_ja.awk qsl.csv > ja.csv
#-------------------------------------------------------------
  • QSOデータから海外局のみ抽出する
#-------------------------------------------------------------
# 全QSOデータ(qls.csv) から国内局のみ抽出して oversee.csv に格納する
#                             cut_ja.awk    2022/09/16 JH3DRN

BEGIN {
    FS = ","    #入力セパレータを , とする
    OFS= ","    #出力セパレータは無しとする
    }

{
for(i=0;i<1;i++)
     {  
    if( substr($1,0,2) == "JA"  || substr($1,0,2) == "JH" || substr($1,0,2) == "JR" || substr($1,0,2) == "JE" || substr($1,0,2) == "JF" || substr($1,0,2) == "JG" || substr($1,0,2) == "JI" || substr($1,0,2) == "JJ" || substr($1,0,2) == "JK" || substr($1,0,2) == "JL" || substr($1,0,2) == "JM" || substr($1,0,2) == "JN" || substr($1,0,2) == "JO" || substr($1,0,2) == "JP" || substr($1,0,2) == "JQ" || substr($1,0,2) == "JD" || substr($1,0,2) == "JS" || substr($1,0,2) == "7K" || substr($1,0,2) == "7L" || substr($1,0,2) == "7M" || substr($1,0,2) == "7N" || substr($1,0,2) == "8J" || substr($1,0,2) == "8N" )
         {
         }
        else  print $0
    }
}

END {
}

# awk -f cut_ja.awk qsl.csv > oversee.csv
#-------------------------------------------------------------

<同一局複数交信問題>

RUMlogNGではQSL印刷範囲に同一局が存在した場合(バンド違い)一枚のラベルに最大3~5交信までを印刷する事が出来る。(ラベルサイズによるらしい) さすがにそこまで実装出来ないので今回は見送ったが、QSLがソートされる事で”同一局”であることが認識出来るので、 2交信程度であれば1枚のQSLカードに2枚のラベルを貼る事とした。3QSO以上と言うのはまず無いのでこれで良しとする。

!修正! 

国内局を抽出するcut_ja.awk, get_ja.awk で 7J, 8J を入れていましたが、これらのコールは国外に含めた方が処理しやすいと思うのでスクリプトから削除しました、(2022/09/19)

!修正!

前述の様に考えたのですが、国内QSOだけ抽出する意味では、7J, 8J等も取り込んだ方が便利と考える方もおられると思いましたので元に戻しました。

!修正!

前の記事が見にくかったのでMarkdownで書いて見ました。まだうろ覚えですが多少は見やすくなったと思います

アンテナエレベーター 久々の降下

 前にも少し書いたが、アマチュア無線は中学2年で電話級を取って、同じ年に開局しそれから高校卒業までと30歳からの数年はある程度アクティブにオンエアしていたと思う。それから随分長くQRTしていて2020年9月に新しいアンテナを昔に建てたタワーに再設置する工事を近隣のアマチュア無線ショップにお願いした。その際、元々設置していたアンテナエレベーターに電動ウインチを追加で設置したのだが昨日からの台風報道があったので久々にアンテナ降下してみた。アンテナの様子は下記するが、問題はこのアンテナエレベーター。何がと言うと「手動で上昇、下降するのには結構な時間と体力が必要」な事。昔も一旦 下降したら上げるのが面倒で下げっぱなしにしていた事が多かった。アンテナエレベーターはクランクアップに比べてアンテナのみの昇降なので機構が単純でメンテも楽なのでお勧めなのだが、、、タワー建立をお考えでアンテナエレベーターをお考えの方に一言「是非、電動ウインチの設置を!」特に私の様にカムバック組にとって手動での上げ下げは無理?だと思う。