Turbo HAMLOG/Win 活用相談室


新着表示
タイトル
記事No
投稿日
投稿者
参照先
Re: 再びADIFファイルのFT4の記述について
27660
2024/12/02(Mon) 20:35:22
JI1FGX/DU9

HAMLOGの話から離れしまいますが、今日一日、JTDXやWSJTXから月単位のADIFファイルを作るプログラムを書いていました。浜田さんへの負担が少なるように(笑)

プログラムはPythonというプログラミング言語で書いています。

動作確認をしたのはWindows11のパソコンですがpython-3.13.0-amd64をダウンロードしてインストールしておく必要があります。

プログラムの動作としては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_data}" # 簡単な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) # 少し待ってから次のデータを受信




' プログラムを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

【2024/12/02(Mon) 22:03:15 投稿者により修正されました。】
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: 再びADIFファイルのFT4の記述について
27659
2024/12/02(Mon) 20:00:04
JI1FGX/DU9

こんばんは

> JI1FGXさんはHAMLOGの複合条件検索から出力されているのではないのでしょうか?

はい複合条件検索を使って出力したものをそのままメールでマネージャーに送っています。

> また、浜田さんからのコメントのとおり、QSLカード印刷からのADIF出力でSUBMODEを出力できるのでQSLカード印刷から出力したADIFを使えば良いと思います。
> ブログ記事を書いたので参考にしてください。
> https://ja4joe.livedoor.blog/archives/27255046.html

浜田さんが書いてくださっているスクリプトをどのようにQSLカード印刷で使うのか理解していません。あどでブログを拝見しますね。

> 今回のJI1FGXさんのコメントは「QSLカード印刷からのADIF出力は難しいから、複合条件検索からのADIF出力でADIFの仕様どおりにSUBMODEに対応すべきだ」というコメントでしょうか?
> 確かにそのほうが親切だと思いますが。

あつかましいお願いだとは思いますがマネージャーに毎月手間をかけさせるのも申し訳なく思っています。

> あと、後学のため教えていただきたいのですが、MODE=FT4 のADIFを使って問題が起こるサービスというのは何でしょう?
> eQSL、LoTWはMODE=FT4のADIFをアップロードしても問題ありません。

そこなんですよ。私もGridTracker2を使ってLoTW,Clublog,eQSLにアップロードしていますがFT4で問題なかったのでマネージャーから指摘されるまで気が付きませんでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 再びADIFファイルのFT4の記述について
27658
2024/12/02(Mon) 19:07:43
JK2XXK/Taka
FT8はMODEの位置付けです。
FT4はMFSKのSUBMODEという位置付けです。
なのでWSJT-Xの挙動は正常だと思われます。

SUBMODEについては、こちらをご参照願います。
https://adif.org/315/ADIF_315.htm#Submode_Enumeration

> > 本来あるべきファイル:
> > 20241103 0902 RV9UAF
> > ;24.921
> > 12M -10 -11 MFSK <
> > SUBMODE:3>FT4
> > Asiatic Russia 15
> >
> >
> > QSLマネージャーはADIF Masterを使って「正しく変換済み」との事ですが仕様違反を修正して
> > 国際的に通用する仕様にしてほしいです。
>
> WSJT-Xが吐き出すADIFを見ると、FT8 はありますが、submodeタグがありません。
> これって、私のWSJT-Xの設定が悪いのでしょうか?
> それとも、WSJT-Xが国際的に通用していない??
>
> 追記
> FT4で交信した時のWSJT-XのADIFを見たら、確かに
> MFSK FT4
> となっていました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 再びADIFファイルのFT4の記述について
27657
2024/12/02(Mon) 07:29:58
JA4JOE 尾中
No.27447にも同じコメントをしましたが、HAMLOGの複合条件検索からのADIF出力では、FT4は FT4 になると思います。
私の環境で、複合条件検索した出力は FT4 になります。やってみました。
9M2COD20241102082328.18210mFT4
-02-09YNorshafarizal Abd RaWest Malaysia, Seremban
OJ02

