Hauptmenü
Log -
Für den Datenaustausch zwischen Amateurfunkanwendungen gibt es mehrere Formate.
Allen aber gemeinsam ist, dass es sich um simple Textdateien handelt. Unterschiedlich ist nur die Aufbereitung der Daten.
Bei Cabrillo, CSV usw. ist die Reihenfolge der Daten fest vorgegeben, bei ADIF nicht.
ADIF weist allen Daten einen Namen zu und übermittelt auch die Länge der Daten. Dadurch ist dieses Format aufwändiger, aber auch flexibler als andere.
Am Beispiel eines Programms soll gezeigt werden, wie Daten aus dem eigenen Log in einer SQLite-
Das Programm
; Log -
EnableExplicit
Global iDB
Define int1, int2, int3
Define.s str1, str2, str3, sMode, sPower, sMsg, sRecSce
UseSQLiteDatabase()
iDB = OpenDatabase(#PB_Any, "C:DK1IO.db3", "", "")
DeleteFile("C:DK1IO.ADIF")
OpenFile(0, "C:UsersIO.ADIF")
WriteStringN(0, "<ADIF_VER:5>2.2.7")
WriteStringN(0, "<EQSL_USER:5>DK1IO")
WriteStringN(0, "<EQSL_PSWD:9>XXXXXXXXX")
WriteStringN(0, "<PROGRAMID:9>Log DK1IO")
WriteStringN(0, "<EOH>")
sRecSce = "SELECT RowID, Datum, UTC, Rufzeichen, Band, Mode, RSTs FROM Tab_Log WHERE eQSL ISNULL"
DatabaseUpdate(iDB, "BEGIN TRANSACTION")
DatabaseQuery(iDB, sRecSce)
While NextDatabaseRow(iDB)
str1 = GetDatabaseString(iDB, DatabaseColumnIndex(iDB, "Datum"))
str1 = Left(str1, 4) + Mid(str1, 6, 2) + Right(str1, 2)
str2 + "<QSO_DATE:8>" + str1
str1 = GetDatabaseString(iDB, DatabaseColumnIndex(iDB, "UTC"))
str2 + "<TIME_ON:4>" + str1
str1 = GetDatabaseString(iDB, DatabaseColumnIndex(iDB, "Rufzeichen"))
str2 + "<CALL:" + Str(Len(str1)) + ">" + str1
str1 = GetDatabaseString(iDB, DatabaseColumnIndex(iDB, "Band"))
str2 + "<BAND:" + Str(Len(str1) + 1) + ">" + str1 + "m"
str1 = GetDatabaseString(iDB, DatabaseColumnIndex(iDB, "Mode"))
sMode = str1
If Left(str1, 4) = "BPSK" : str1 = Right(str1, Len(str1) -
str2 + "<MODE:" + Str(Len(str1)) + ">" + str1
str1 = GetDatabaseString(iDB, DatabaseColumnIndex(iDB, "RSTs"))
str2 + "<RST_SENT:" + Str(Len(str1)) + ">" + str1
sMsg = "Tnx QSO, 73"
str2 + "<QSLMSG:" + Str(Len(sMsg)) + ">" + sMsg
str2 + "<EOR>"
WriteStringN(0, str2)
int1 = GetDatabaseQuad(iDB, 0)
str2 = "" : sMode = "" : sMsg = ""
DatabaseUpdate(iDB, "UPDATE Tab_Log SET eQSL = -
Wend
DatabaseUpdate(iDB, "END TRANSACTION")
FinishDatabaseQuery(iDB)
CloseFile(0)
CloseDatabase(iDB)
MessageRequester("Log -
ADIF -
Hier nun ein Beispiel, wie eine ADIF-
Das Programm
ADIF$ = OpenFileRequester("ADIF-
str$ = InputRequester("ADIF-
Define i, j, k = 1, i$, j$, k$, str1.s, Query$, Dat$, Rufz$, Band$, Mode$, RSTr$, RSTs$, Name$, QTH$, Loc$, DXCC$, EigRufz$, EETPA$, MP$, ELoc$, Px$, Op$
OpenFile(0, ADIF$)
Repeat
str1 = ReadString(0)
Until UCase(str1) = "<EOH>"
While Not Eof(0)
str1 = ""
Repeat
str1 + ReadString(0)
Until UCase(Right(str1, 5)) = "<EOR>"
Debug str1
Repeat
i = FindString(str1, "<", k)
j = FindString(str1, ":", i)
If Not j : Break : EndIf
k = FindString(str1, ">", j)
i$ = Mid(str1, i + 1, j -
j$ = Mid(str1, j + 1, k -
k$ = Mid(str1, k + 1, Val(j$))
Debug i$
Select UCase(i$)
Case "QSO_DATE"
Dat$ = Left(k$, 4) + "-
Case "TIME_OFF"
UTC$ = k$
Case "TIME_ON"
UTC$ = k$
Case "CALL"
Rufz$ = k$
Case "CALLCOMMENT"
Op$ = k$
Case "BAND"
Band$ = Left(k$, Len(k$) -
Case "MODE"
Mode$ = k$
If Left(k$, 3) = "PSK" : Mode$ = "B" + k$ : EndIf
Case "RST_RCVD"
RSTr$ = k$
Case "RST_SENT"
RSTs$ = k$
Case "NAME"
Name$ = k$
Case "QTH"
QTH$ = k$
Case "GRIDSQUARE"
Loc$ = k$
Case "DXCC"
DXCC$ = k$
Case "APP_Log_DK1IO_EigRufz"
EigRufz$ = k$
Case "APP_Log_DK1IO_EETPA"
EETPA$ = k$
Case "APP_Log_DK1IO_MP"
MP$ = k$
Case "APP_Log_DK1IO_ELoc"
ELoc$ = k$
Case "APP_Log_DK1IO_Px"
Px$ = k$
EndSelect
ForEver
Query$ = "INSERT INTO '" + str$ + "' (Datum, UTC, Rufzeichen, Band, Mode, RSTr, RSTs, Name, QTH, Loc, DXCC, EigRufz, EETPA, MP, ELoc, Px, Op) "
Query$ + "VALUES('" + Dat$ + "','" + UTC$ + "','" + Rufz$ + "','" + Band$ + "','" + Mode$ + "','"
Query$ + RSTr$ + "','" + RSTs$ + "','" + Name$ + "','" + QTH$ + "','" + Loc$ + "'," + DXCC$ + ",'" + EigRufz$ + "','" + EETPA$ + "','" + MP$ + "','" + ELoc$ + "','" + Px$ + "','" + Op$ + "')"
DatabaseUpdate(iDB, Query$)
k = 1
Dat$ = "" : UTC$ = "" : Rufz$ = "" : Band$ = "" : Mode$ = "" : RSTr$ = "" : RSTs$ = "" : Name$ = "" : QTH$ = "" : Loc$ = "" : DXCC$ = ""
Wend