//################################################################
//###################### 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;