JI1FGXさんはHAMLOGの複合条件検索から出力されているのではないのでしょうか?

また、浜田さんからのコメントのとおり、QSLカード印刷からのADIF出力でSUBMODEを出力できるのでQSLカード印刷から出力したADIFを使えば良いと思います。
ブログ記事を書いたので参考にしてください。
https://ja4joe.livedoor.blog/archives/27255046.html

今回のJI1FGXさんのコメントは「QSLカード印刷からのADIF出力は難しいから、複合条件検索からのADIF出力でADIFの仕様どおりにSUBMODEに対応すべきだ」というコメントでしょうか?
確かにそのほうが親切だと思いますが。

あと、後学のため教えていただきたいのですが、MODE=FT4 のADIFを使って問題が起こるサービスというのは何でしょう?
eQSL、LoTWはMODE=FT4のADIFをアップロードしても問題ありません。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 再びADIFファイルのFT4の記述について
27656
2024/12/01(Sun) 21:53:17
JG1MOU浜田
相談室書き込みですと変なふうに改行されてますが、以下の定義ファイルでWSJT-Xと
同じようなADIFを出力することができました。
ただ、HAMLOGの仕様上 qso_date_off や qso_time_off は省略しています。
; ------- ADIF出力用の定義ファイル by JG1MOU -----------
; 印刷イメージは機能しない。試し印刷も機能しない。
; #ADIF命令では、次のようにフォルダ指定が可能
; #Adif="D:\Adif_Out.adi"
; #Adif ←フォルダ指定が無ければHamlogフォルダに出力
; #AdifJ ←JARL非会員との交信は出力しない(他は#Adifと同じ)
; -------------------------------------------------------
#Adif="D:\!nW.adi" ; 日付をファイル名にして出力する(D:\2024-09-26.adi)
#Mov $$C="JB1XYZ" ; 【要修正】自局コールサイン
#Mov $$G="PC98" ; 【要修正】自局グリッドロケーター
#Mark="" ; QSL発行済みマークを書き込まない
#Jst2Utc ; JSTはUTCに変換する

#Print 0,0,"!cp!GL"
? Data7 "FT4" ; FT4の場合
#Print 0,0,"MFSKFT4"
? Data7! "FT4" ; FT4以外の場合
#Print 0,0,"!MD"
#Print 0,0,"!HR!MR!DY!DM!DD!TH!TM!Bt!Fr!$$C!$$G"
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 再びADIFファイルのFT4の記述について
27655
2024/12/01(Sun) 20:48:17
JG1MOU浜田
> 本来あるべきファイル:
> 20241103 0902 RV9UAF
> ;24.921
> 12M -10 -11 MFSK <
> SUBMODE:3>FT4
> Asiatic Russia 15
>
>
> QSLマネージャーはADIF Masterを使って「正しく変換済み」との事ですが仕様違反を修正して
> 国際的に通用する仕様にしてほしいです。

WSJT-Xが吐き出すADIFを見ると、FT8 はありますが、submodeタグがありません。
これって、私のWSJT-Xの設定が悪いのでしょうか?
それとも、WSJT-Xが国際的に通用していない??

追記
FT4で交信した時のWSJT-XのADIFを見たら、確かに
MFSK FT4
となっていました。

【2024/12/01(Sun) 21:10:51 投稿者により修正されました。】
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: QSLカード印刷について
27654
2024/12/01(Sun) 20:05:23
JA0CCL宮川
> > Jpg×250,1100,400,200,"C:User\HIDAMORIO\Pictures\NikonTransfer2\009\DSCN001.jpg"
>
> #Jpg 250,1100,400,200,"C:\Users\HIDAMORIO\Pictures\NikonTransfer2\009\DSCN001.jpg"
>
> これでどうでしょう?
> 私も詳しくないので、間違っているかもしれません。
> 画像ファイルのフルパスが不明な時は、その画像ファイルのショートカットを
> 作り、プロパティを開くと判明します。

