unit MenuGE;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
//per la comunicazione col semaforo
fphttpclient, unix, process;
type
{ TMenuGEN }
TMenuGEN = class(TForm)
AvviaSimulatore_BTN: TButton;
ApriTraiettorie_BTN: TButton;
FermaSimulatore_BTN: TButton;
Memo1: TMemo;
Panel1: TPanel;
Risultati_TXT: TMemo;
DialogoApri: TOpenDialog;
Timer1: TTimer;
procedure ApriTraiettorie_BTNClick(Sender: TObject);
procedure AvviaSimulatore_BTNClick(Sender: TObject);
procedure FermaSimulatore_BTNClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
public
end;
Type
TInvioPosizioni = class(TThread)
utente, latitudine, longitudine, direzione, velocita, istanteGNSS : string;
private
fStatusText : string;
procedure ShowStatus;
protected
procedure Execute; override;
public
Constructor Create(CreateSuspended : boolean);
end;
var
MenuGEN: TMenuGEN;
riga : integer;
istante : string;
FileTraiettorie : TStringList;
implementation
{$R *.lfm}
{ TMenuGEN }
constructor TInvioPosizioni.Create(CreateSuspended : boolean);
begin
inherited Create(CreateSuspended);
FreeOnTerminate := True;
end;
procedure TInvioPosizioni.ShowStatus;
// this method is executed by the mainthread and can therefore access all GUI elements.
begin
//Form1.Caption := fStatusText;
end;
procedure TInvioPosizioni.Execute;
var FPHTTPClient: TFPHTTPClient; Parametri : TStringList; Risposta, sito: String;
begin
MenuGEN.Risultati_TXT.Lines.Append('Server');
Free;
end;
procedure TMenuGEN.ApriTraiettorie_BTNClick(Sender: TObject);
begin
if DialogoApri.Execute then
begin
//crea il contenitore
FileTraiettorie := TStringList.Create;
//carica il file
FileTraiettorie.Clear;
FileTraiettorie.LoadFromFile(DialogoApri.FileName);
end;
end;
procedure TMenuGEN.AvviaSimulatore_BTNClick(Sender: TObject);
begin
Risultati_TXT.Lines.Clear;
//azzera il tempo
istante := '0';
riga := 3;
//avvia il tempo
Timer1.Enabled := true;
end;
procedure TMenuGEN.FermaSimulatore_BTNClick(Sender: TObject);
begin
Timer1.Enabled := false;
end;
procedure TMenuGEN.Timer1Timer(Sender: TObject);
var i : integer; elementi : TStringList; InvioPosizioni : TInvioPosizioni;
//utente, latitudine, longitudine, direzione, velocita, istanteGNSS : string;
begin
Risultati_TXT.Lines.Append('istante: '+istante+#9+' Tempo: '+TimeToStr(Time));
elementi := TStringList.Create;
//gira il file delle traiettorie
for i := riga to FileTraiettorie.Count -1 do
begin
//scompone la riga
elementi.Clear;
elementi.Delimiter := #9;
elementi.StrictDelimiter := True; //risolve i problemi con il carattere spazio
elementi.DelimitedText := FileTraiettorie[i];
//se l'istante e' uguale
if (elementi[0].Equals(istante)) then
begin
//recupera i dati
InvioPosizioni := TInvioPosizioni.Create(True); // This way it doesn't start automatically
InvioPosizioni.utente := IntToStr(elementi[1].ToInteger + 1);
InvioPosizioni.latitudine := elementi[10];
InvioPosizioni.longitudine := elementi[9];
InvioPosizioni.direzione := elementi[12];
InvioPosizioni.velocita := elementi[4];
InvioPosizioni.istanteGNSS := elementi[0];
memo1.Lines.Append(IntToStr(elementi[1].ToInteger + 1)+'|'+elementi[10]+'|'+elementi[9]+'|'+elementi[12]+'|'+elementi[4]+'|'+elementi[0]);
InvioPosizioni.Start;
end
//termina il ciclo
else
begin
//aggiorna i riferimenti
istante := elementi[0];
riga := i;
//ferma la ricerca
break;
end;
end;
Risultati_TXT.Lines.Append('FINE funzione');
end;
end.