Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Serielle Schnittstelle: COM-Port frei wählbar machen


boozzz - Sa 04.02.06 18:38
Titel: Serielle Schnittstelle: COM-Port frei wählbar machen
In meinem in Borland Delphi 7 programmierten Programm wird die serielle Schnittstelle (COM) angesteuert. Hierfür habe ich die Komponente ComDrv in mein Delphi integriert (TCommPortDriver).

In Windows gibt es ja verschiedene COM-Ports (COM1, COM2,...). Wie müsste eine Prozedur aussehen, in der der Benutzer den COM-Port frei wählen kann?

Viele Grüße,
boozzz


boozzz - Mo 06.02.06 17:03

ich habe es bisher mit folgender Prozedur probiert. Wenn der Button "Close" betätigt wird, wird das Form4 geschlossen. Gleichzeitig wird der an der ComboBox ausgewählte COM-Port an die serielle Komponente (Com im Objektinspektor) übermittelt.
Leider funktioniert es nicht. :roll:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TForm4.Spielregeln_closeClick(Sender: TObject);
begin
  if Form4.ComboBox1.Text='COM1' then
    Form1.Com.PortName:='\\.\COM1';

  if Form4.ComboBox1.Text='COM2' then
    Form1.Com.PortName:='\\.\COM2';

  if Form4.ComboBox1.Text='COM3' then
    Form1.Com.PortName:='\\.\COM3';

  if Form4.ComboBox1.Text='COM4' then
    Form1.Com.PortName:='\\.\COM4';

  if Form4.ComboBox1.Text='COM5' then
    Form1.Com.PortName:='\\.\COM5';

  if Form4.ComboBox1.Text='COM6' then
    Form1.Com.PortName:='\\.\COM6';

  if Form4.ComboBox1.Text='COM7' then
    Form1.Com.PortName:='\\.\COM7';

  if Form4.ComboBox1.Text='COM8' then
    Form1.Com.PortName:='\\.\COM8';

  if Form4.ComboBox1.Text='COM9' then
    Form1.Com.PortName:='\\.\COM9';

  Close
end;


Würde mich sehr freuen, wenn mir jemand helfen könnte.

Grüße,
boozzz


kkausp - Mo 06.02.06 17:12
Titel: PortName := 'COM1' etc
Ich hoffe wir reden über die gleiche Komponente

z.B.
CommPortDriver1.PortName := 'COM' + inttostr(gl_config.Scannerport);


deshalb hier der kopf von der ich verwende:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
//------------------------------------------------------------------------
// UNIT           : CPDrv.pas
// CONTENTS       : TCommPortDriver component
// VERSION        : 2.1
// TARGET         : (Inprise's) Borland Delphi 4.0
// AUTHOR         : Marco Cocco
// STATUS         : Freeware 
// INFOS          : Implementation of TCommPortDriver component:
//                  - non multithreaded serial I/O
// KNOWN BUGS     : none
// COMPATIBILITY  : Windows 95/98/NT/2000
// REPLACES       : TCommPortDriver v2.00    (Delphi 4.0)
//                  TCommPortDriver v1.08/16 (Delphi 1.0)
//                  TCommPortDriver v1.08/32 (Delphi 2.0/3.0)
// BACK/COMPAT.   : partial - a lot of properties have been renamed 
// RELEASE DATE   : 06/06/2000
//                  (Replaces v2.0 released on 30/NOV/1998)
//------------------------------------------------------------------------


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt


boozzz - Mo 06.02.06 17:32

Hi kkausp,
das ist die gleiche Komponente. Aber was ist "gl_config" und was machst du mit dem Befehl "Scannerport"?

DANKE schon mal,
boozzz


kkausp - Di 07.02.06 11:33

Es ist nur eine Integervariable, die den wert 1 für COM1, 2 für COM2 .... hat.


boozzz - Di 07.02.06 18:19

:D Danke kkausp, es funktioniert jetzt. Aber was du mit dem ".Scannerport" vor hattest, habe ich immer noch nicht ganz verstanden. :shock:
Ich habs nur so geschrieben: CommPortDriver1.PortName:='COM'+IntToStr(gl_config);