Ik heb even een versimpelde unit gemaakt.
Op je hoofdform zet je een TButton, TMemo, TTimer en TCircle.
Je kunt met de kleur van de TCircle bijvoorbeeld aangeven of je een fix hebt (groen), die nét verloren hebben (geel) of langere tijd geen fix (rood).
Je kunt dan dit doen:
Delphi Code:
uses uMyGpsData, UIConsts;
procedure TForm5.Button1Click(Sender: TObject);
begin
MyGpsData := TMyGpsData.Create;
end;
procedure TForm5.Timer1Timer(Sender: TObject);
var
Line: String;
begin
if assigned(MyGpsData) then
begin
Line := Format('Lastfix: %d secs ago with ', [MyGpsData.LastFixSecondsAgo]);
Line := Line + Format(' %d of %d sats', [MyGpsData.SatellitesUsedInFix, MyGpsData.TotalSatellites]);
Memo1.Lines.Add(Line);
Memo1.GoToTextEnd;
// je kunt dus ook iets doen als
Circle1.Fill.Color := claGreen;
if MyGpsData.LastFixSecondsAgo > 3 then Circle1.Fill.Color := claYellow;
if MyGpsData.LastFixSecondsAgo > 10 then Circle1.Fill.Color := claRed;
end;
end;
Let op... je mag maar één keer TMyGpsData.Create doen. Dit kan ook wel anders maar ik heb dit even snel in elkaar gegooid.
Bij onderstaande image zie je dat de cirkel geel is. Dat komt omdat mijn telefoon (Vodafone prepaid) altijd 4 seconden achterloopt op de echte UTC tijd.
Attached ook de uMyGpsData. Die zou ook nog de positie op kunnen slaan zodat je niet eens met TLocationSensor hoeft te werken maar als voorbeeld is het denk ik wel even goed. Je hebt dus e.v. alleen de LastFixSecondsAgo nodig om te kijken hoe lang het geleden is dat je een goede fix had.
Je moet maar even kijken of deze unit zo 123 bij jou zonder aanpassingen werkt want ik werk met 10.1 Berlin.
Bookmarks