locked Re: ADIF log scan saying all needed


Dani YO5LD
 

Hello Stephen,

That's quite a workaround, which is strange that it's needed..
I have two days before I go QRT because of job/studies, I hope this will be fixed when I'm back to chasing DXCC and WAS..
Thanks,
Dani
YO5LD

2017-12-31 6:20 GMT+02:00 <stephen.smith@...>:

I have figured out a workaround for this, although I still don't know what is causing it.  There are two parts to the work around.  One involves altering a downloaded LoTW ADIF file to where JTAlertX is happy with it. The other involves some a subtle use case that will get JTAlertX to actually "Scan Log and Rebuild" the ADIF file.  It appears that several new fields are required in order to parse the Wanted States correctly. For example, the tags <FREQ_RX:7>3.57465<RST_RCVD:3>5NN<RST_SENT:3>5NN<QSO_COMPLETE:1>Y (and appropriate values) are all required or it skips the QSO.  There also cannot be comments after the STATE line, although comments on other lines seem to be OK.  I wrote a simple python script to adjust the LoTW ADIF file shown below (alter accordingly for your file and path)....

# -*- coding: utf-8 -*-
 
import os
fname=os.path.normpath("C:/Users/stephen/Desktop/lotwreport31Dec2017.adi")
foutname=os.path.normpath("C:/Users/stephen/Desktop/jtalertlog31Dec2017.adi")
 
out = open(foutname, "w")
# Write out a header to match a new JTAlertX log
out.write("<ADIF_VER:5>2.2.7\n<ProgramID:8>JTAlertX\n<ProgramVersion:6>2.10.7\n<APP_JTAlertX_Created:23>2016/12/20 20:33:58 UTC\n<EOH>\n")
 
eoh = 0 # to mark when we have scanned in the end of the header
with open(fname, "r") as f:
    for line in iter(f):
        # Skip lines until eoh is reached
        if not eoh:     
            if '<eoh>' in line:
                eoh = 1
        else:
            #  Make the RX freq match the freq as FREQ_RX is required
            if '<FREQ:' in line:
                out.write(line)
                out.write(line.replace('<FREQ:','<FREQ_RX:'))
            elif '<STATE:' in line:
                out.write(line.split(sep='/')[0]) # State cannot have // comments
            elif not '<' in line:
                print('Removed blank line') #blank lines not allowed?
            # Add extra lines JTAlertX requires now. RSTs are dummy 5NNs for now
            elif '<eor' in line:
                out.write("<RST_RCVD:3>5NN\n<RST_SENT:3>5NN\n<QSO_COMPLETE:1>Y\n<EOR>\n")
            elif '<APP_LoTW_EOF>' in line:
                out.write("\n") #blank lines allowed at end of file
            else:
                out.write(line)
f.close()
out.close()

After you have created the file, here is how you get JTAlertX to scan it (I know for a fact that it used to scan just fine, but my installation won't now unless I do this). First, open the well-adjusted ADIF file in WordPad (trust me, we are using this to cache the file as we are about to overwrite it). Click on Setting, Manage Settings, Logging, Standard ADIF File. Click "Create New" and select the well-adjusted ADIF file. Click Save.  A dialog will open that says Do you want to replace it.  Click Yes, but do not click "OK" in the next dialog box that comes up. Next, open Windows Explorer, navigate to C:\Users\<username>\AppData\Local\HamApps\KK4TJP\logs\JTAlertX and delete the *.sqlite file that is in the directory. Go to the WordPad window that still has the well-adjusted ADIF file cached and click save.  Now, click the "OK" in the Log File dialog box from earlier. JTAlertX will rebuild the sqlite file now.  Don't get in a hurry as this could take a minute.  My sqlite file was on the order of 600k when it was finished.
Now in the JTAlertX setting window, go to Scan Log and Rebuild and click Scan All and it will parse the file.  If it seems like it works, hit OK-Apply.

Once again, this is just a work around. I'm hoping a much more straightforward solution is easily obtainable.

73,
Stephen (KK4TJP)


Join Support@HamApps.groups.io to automatically receive all group messages.