JH3DRN 趣味の徒然

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

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月に新しいアンテナを昔に建てたタワーに再設置する工事を近隣のアマチュア無線ショップにお願いした。その際、元々設置していたアンテナエレベーターに電動ウインチを追加で設置したのだが昨日からの台風報道があったので久々にアンテナ降下してみた。アンテナの様子は下記するが、問題はこのアンテナエレベーター。何がと言うと「手動で上昇、下降するのには結構な時間と体力が必要」な事。昔も一旦 下降したら上げるのが面倒で下げっぱなしにしていた事が多かった。アンテナエレベーターはクランクアップに比べてアンテナのみの昇降なので機構が単純でメンテも楽なのでお勧めなのだが、、、タワー建立をお考えでアンテナエレベーターをお考えの方に一言「是非、電動ウインチの設置を!」特に私の様にカムバック組にとって手動での上げ下げは無理?だと思う。

RUMlogNG 国産シールでQSLラベル印刷

 

 

前回の記事でRUMlogNGのADIFをCSVに変換する記事を書いたが、では今までどうしてQSL印刷をしてきたかと言うと、

 1.対応出来そうはラベルを探して "Avery 3484 (DIN A4, 105 X 37mm 2 x 8)"と言う

   ラベルを選択

 2.印刷するラベルは1シート当たり14枚とする(改ページがうまく行かない?)

 3.実際に使用するシートが切り込みが入っていない物を使う

 4.印刷した後で押切で切ってカードに貼る

実際に印刷したラベルがこんな感じ

 

これを14局毎に印刷して押切で切ってQSLカードに貼っていた。(とほほですな)

で、CSVファイルから印刷した結果がこんな感じでソートされて印刷されているので、順番にラベルを貼ってサインをして保管すればビューロに送る時の手間が省けて楽になりそう。これも大きな成果かも知れない。

実際にカードに貼ると既存の印刷が邪魔なので次回の注文時にはこの欄無しで頼もうと思う。

で、ラベル印刷に使ったソフトウェアは A-ONE さんの ”ラベル屋さん Ver 10"で 何とmac版も無料でダウンロード出来るので今回の出費はゼロ円。ボケ防止でも無いがこう言う作業は楽しい!! 今回使用したシールがこれ

 

 

R599 レストア:初めの一歩

少し前に往年の名器:R599をオークションで入手した。”要調整”と有ったのだが、6m,  2m フィルタ全部入りだったので迷わず落札してしまった。で、電源を入れるとどのバンドでもピーピーと発振している様な音がする。PLL系統かと思ったが、この機械は昔の物なので普通のスーバーヘテロダイン。うーんと思ったが、試しに電源基盤のボリュームを触ると発振が止まったり音が変わったりする。回路図を見るとこんな感じ。

どうも出力側に入っているC1が怪しいと思い、これを交換した。すると、何と普通に受信出来る様になった。ボリュームを触っても音に変化も無い。やっぱりコンデンサは怖いなあ

交換したコンデンサ

交換後のコンデンサと電源基板の様子。VRは取りあえず交換しないでおいた。

写真に写っている半固定抵抗を触ると音が変化した。交換後、触っても音は変化していない

レストア中の様子。奥にSGが見える(まだ使った事は無いけど)

しかし、うん十円のコンデンサ1個交換で復旧する受信機。これだからレストアは止められない。これでようやく普通に調整出来る状態になった。SGまで用意したので楽しんで調整したいと思っている。この機種に付いては日本語のサービスマニュアルや回路図が比較的容易に調達出来るのでレストアも比較的やりやすいと思う。

 

Mac のキーボード:HHKB LIte2 他

  Mac をお使いの方は皆様、どの様なキーボードをお使いなのだろうか? まあ、ノートタイプのPCであれば内蔵されているので問題ないのだろうが、キーボードを持たない機種(mini, Stdio, Pro)の場合の話ではあるが。

 最初はWindows用のものを使っていたが、やはりキー配列が違って使いづらいので純正のマジックキーボードを長い間使っていた。

純正なのでキー配列等の機能は問題ないのだが、タッチというかこのペタンとした打ちごごちと言うか、、、しっくりこない。それで、純正ではないがロジクールWindowsMac兼用のキーボードを購入してこれも暫く使っていた。Windowsと兼用できるので便利ではあるのだがこれもしっくりこない。

機能的には問題が無いのだが、どうもタイプミスが多くなった様。Windowsの機能はいらないので何か良いものが無いかと探していたが、昔 秋葉のジャンク屋で買ったPFU社の"HHKB LIte2"と言うキーボードがある事を思い出した。古いものでは有ったが、恐らく元々丈夫に作ってあるだろうし、キーに不具合もなさそうなので、2、3個買った覚えがある(多分¥1000円位)押し入れから引っ張りだして使ってみると、コンパクトで打鍵感覚は良いのだが、カット&ペーストに”コマンド”+C, ”コマンド”+V が使えなかったり、”Kana”キーを押しても漢字モードに切り替わらない等々、不具合が多くて『使えないなあ〜」と思っていた。

「まさかドライバなんて無いよな」と思いながらダメ元でサイトを検索すると、うん?

macOS 12 って、現行OSだよね。と言う事で、ダウンロードしてインストールしてみた。macOS Monterey はこれ以前のOSと違い、システム情報を書き込む事が出来ない領域が有ったりで、インストール時に警告が出ていたが、インストール自体は簡単に終了した。それで使ってみると、何と”コマンド”+C, V  ”Kana”キーでの日本語入力切り替えも可能となってしまった! これであれば使えると言う事でしばらく使ってみる事にした。このキーボードの上面に”USBダウンストリームポート”が付いていて(当然3.0は使えないが)USBメモリや、有線マウス、EESDRの E-Corder なども接続する事ができる。大した機能ではないが、場合によっては便利かも知れない。

このHHKB Lite2 あと1、2台は在庫があるのでしばらくは困らないだろうが、新品で買うならこれかなと思っている。有線のみだが、キーの重さが変えられたり、基本機能が充実している所が良いと思っている。

Mac を主に使う人間にとって、使用するキーボードはやはり専用にするのがベストだと思う。Windowsと兼用にすると何かと使いづらいと言うのが今まで散々pcを使ってきた私の感想である。”1台のキーボードが3台のPCで使える”と言った無線機能を持ったキーボードはWindos PCのみで使うならメリットはあると思う。

 無線機能を持ったキーボード&有線+無線I/F と言った使い方もしてきたが、やはり有線 I/F がしっくり来る。最近のマジックキーボードはメンテンスモードで起動しても認識してくれるが、サードパーティー製ではそうもいかない。色々な電波が行き交う我が家では無線の不安定性にイライラする事が多くて、そんな関係もあっての”キーボード有線派”に繋がっているのかも知れない。因みに "HHKB" とは、"Happy Hacking Kryboard" の略称との事。

 

 

 

ExpertSDR3 0.13.0 alpha 正式リリース

ExpertSDR3 0.13.0 alpha が公式ホームページで公開された。実は、7月中旬に開発メンバーかテスターメンバーがフェイスブックで一瞬、ダウンロードページを公開したことがあって、私は偶然そのページを見てダウンロードし、0.13.0を使っていたのである。まあ、公式で公表が無い限り公開するつもりが無かったので、今日書く事にした。バイナリのサイズや画面は前にDWした物と変わりはない。後で画面をはるが、12と大きく違うのは RX1, RX2 における使用しているアンテナの表示。12では表示されていなかったが、13では RX.A2 TX.A2 の様に表示でされる。それで分かった事がある。それは、RX2 の受信アンテナはRX1を継承すると言う事である。例えば、RX1=50MHz:アンテナ3に6m,RX2=21MHz:アンテナ2(14〜28トライバンド)を接続したとすると、RX2の送信アンテナはアンテナ2:トライバンダーだが、受信アンテナはアンテナ3:6mが設定されると言う事。これがバグなのか仕様なのかは不明だが、明確に表示される事は有り難い事だと思う。その他リリースノートを見るとかなり大きな改良があった模様なので、心して使って行きたいと思う。