Thema: Delphi Port über CreateFile

Einzelnen Beitrag anzeigen

Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#1

Port über CreateFile

  Alt 29. Feb 2004, 17:49
Hallo!
ihr habt mir vor kurzem geraten meinen LPT-Port über die Win32API zu steuern. so, jetzt hab ich mich mal in die API eingelesen und hier und da im netz gestöbert. ein wunderschönes beispiel zum steuern des Com-Ports hab ich hier gefunden: http://www.swissdelphicenter.ch/de/showcode.php?id=841
In abgeänderter Version für den LPT sieht das ganze dann so aus:
Delphi-Quellcode:
function OpenLPTPort: Boolean;
var
  DeviceName: array[0..80] of Char;
begin
  StrPCopy(DeviceName,'LPT1');
  LPTFile := CreateFile(DeviceName,
    GENERIC_READ or GENERIC_WRITE,
    0,
    nil,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    0);
  if LPTFile = INVALID_HANDLE_VALUE then
    Result := False
  else
    Result := True;
end;

procedure CloseLPTPort;
begin
 CloseHandle(LPTFile);
end;

function ReadText: string;
var
  d: array[1..80] of Char;
  s: string;
  BytesRead:DWord;
  i: Integer;
begin
  Result := '';
  if not ReadFile(LPTFile, d, SizeOf(d), BytesRead, nil) then
  begin
    showmessage('ERROR while reading from LPT1!');
  end;
  s := '';
  for i := 1 to BytesRead do s := s + d[I];
  Result := s;
end;

procedure SendText(s: string);
var
  BytesWritten: DWORD;
begin
  s := s + #13 + #10;
  WriteFile(LPTFile, s[1], Length(s), BytesWritten, nil);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
 if OpenLPTPort=false then showmessage('ERROR while opening handle!');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 try
  CloseLPTPort;
  except
   showmessage('ERROR while closing handle!');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 panel1.Caption:=ReadText;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 try
  Sendtext(edit1.text);
 except
  showmessage('ERROR while sending to LPT1!');
 end;
end;
Das einzige Problem: Es funktioniert nicht! (Nicht mal das Orginal hab ich zum Laufen gebracht.) Nirgends erhalte ich eine exception oder ähnliches, daher dürfte es ja rein theoretisch geklappt haben.
Aber: Beim Schreiben kann ich keine Veränderung an der Schnittstelle feststellen und beim schreiben erhalt ich auch nur den string''. Könnt ihr mir hier sagen, was falsch ist?
Danke,
Borti
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat