AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Port über CreateFile

Ein Thema von Borti · begonnen am 29. Feb 2004 · letzter Beitrag vom 24. Mär 2004
 
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
 


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 02:54 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