JI1FGX/DU9 フィリピンミンダナオ島 アマチュア無線日記 IOTA OC-130
English Japanese



昨日までのアクセス
はじめに リリー日記
ミンダナオでの生活日記

24/12/11  DXCCリストのCVS化ソフト
24/12/05 JTDXから国別集計
24/12/02 JTDXから1ヶ月分のADIF
ファイルを作るプログラム
24/11/24 CwGetとCwTypeの設定
24/11/24 WWDXコンテスト
24/11/21 CQ Ham Radio
24/11/20 コールサインの割り当てIOTA番号
24/11/13 IOTA100アワード到着
24/11/12 LoTW WAZとDXCC
24/11/04 PLDT光インターネット
24/10/30 50MHzFT8のパイルアップ
24/10/28 Camiguin Is Crowdfunding
24/10/26 50MHz八木給電部
24/10/21 MMTTYでRTTY
24/10/19 UV-5Kのファームウェア
24/10/17 ドローンで見たアンテナ群
24/10/16 7MHzアンテナポール
24/10/15 3.5MHzツェップアンテナ
24/10/14 Hexbeam 購入計画
24/10/13 24MHzダイポール追加
24/10/13 50MHz八木修理完了
50MHzFT8初パイル
24/10/12 24MHzのアンテナ制作
24/10/09 Gmailのトラブル
24/10/09 シャックの様子
24/10/07 JO1CRA/7 AS-206
24/10/05 3D2Vロツマ島 IOC-060
24/10/01 カミギン島予告ビデオ
24/09/30 ウルグアイ
24/09/29 50MHzアンテナ設置
24/09/25 呼ぶ側のパイルアップ
24/09/19 IOTA100アワード
24/09/18 IOTAの申請
24/09/12 DXCCの申請
24/09/11 FT8でKH8Tと交信
24/09/08 50MHz八木アンテナ
24/08/28 FT8でパイルアップ
24/08/07 FT8EUからパイルアップ
24/07/19 SvalbardのJW/WE9G
24/06/27 無線室のエアコン購入
24/05/28 アンテナ切り替え器
24/05/27 MFJ-259B修理
24/05/10 3バンドアンテナ完成
24/05/03 7MHzダイポール
24/04/30 7MHz国内の様子
24/04/29 再開局プロジェクト
24/04/04 FTDX3000の修理
24/03/21 NTCカガヤンへ
JTDXから1ヶ月分のADIFファイルを作るプログラム (2024/12/02) 
QSLマネージャーからTurboHamlogのADIFファイルのFT4の記述が仕様違反だという指摘を受けました
 FT4のADIFでの正しい扱いは、 <MODE:4>MFSK <SUBMODE:3>FT4 です

JTDX、WSJTXのADIFファイルを調べたところ仕様通りであることが分かりました。
そこでJTDXから月ごとのADIFファイルを自動的に作るプログラムを作りました。
log_reciver_Ver2.1.zipのダウンロードはこちら
プログラムはPython(パイソン)というプログラミング言語で書いています。
動作確認をしたのはWindows11のパソコンですがpython-3.13.0-amd64をダウンロードしてインストールしておく必要があります。


ファイルはlog receiver_Ver2.1.pyとして保存します。
私はC:\Users\kueno\log_receiver_Ver2.1.pyに保存しました

プログラムの動作はJTDXからUDPで受け取ったADIFデーターをそのまま指定したフォルダーに書きだすだけです。
月単位のファイルの書き出しのタイミングは0時UTCまたはJSTです。
# ------ (log_receiver_Ver2.1.py)
# JI1FGX/DU9 Kouichi Ueno
# 2024/12/02
# ディレクトリは C:\Logs

import os
import socket
import time
from datetime import datetime, timedelta

# UDPの設定
UDP_IP = "127.0.0.1" # JTDXが送信するIPアドレス
UDP_PORT = 2333 # JTDXが使用するポート番号

# ADIFファイルの保存先
LOGS_FOLDER = "C:\\Logs" # Logsフォルダのパス

# Logsフォルダが存在しない場合は作成
if not os.path.exists(LOGS_FOLDER):
os.makedirs(LOGS_FOLDER)

# タイムゾーンの設定
TIMEZONE = "UTC" # "UTC" または "JST" を指定
UTC_OFFSET = timedelta(hours=9) if TIMEZONE == "JST" else timedelta(hours=0)