横から失礼します。
jk2civさん コールサインの後ろにお名前をお願いできますでしょうか。

小川さんの書かれた構文で表示できると思いますが。
civさんの投稿を見てパッと気が付くのが、構文の最初の Jpg×250・・・ですが、JPEG画像ファイルをQSLに表示させるにはここが違いますよね。

ヘルプのオプション⇒QSLカードの印刷⇒QSLの定義に「JPEGイメージの印刷」という項目がありますからじっくりご覧になってくださいね。

(以下当該項目の最初だけのコピー)
#Jpg 
デジカメ写真など、JPEG画像ファイル(*.jpg)を読み込み、印刷します。次のいずれかの構文で指定します。
 #Jpg x1, y1, Width, Height, "Photo1.jpg"
 #Jpg x1, y1, Width, 0, "Photo1.jpg"
 #Jpg x1, y1, 0, Height, "Photo1.jpg"

CJVさんの構文との違いは 最初が「#Jpg」 になっていないことと直後の×がよけいだということですよね。ヘルプの記載をじっくりご覧いただいて修正してみてください。
 
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: QSLカード印刷について
27653
2024/12/01(Sun) 19:23:30
JF0NFW / 栗林
7M2DTX 小川 OMのご回答で良いかと思います
JPG表示の命令文の構文ミスですね
 よって、タイプミスを無くすためには、QSL定義ファイルの編集において
 #Jpg 実行したい行の先頭に カーソルを合わせ
(1) 命令(C)をクリック
(2) JPEGイメージの印刷
(3) 写真が保存されているホルダーから表示する写真をクリック(選択)し[ 開く ]クリックで
  #Jpgx1,y1,Width,Height,C:\Users\HIDAMORIO\Pictures\NikonTransfer2\009\DSCN001.jpg"
  上記のように定義文が作成されるので x1,y1,Width,Height, の部分を250,1100,400, 200, と
  タイプすれば、ファイルのパス転記ミスも無くせると思いますが・・・いかがですか?
(4) また、作成後、(1)編集(E)  (2)印刷イメージ(I) で印刷時のイメージ見られますので
  確認、修正が楽にできると思います

※現在HAMLOGの最新バージョンは5.44です バージョンアップされてはいかがですか?
pagetop
タイトル
記事No
投稿日
投稿者

Re: QSLカード印刷について
27652
2024/12/01(Sun) 16:00:22
7M2DTX 小川
> Jpg×250,1100,400,200,"C:User\HIDAMORIO\Pictures\NikonTransfer2\009\DSCN001.jpg"

#Jpg 250,1100,400,200,"C:\Users\HIDAMORIO\Pictures\NikonTransfer2\009\DSCN001.jpg"

これでどうでしょう?
私も詳しくないので、間違っているかもしれません。
画像ファイルのフルパスが不明な時は、その画像ファイルのショートカットを
作り、プロパティを開くと判明します。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

QSLカード印刷について
27651
2024/12/01(Sun) 14:44:14
jk2cjy
Turbo HAMULOG/win ver5.41aを使っています。カード印刷は普通に出来るのですが、自分で
写した写真をQSLカード印刷の画面の中に取り込む事が出来ません。写した写真はピクチャーと言うホルダーの中のNikonTransfer2というホルダーに入っています。
QSLカード印刷の編集をクリック、この画面の中に次のように入力すると
Jpg×250,1100,400,200,"C:User\HIDAMORIO\Pictures\NikonTransfer2\009\DSCN001.jpg"
このファイルは開けませんと表示されます。どのように入力すれば、保存されている写真を引き出す事が出来ますか?どなたか教えていただけませんか。よろしくお願いいたします。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop