Entwickler-Ecke

Sonstiges (Delphi) - COM-Port mit Komponente


violinenspieler1000 - Mo 30.06.08 16:34
Titel: COM-Port mit Komponente
Hallo,

ich möchte meinen COM-Port ansteuern und habe dieses heruntergeladen: http://sourceforge.net/project/showfiles.php?group_id=76595

Dort gibt es einen Ordner Source, ich habe alle .pas Dateien meinem Projekt hinzugefügt. Leider funktioniert das nicht, Delphi gibt die Fehlermeldung aus, das die Klasse TCOMCombobox nicht gefunden werden konnte.

Was kann ich dagegen machen, wo liegt wahrscheinlich der Fehler?

Danke für eure Hilfe,
Thomas


Xentar - Mo 30.06.08 17:38

Du musst die Komponenten in Delphi installieren, um diese auf dem Formular verwenden zu können.
Normalerweise sollte da eine Installationsanleitung beiliegen.

Welche Delphi Version verwendest du? In der kostenlosen Turbo Delphi kann man keine Komponenten installieren - diese musst du dann zur Laufzeit händisch erzeugen.


violinenspieler1000 - Mo 30.06.08 18:04

Ja, ich benutze nur die kostenlose Version von Delphi.

Wie kann man denn Komponenten "zur Laufzeit händisch erzeugen"?

Thomas


Xentar - Mo 30.06.08 18:26

http://www.delphi-treff.de/no_cache/tipps/komponenten/tipp/186


Yogu - Mo 30.06.08 19:09

Hallo,

wenn du dich nicht schon für deine Komponente entschieden hast, könntest du dir ja mal die Unit comm_async [http://www.delphi-forum.de/viewtopic.php?p=447813#447813] anschauen. Die brauchst du gar nicht zu registrieren, du kannst auch einfach ein Objekt der Klasse TComm erstellen. Owner kann in dem Fall nil sein.

Grüße,
Yogu


violinenspieler1000 - Mo 30.06.08 19:25

Hallo, vielen Dank für den Tipp mit der Unit comm_async.
So werde ich das machen.

Noch zwei Fragen dazu:
" constructor Create(AOwner: TComponent); override;"

Was muss ich in AOwner reinschreiben, damit die Unit funktioniert?

Wie kann ich etwas empfangen? Da steht nur wie ich etwas senden kann...

Thomas


Yogu - Mo 30.06.08 19:37

user profile iconviolinenspieler1000 hat folgendes geschrieben:
" constructor Create(AOwner: TComponent); override;"

Was muss ich in AOwner reinschreiben, damit die Unit funktioniert?

Wie gesagt, wenn du "von Hand" - also während der Laufzeit - ein Comm-Objekt erstellst, kannst du nil verwenden. Vorausgesetzt natürlich, du gibst das Objekt wieder frei.

user profile iconviolinenspieler1000 hat folgendes geschrieben:
Wie kann ich etwas empfangen? Da steht nur wie ich etwas senden kann...

Prinzipiell geht Empfangen so wie Senden:


Delphi-Quelltext
1:
2:
3:
4:
5:
var X: Byte;
begin
  Comm.Read(X, SizeOf(X));
  ShowMessage('Empfangen: '+IntToStr(X));
end;

Du kannst natürlich nicht nur einzelne Bytes empfangen - sogar Arrays sind möglich.

Besser ist es aber, wenn du auf einkommende Daten wartest. Das Ereignis OnCharReceived wird ausgelöst, wenn die Gegenstelle etwas sendet.

Grüße,
Youg


violinenspieler1000 - Mo 30.06.08 21:53

Danke, für die schnellen Antworten.


Thomas


Yogu - Mo 30.06.08 22:04

user profile iconviolinenspieler1000 hat folgendes geschrieben:
Aber:
Es muss doch so heißen
"Comm.Read(@X, SizeOf(X));", nicht "Comm.Read(X, SizeOf(X));", richtig?

Oh, da hab ich wohl nicht richtig aufgepasst :oops:

Das kommt davon, wenn man frei Schnauze schreibt.