AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein daten von gps-maus über Com-Port auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

daten von gps-maus über Com-Port auslesen

Ein Thema von btbe · begonnen am 10. Nov 2004 · letzter Beitrag vom 3. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
btbe

Registriert seit: 15. Okt 2004
20 Beiträge
 
#1

daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 17:44
Hi, bin ein relativer Delphi Noob, habe mir in Delphi ne kleine Oberfläche für meinen PC im Auto erstellt und möchte jetzt Daten von meiner GPS-Maus auslesenund z.B. die Geschwindigkeit etc. auslesen... bin jetzt hier seit etlichen stunden am rumsuchen und hab es inzwischen geschafft die daten übers hyperterminal auszulesen und hab auch schon eine beschreibung zum entsprechenden protokoll gefunden.

Hyperterminal Auszug:
Zitat:
$GPGGA,173722.000,5004.8731,N,00835.7397,E,0,00,,, M,,M,,*49
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,22,14,158,,19,06,272,,28,53,336,,15, 57,207,38*7A
$GPGSV,3,2,12,03,36,282,36,29,03,055,,16,65,234,,1 4,20,170,*78
$GPGSV,3,3,12,13,12,306,,10,01,027,,06,23,094,,20, 49,249,*71
$GPRMC,173722.000,V,5004.8731,N,00835.7397,E,,,101 104,,*1B
So mein problem ist jetzt, ich will diese zeilen (je nach anzahl der sateliten zw. 3 und 11 (erste Zeile fängt mit $GPGGA und die letzte mit $GPRMC an)) einmal pro sekunde auslesen und theoretisch alles was zwischen den Kommas steht in variablen bzw. arrays schreiben, so dass ich dann damit arbeiten kann.

ich hoffe es gibt da eine einfache möglichkeit, die auch ein delphi noob wie ich versteht!

Schon mal danke!

mfg
btbe

PS: Wenn es was hilft der GPS Empfänger ist per usb angeschlossen und läuft uber den "usb-to-serial" treiber an COM5!
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 17:53
Naja, du kannst ja die Daten in eine datei speichern, nach Kommata suchen und dann jeden Kommawert in eine Variable speichern.

Da ganze eben in einem Timer mit Interval 1000.

Aus deiner fragestellung denke ich zu erkennen, dass du weißt, wie man an die Daten vom Com-Port rankommt.
Sollte dies nicht der Fall sein, hilft bestimmt eine DP-Suche nach Comport oder Com-Port


PS: Bist du schon begrüßt worden? wenn nicht, dann: Herzlich willkommen
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 17:56
Für die serielle Kommunikation würde ich Async Pro nehmen.

Für den Rest solltest Du dir eine vernünftige Struktur überlegen:

Z.B. eine Komponete TGPSEventer entwickeln.
Verbindbar mit AsyncPro-Komponente und bei Empfang eine mit lesbareren Parametern versehenen Event auslösen.
In Formular wird dann nur die Geschwindigkeitsberechnung durchgeführt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
btbe

Registriert seit: 15. Okt 2004
20 Beiträge
 
#4

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 18:20
@ultimator ne, keine ahnung wie ich an die daten rankomme, das ist eigentliche problem! die daten dannin variablen schreiben würd ich wahrscheinlich mit viel rumprobieren hinbekommen, was ich mir erhoffe ist ne anleitung in der form
"Du brauchst diese komponente oder package oder was auch immer, das installierst du so udn so und den com port öffnest du so die daten kannst du dann so in ein label, datei, etc. schreiben....) ich weiß eben nicht was ich dafür brauche oder wie ich es anwende, mein delphi wissen beschränkt sich so ziehmlich auf das was ich in der schule im info lk gemacht habe (funktionsgraphen zeichnen etc...

thnx
  Mit Zitat antworten Zitat
Benutzerbild von CReber
CReber

Registriert seit: 26. Nov 2003
Ort: Berlin
343 Beiträge
 
Delphi 2006 Professional
 
