Einzelnen Beitrag anzeigen

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