# 現在の月に基づいてファイル名を生成
def get_adif_filename():
"""現在の月に基づいてADIFファイル名を取得"""
now = datetime.utcnow() + UTC_OFFSET # タイムゾーンを考慮した現在時刻
return os.path.join(LOGS_FOLDER, f"real_time_log_{now.year}_{now.month:02d}.adi")

# UDPソケットを作成
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))

def write_to_adif(data, file):
"""ADIFファイルにデータを書き込む"""
with open(file, 'a') as f:
f.write(data)
f.write("\n") # 各QSOを新しい行で区切り

def process_qso(data):
"""受け取ったデータをADIFフォーマットに変換する"""
# ここでは仮にJSON形式のデータが送られてくると仮定しています
# GridTracker2が送信するデータ形式に合わせて修正する必要があります
qso_data = data.decode('utf-8') # 文字列としてデコード
adif_data = f"<QSO>{qso_data}</QSO>" # 簡単なADIF形式に変換
return adif_data

print(f"Listening for UDP packets on {UDP_IP}:{UDP_PORT}...")

current_file = get_adif_filename() # 初期ファイル名を設定
last_checked_month = (datetime.utcnow() + UTC_OFFSET).month # 最後にチェックした月を保持

while True:
data, addr = sock.recvfrom(1024) # データを受信
if data:
print(f"Received message from {addr}: {data}")
adif_data = process_qso(data)

# 現在の月が変わった場合、ファイル名を更新
current_month = (datetime.utcnow() + UTC_OFFSET).month
if current_month != last_checked_month:
last_checked_month = current_month # 月を更新
current_file = get_adif_filename() # 新しい月のファイル名を取得
print(f"Switched to new file: {current_file}")

# ADIFファイルにデータを書き込む
write_to_adif(adif_data, current_file)

time.sleep(1) # 少し待ってから次のデータを受信

以下のvbsスクリプトはWindowsを起動したときにバックグラウンドでlog_receiver_Ver2.1.pyが
起動するようにするものです。出来たファイルtart_log_receiver.vbsまたはショートカットをスタートアップフォルダーに置きます。スタートアップフォルダーは WindowsKey+Rに「shell:startup」と入力するとフォルダーが開きます
私はstart_log_receiver.vbsとしてvbsファイルを保存しました。

 

' プログラムをWindowsを起動したときにバックグラウンドで動かすためのスクリプト
'----------(start_log_receiver.vbs)
' start_log_receiver.vbsまたはショートカットをスタートアップフォルダーに置く
' スタートアップフォルダーは WindowsKey+Rに「shell:startup」と入力するとフォルダーが開きます

Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Users\kueno\AppData\Local\Programs\Python\Python313\pythonw.exe"" _
""C:\Users\kueno\log_receiver_Ver2.1.py""", 0, False
 スタートアップフォルダーは WindowsKey+Rに「shell:startup」と入力するとフォルダーが開きます

start_log_receiver.vbsのショートカットを入れておきました

 最後にJTDXの設定のレポーティングを開きます
第2UDPサーバーは 127.0.0.1
UDPポートを2333
に設定します
 パソコンを再起動してタスクマネージャーでpyhtonwを探します
これでpyhtonwが有れば正常に起動できています。
 実際にFT8とFT4で交信すると更新日時が変わりサイズが増えていきます


これがFT4で交信した時のADIFファイルの内容
仕様書通りになっています
 <QSO><BAND:3>15m <STATION_CALLSIGN:10>JI1FGX/DU9 <MY_GRIDSQUARE:6>PJ18wf <CALL:6>JA1JAN <FREQ:9>21.142200 <MODE:4>MFSK<SUBMODE:3>FT4 <QSO_DATE:8>20241202 <TIME_ON:6>092615 <QSO_DATE_OFF:8>20241202 <TIME_OFF:6>092639 <RST_SENT:3>-15 <RST_RCVD:3>-15 <GRIDSQUARE:4>PM95 <EOR></QSO>
<QSO><BAND:3>15m <STATION_CALLSIGN:10>JI1FGX/DU9 <MY_GRIDSQUARE:6>PJ18wf <CALL:6>JA2ATE <FREQ:9>21.142200 <MODE:4>MFSK <SUBMODE:3>FT4 <QSO_DATE:8>20241202 <TIME_ON:6>093100 <QSO_DATE_OFF:8>20241202 <TIME_OFF:6>093129 <RST_SENT:3>+07 <RST_RCVD:3>-01 <GRIDSQUARE:4>PM85 <EOR></QSO>

 ちなみにChatGPTが沢山手助けしてくれたことは内緒
2024年11月24日  2024年12月05日