#5

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 19:54
Kurze unrelevante Frage... Wie / Wo hast du deinen Rechner im Auto eingebaut? Und was für eine GPS-Maus hast du? Interessiert mich ernsthaft !
Christian Reber
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#6

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 20:11
Hallo,
noch jemand der ein Computer im Auto hat Ich habe ebenfalls ein CarPuter mit 7" TFT TouchScreen.
Ich hatte ebenfalls mal vor für meine Programmoberfläche eine GPS funktion einzubauen. Leider habe ich aus Zeitgründen schon lange nicht mehr daran weitergemacht. Unten findest du meinen bislang geschriebenen Quelltext. Der ist noch sehr unsauber geschrieben, und die Interprtation funktioniert auch nicht. Aber zum einlesen der daten vom COM Port reicht es. Ist denke ich ein guter Anfang. Wenn du weiter kommst, wäre es schön wenn du dein Quellcode hier postest.

Delphi-Quellcode:
//################################################################
//###################### COM Port Functionen #####################
//################################################################

function TForm1.opencom(comport : string): boolean;
begin
hport:= CreateFile(PChar(comport),GENERIC_READ + GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);

GetCommState(hport,dcb);

dcb.BaudRate := strtoint(form2.Baudrate.text); // Bautrate
dcb.ByteSize := strtoint(form2.Data.text); // 8 Bits je Byte
dcb.Parity := strtoint(form2.Parity.Text); // kein Paritäts Bit NOPARITY
dcb.StopBits := strtoint(form2.Stopbit.Text); // ein Stopp Bit ONESTOPBIT
dcb.wReserved:= 0;
// In Buffer // Out Buffer
if SetupComm(hPort, 800, 8)
then
begin
result := true;
//Statusbar.Panels.Text := ('erfolgreich initialisiert...');
end
else
begin
result := false;
//Statusbar.Panels.Text :=('konnte NICHT initialisiert!');
end;
SetCommState(hport,dcb);
end;

function inport(var Str: string): Integer;
var
  BytesTrans, nRead: DWORD;
  Buffer : String;
  i, j : Integer;
  temp, temp2 : string;

begin
  Str := '';
  SetLength(Buffer,1);
  ReadFile(hport,PChar(Buffer)^, 1, nRead, nil);
  while nRead > 0 do
  begin
    temp := temp + PChar(Buffer);
    ReadFile(hport,PChar(Buffer)^, 1, nRead, nil);
  end;
  //Remove the end token.
  BytesTrans := Length(temp);
  SetLength(str,BytesTrans-2);
  for i:=0 to BytesTrans-2 do
  begin
    str[i] := temp[i];
  end;
  Result := BytesTrans;
end;


procedure closecom;
var result : LongBool;
begin
CloseHandle(hport);
end;


//###########################################################
//################ NMEA Interpreter #########################
//###########################################################
procedure TForm1.Timer1Timer(Sender: TObject);
Var received_data: String;
 i : integer;
 temp : String;
begin

inport(received_data);

memo1.Text := memo1.Text + CRLF + received_data;
{
temp := '';

for i := 1 to length(received_data) do
begin
temp := temp + received_data[i];
//if copy(temp,i,1) = CRLF then
//begin
    memo1.Lines.Add(temp);
  //  temp := '';
//end;
end;
   

    for j := 0 to length(temp2) do
      begin
      if copy(temp[j],1,1) = CRLF then
        str := temp2;
      end;
memo1.Lines.Add(received_data);}



end;
Mfg
Salomon
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
btbe

Registriert seit: 15. Okt 2004
20 Beiträge
 
#7

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 20:53
@hOnkibOnk: PC: 800Mhz Duron
256MB DDR Ram
2GB CompactFlash Karte als bootplatte (wegen stößen, etc.)
externe Platte 80GB (wird angeschlossen falls benötigt für mp3s etc.)
Haicom HI-202E GPS-Maus
GeForce4 MX440
am tv out 7" TFT
zu weihnachten kommt n touchscreen rein deshalb progge ich auch die oberfläche (windows ist nich grad Fingerfreundlich!)
PC is im Kofferraum in nem selbstgebauten Gehäuse
Geplant ist langfristig noch ne relaissteuerung über den pc für endstufe, etc. und eine verbindung zwischen pc und boardcomputer via obd-II Schnittstelle.... aber das is noch zukunftsmusik....
Wenn ihr bilder von euren systemen habt, schickt mir doch mal ein paar so als anregungen (webmaster@btbe-design.de), wer interesse hat dem kann ich auch bilder schicken! Ich hab mal ein Bild von der Software angehängt, soweit wie sie jetzt ist. Wer interesse hat dem kann ich sobald ich mit der gpsintegration ferig bin das programm schicken!

