 |
pavi
0.0
Map Path Viewer
|
|
Go to the documentation of this file.
10 #INCLUDE ONCE "Gir/GLib-2.0.bi"
13 #INCLUDE ONCE "datetime.bi"
40 CONSTRUCTOR NMEA(
BYVAL Par
AS TrackLoader
PTR)
42 VAR i = 0, tind = 28, t = @.Buff[0], s =
CAST(
ZSTRING PTR, t), check = 0
45 SELECT CASE AS CONST t[i]
47 CASE 1 TO 31 : t[i] = 0
48 CASE ASC(
",") : t[i] = 0 : Tok(tind) = @t[i+1] : tind += 1
50 IF check <>
VALINT(
"&h" &
LEFT(S[i+1], 2)) _
51 THEN Enr += 1 :
?"invalid checksum (" & Lin &
"): &h";
HEX(check, 2);
" <> &h";
LEFT(S[i+1], 2)
55 FOR j
AS INTEGER = i+1
TO i+72
56 SELECT CASE AS CONST t[j]
58 END SELECT : check
XOR= t[j]
60 IF t[i+3] =
ASC(
"G")
THEN
61 IF tind <> 28
THEN Enr += 1 :
?"RMC check failed (" & Lin &
") " & tind
63 IF Lin
THEN Eval(@Tok(0))
65 IF tind <> 15
THEN tind = 15 : Enr += 1 :
?"GGA check failed (" & Lin &
") " & tind
71 LOOP : .Byt = i :
IF Lin
THEN Eval(@Tok(0))
72 .Siz = Dat -
CAST(
ANY PTR, .Buff)
87 FUNCTION NMEA.Val_(
BYVAL S
AS ZSTRING PTR)
AS float
88 IF S[0] = 0
THEN Enr += 1 :
?"missing number (" & Lin &
")" :
RETURN NaN
89 RETURN g_ascii_strtod(*S, NULL)
103 FUNCTION NMEA.DaTi(
BYVAL S
AS ZSTRING PTR PTR)
AS DOUBLE
104 IF 6 <>
LEN(*S[1])
ORELSE _
105 6 <>
LEN(*S[24])
THEN Enr += 1 :
?"invalid date/time (" & Lin &
")" :
RETURN NaN
108 VALINT(
MID(*S[24], 5, 2)) + 2000 _
109 ,
VALINT(
MID(*S[24], 3, 2)) _
110 ,
VALINT(
MID(*S[24], 1, 2)) ) _
112 VALINT(
MID(*S[1], 1, 2)) _
113 ,
VALINT(
MID(*S[1], 3, 2)) _
114 ,
VALINT(
MID(*S[1], 5, 2)) )
130 FUNCTION NMEA.LaLo(
BYVAL S
AS ZSTRING PTR PTR)
AS DOUBLE
131 VAR p =
INSTR(*S[0],
".") - 2, f = NaN
132 SELECT CASE AS CONST PEEK(
UBYTE, S[1])
133 CASE ASC(
"N"),
ASC(
"E") :
IF p > 1
THEN f = Deg2Rad
134 CASE ASC(
"S"),
ASC(
"W") :
IF p > 1
THEN f = -Deg2Rad
136 RETURN f * (g_ascii_strtod(
MID(*S[0], p), NULL) / 60 +
VALINT(
LEFT(*S[0], p-1)))
150 FUNCTION NMEA.Eval(
BYVAL S
AS ZSTRING PTR PTR)
AS TrP
PTR
151 IF *S[2] <> *S[18]
ORELSE _
152 *S[3] <> *S[19]
ORELSE _
153 *S[4] <> *S[20]
ORELSE _
154 *S[5] <> *S[21]
THEN Enr += 1 :
?"location mismatch (" & Lin &
")" :
RETURN Dat
155 VAR r =
NEW(Dat) TrP ( _
160 ,
Val_(*S[22]) * 1.852 _
FUNCTION_AS_TrP_PTR Eval(BYVAL_AS_ZSTRING_PTR_PTR)
Evaluate the lines data.
Header code for NMEA parser.
Header for TrackLoader,loading track files.
NMEA(BYVAL_AS_TrackLoader_PTR)
CTOR parsing the context of a *.NMEA file.
FUNCTION_AS_DOUBLE LaLo(BYVAL_AS_ZSTRING_PTR_PTR)
Evaluate longitude or latitude from text.
FUNCTION_AS_float Val_(BYVAL_AS_ZSTRING_PTR)
Evaluate a number from a string.
FUNCTION_AS_DOUBLE DaTi(BYVAL_AS_ZSTRING_PTR_PTR)
Evaluate the date and time for input lines.