Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Verbindung mit COM-Schnittstelle aufbauen über TComPort (https://www.delphipraxis.net/117298-verbindung-mit-com-schnittstelle-aufbauen-ueber-tcomport.html)

Dark Angel 15. Jul 2008 15:22


Verbindung mit COM-Schnittstelle aufbauen über TComPort
 
Hallo,

ich werd einfach nicht schlauer aus den Forenbeiträgen. Kann mir jmd helfen? Ich bin eher Anfäger in Delphi 2007.

Ich habe bereits ein Programm und will jetzt noch eine Verbindung über COM dazu bauen. Ich bin schon soweit, dass ich die TComPort Componente installiert hab und jetzt 6 neue visualle ...ähm Dinge in meiner Tool-Palette habe.

ich will dass ich auswählen kann zwischen den COM Verbindungen mit der COMCombobox nur leider zeigt die mir nur 5mal "COM" an und nicht "COM1, COM2,...) wie kann ich das ändern. DAs ist mein verwendeter code dafür:

Das ganze ist in der On Create Form drin, hat da jmd ne bessere Idee. Das Problem ist ja wenn sich unter dem Programm noch einen neue Schnittstelle auftut dann muss ich das ganze Programm erst neu starten bis die Combobox aktualisiert wird.

Delphi-Quellcode:
  EnumComPorts(COMComboBox1.Items);
  // do some stuff
  if COMComboBox1.ItemIndex > -1 then
    ComPort1.Port := COMComboBox1.Items[COMComboBox1.ItemIndex];
Dann weiß ich nicht mehr weiter. Weil wenn ich einen BUtton mir "..connected:=true" setzte stürzt das Programm ab.

Ich will, was mir sehr gut gefallen hat in dem Forum, ein OnRX damit er die Eingänge überwacht und dann das SIgnal abfängt.
Ich will senden und empfangen. Empfnagen werde ich eine Stringkette mit 22strings und zwar alle 0,5sec und senden will ich einen einfachen Befehl zB. ein byte mit 0b11001010 so in etwa.

Wie mach ich das am besten?

Vielen Dank schon mal

messie 15. Jul 2008 16:57

Re: Verbindung mit COM-Schlittstelle aufbauen über TComPort
 
Was Du da machst, sieht nach einer nicht existierenden Verbindung aus.
Du platzierst ein TComport (ComPort1) auf dem Form, ebenso die TComComboBox. In den Properties der ComComboBox1 stellst Du als ComPort "ComPort1" ein. Dann die Property "ComProperty" au cpPort setzen. Zur Laufzeit wird dann ComPort1 genau der Port zugewiesen, den Du aus der Liste ausgewählt hast. Das musst Du also nicht extra machen wie von Dir beschrieben.
Ich weiß noch nicht, was passiert wenn der Port beim Auswählen offen ist, weil ich das nicht verwende. Wenn Du vorher ein ComPort1.Close ausführst, ist das sicher. Nach der Auswahl kannst Du dann ComPort1.Open probieren. Am Besten Du machst das bis dahin und testest an zwei Ports oder Rechnern mit Hyperterminal.

Grüße, Messie

Dark Angel 15. Jul 2008 22:12

Re: Verbindung mit COM-Schlittstelle aufbauen über TComPort
 
Ich komm einfach nicht weiter. Ich füge die Elemente (COMCombobox,...) und kann dann aber nur zeischen (COM, COM und COM3) wählen obwohl ich COM3, COM4 und COM 6 habe, laut HTerm. COM4 und COM6 sind Bluetooth module, aber das kann ja keinen Unterschied machen oder??

messie 15. Jul 2008 23:22

Re: Verbindung mit COM-Schlittstelle aufbauen über TComPort
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Dark Angel
Ich komm einfach nicht weiter. Ich füge die Elemente (COMCombobox,...) und kann dann aber nur zwischen (COM, COM und COM3) wählen obwohl ich COM3, COM4 und COM 6 habe, laut HTerm. COM4 und COM6 sind Bluetooth module, aber das kann ja keinen Unterschied machen oder??

Im Prinzip nicht, wenn die Ports vernünftig vom Treiber angemeldet sind.
Ich häng' mal mein Beispiel an: Du solltest die Ports alle sehen, wenn sie vernünftig beim System angemeldet sind. Siehst Du sie da auch nicht, riecht es eher nach einem Treiberproblem...

Grüße, Messie

Edit: Du solltest den Tippfehler in Deinem Titel verbessern, damit man den Thread später auch mit der Suche finden kann.

divBy0 16. Jul 2008 08:01

Re: Verbindung mit COM-Schlittstelle aufbauen über TComPort
 
Zeig doch bitte mal den Teil, wo du die Verbindung aufbaust.

Zitat:

Zitat von Dark Angel
Weil wenn ich einen BUtton mir "..connected:=true" setzte stürzt das Programm ab.

Die Eigenschaft Connected kannst du nicht setzen, die kannst du abfragen, ob der Port geöffnet ist.

So kannst du den Com-Port öffnen:

Delphi-Quellcode:
 
ComPort.Port := 'COM1'; // hier der Port als String
ComPort.BaudRate := br19200;
ComPort.DataBits := dbSeven;
ComPort.StopBits := sbOneStopBit;
ComPort.Parity.Bits := prEven;
ComPort.Buffer.InputSize := 1024; // musst du anpassen
ComPort.Buffer.OutputSize := 1024; // musst du anpassen

try
  ComPort.Open;
except
  ShowMessage('Fehler: COM-Port konnte nicht geöffnet werden...'); // Fehlermeldung
end;

Dark Angel 16. Jul 2008 08:19

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort
 
@messie

bei deinem Programm hab ich den se´lben fehler, dass die beiden BluetoothCOMports nicht richtig angezeigt werden. allerdings hab ich bei Hterm da keine Probleme es richtig anzuzeigen und im Gerätemanager ist auch alles okay und die funktionieren ja auch alle einwandfrei.

Und, ja mein Zeitplan ist echt knapp, aber daran kann ich leider nichts ändern.

VIELEN DANK an alle


Erste Erfolge stellen sich ein. Die Verbindung steht aber die Anzeige der Comports spinnt trotzdem. Komisch.

GIbts bei Async Pro auch so ne Combobox zu anziegen der Ports, dann könnt ichs mit dem mal versuchen, aber ich find keine passende visualle Konponente dafür.

messie 16. Jul 2008 08:46

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort
 
Klick' mal doppelt zur Entwurfszeit auf Deinen TComport. Da wird ja das Setup-Fenster für den Port geöffnet und die zur Verfügung stehenden Ports angezeigt. Siehst Du dort auch nur verstümmelte Einträge?

Grüße, Messie

divBy0 16. Jul 2008 08:57

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort
 
Versuch doch mal eine normale ComboBox zu nehmen. EnumComPorts gibt ja TStrings zurück, das kannst du einer normalen ComboBox zuweisen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ComPorts: TStrings;
begin
  ComPorts := TStringlist.Create;
  try
    EnumComPorts(ComPorts);
  except
    ShowMessage('Fehler: Keine Com-Ports gefunden...');
  end;
 
  ComboBox1.Items := ComPorts;
  ComPorts.Free;
end;

Dark Angel 16. Jul 2008 11:03

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort
 
Vielen Dank Leute es ist überall das selbe die BT COM's werden nicht richtig angezeigt.

Aber ich hab jetzt einfach eine normale COmbobox genommen und die richtigen COMnamen eingetragen und diese dann zum verbidungsaufbau genützt und sieh da es funzt.

Nun kommen wir zu den weiteren Problemen, die sich ergeben haben bei dem Programmcode..

Delphi-Quellcode:
procedure TForm3.Button2Click(Sender: TObject);  // ComPort2 ist schon richtig
begin
  ComPort2.Port := Combobox2.text; // das ist COM4
  ComPort2.BaudRate := br19200;
  ComPort2.DataBits := dbSeven;
  ComPort2.StopBits := sbOneStopBit;
  ComPort2.Parity.Bits := prEven;
  ComPort2.Buffer.InputSize := 1024;
  ComPort2.Buffer.OutputSize := 1024;
try
  ComPort2.Open;

except
  ShowMessage('Fehler: Bluetooth-COM-Port konnte nicht geöffnet werden...'); // Fehlermeldung
end;
..wird mir beim ausführen als erstes diese Nachricht "Erste Gelegenheit für Exception bei $776742EB. Exception-Klasse EComPort mit Meldung 'Unable to open com port (win error code: 121)'. Prozess Geschwindigkeitsmessung.exe (8848)" mit einer Programmunterbrechung angezeigt und wenn ich dann auf "fortsetzen" klicke kommt est die Fehlermeldung " ShowMessage('Fehler: Bluetooth-COM-Port konnte nicht geöffnet werden...'); // Fehlermeldung" die ich in except eingetragen habe zum vorschein.

was mache ich falsch??

messie 16. Jul 2008 11:13

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort
 
Hast Du jetzt ein Problem mit dem ComPort.Open oder mit der Meldung?

Die Exception-Meldungen sind aus dem Online-Debugger. Da wird das Programm beim Fehler angehalten, erst wenn Du fortsetzt, wird Deine Fehlermeldung angezeigt. Wenn Du das mit der exe probierst, verhält sich das anders.

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr.
Seite 1 von 3  1 23      

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