So aber um mal zum thema zurückzukommen:

Hab jetzt mal async pro installiert und habe es geschafft mithilfe eines codes den ich hier im Forum gefunden hab die einzelnen chars auszugeben. Hier der Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OoMisc, AdPort, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    ComPort: TApdComPort;
    Label1: TLabel;
    Button1: TButton;
    procedure ComPortTriggerAvail(CP: TObject; Count: Word);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Data: String;
  I: Integer;

implementation

{$R *.dfm}

procedure TForm1.ComPortTriggerAvail(CP: TObject; Count: Word);
begin
  { OnTriggerAvail; Read the data }
  for I:= 0 to Count -1 do
     Data := ComPort.GetChar;
Label1.Caption := Label1.Caption + Data;
end;



end.
Jetzt müssen diese in arrays geschrieben werden (pro zeile 1 array) z.B. GPGGA[1] = 173722.000, GPGGA[2] = 5004.8731, GPGGA[3] = N,...... Gebraucht werden die zeilen GPGGA, GPGSA und GPRMC und dann kommt das ganze wieder neu vom gps und nun soll wieder von vorne angefangen werden und die alten werte überschrieben werden...
Hat da jemand ne saubere Lösung?
Miniaturansicht angehängter Grafiken
interface.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von CReber
CReber

Registriert seit: 26. Nov 2003
Ort: Berlin
343 Beiträge
 
Delphi 2006 Professional
 
#8

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 22:04
SOWAS nenne ich sexy
Christian Reber
  Mit Zitat antworten Zitat
btbe

Registriert seit: 15. Okt 2004
20 Beiträge
 
#9

Re: daten von gps-maus über Com-Port auslesen

  Alt 10. Nov 2004, 22:52
hm.... hab hier mal n ansatz, um die einzelnen elemente einer zeile in das entsprechende array zu schreiben...
Delphi-Quellcode:
procedure TForm1.ComPortTriggerAvail(CP: TObject; Count: Word);
begin
  { OnTriggerAvail; Read the data }
 for I:= 0 to Count -1 do
     Data := ComPort.GetChar;
   Label2.Caption := Label2.Caption + Data;
 if Data = '*then
  begin
   Memo1.Text := Label2.Caption;
   Label2.Caption := '';
  if pos('GPGGA', Label2.Caption) > 0 then
      begin
          while x < length(Label2.Caption) do
             begin
              if Label2.Caption[x] = ',then
                begin
                 y := y + 1;
                 x := x + 1;
                end
               else
                begin
                 GPGGA[y] := Label2.Caption[x];
                end;
             end;
      end;

 Label1.Caption := Label1.Caption + Data;
 end;
end;
komme aber nicht weiter, da wenn ich ein array ausgeben will, kommt diese Fehlermeldung:
Zitat:
Project Project1.exe raised expection class EAccesViolation with message 'Access violation at adress 004741C4 in module 'Project.exe'. Read of adress 00000001'. Process stopped. Use Step or Run to continue.
Also wenn jemand ne Ahnung hat wie ich hier weiter komme oder einen besseren Ansatz hat bitte so schnell wie möglich melden!

thnx
btbe
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#10

Re: daten von gps-maus über Com-Port auslesen

  Alt 11. Nov 2004, 06:59
Hi,

Delphi-Quellcode:
Label2.Caption := '';
if pos('GPGGA', Label2.Caption) > 0 then
'' enthält niemals 'GPGGA' Das erklärt zwar nich unbedingt die AV, is mir nur beim Überfliegen so aufgefallen

edit: setz ma nen Breakpoint (F5) und prüf, wo/wann die AV auftritt (F7,F8 )

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz