Thema: Delphi COM Port Event?

Einzelnen Beitrag anzeigen

Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

COM Port Event?

  Alt 4. Jul 2005, 17:11
Tag!

also ich habe mittlerweile erfolgreich eine kleine Klasse geschrieben die mir Zeitgesteuert Daten von der Seriellen Schnittstelle ließt.

jetzt hab ich mir letztens als kleines Spielzeug eine Infrarot Fernbedienung gekauft. Die ich theoretisch mit meiner Klasse ansteuern kann. Nur sendet dieses Ding die ganze Zeit irgendeinen Müll. Und es dauert sehr lange bis ich 24 Byte ausgelesen hab (wundert mich auch).

so... da liegt auch ne Sofware bei - die macht das ganze eigentlich ganz toll. Nur ist sie mir zu blöd. Unterstützt WinAmp nicht vollständig usw.

Meine Frage nun: Kann ich irgendwie ein Event Abfragen das ausgelößt wird sobald an der COM Schnittstelle Daten ankommen?

oder Hat jemand eine bessere lösung als sowas:

Delphi-Quellcode:
Function GetCOMPortHandle: THandle;
Begin
  Result := CreateFile('Com4', GENERIC_READ Or GENERIC_WRITE, 0, Nil, 0, 0, 0);
End;

Function RecieveByte(COMHandle: THandle): Byte;
Var
  tmp: cardinal;
  ByteToRead: Byte;
Begin
  ReadFile(COMHandle, BytetoRead, 2, tmp, Nil);
  Result := ByteToRead;
End;

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  com := GetCOMPortHandle;
End;

Procedure TForm1.Timer1Timer(Sender: TObject);
Var tmp: integer;
Begin
  tmp := RecieveByte(com);
  If tmp <> 217 and 0 Then // Nur um den "Müll" zu ignorieren...
    memo1.lines.add(inttostr(tmp));
End;
Danke, Daniel
Daniel
  Mit Zitat antworten Zitat