![]() |
Wie mit TSerial prüfen, ob was an COM angeschlossen ?
Hallo,
nun mal eine Frage zu TSerial4.2 (unter BDS2006) Ich will prüfen, ob ein Gerät an der seriellen Schnittstelle angeschlossen ist. ich arbeite im asynchr. Modus. Wenn ein Gerät angeschlossen, dann kommt auf eine Frage eine definierte Antwort zurück Wie prüft man, soetwas? Meine TimerRoutine habe ich dazu so geschrieben,
Delphi-Quellcode:
Leider kommt die Routine nicht so weit und bleibt schon bein Case 1 stehen (sicherlich auch verständlich)
procedure TF_Einstell.T_Einstell1Timer(Sender : TObject);
begin takt1 := takt1 + 1; case takt1 of 1 : begin n := F_Haupt.Port.TransmittText(Frager); // hier bleibt das Programm stehen end; 2 : begin E_Transfer.Text := U_Haupt.t; end; 3 : begin T_Einstell1.Enabled := false; takt1 := 0; takt2 := 0; t := ''; E_Transfer := Edit2; if Edit2.Text = 'MULTIDOS 2.20 ' then // hier sollte weiterer Transfer begin // stattfinden Frager := 'AM' + #13#10; // wenn was dran wäre T_Einstell2.Enabled := true; // soweit komme ich aber B_Reset.Enabled := true; // im Negativ-Fall nicht end else ShowMessage('Kein MultiDos angeschlossen'); end; end; end; Wie kann man dieses geschickter machen? Danke E. B. |
Re: Wie mit TSerial prüfen, ob was an COM angeschlossen ?
Wenn das Endgerät HW_Handshake unterstützt, solltest Du zunächst DTR (Data Terminal Ready) setzen und dann prüfen, ob das Gerät DSR (Data Set Ready) setzt.
Ob das Gerät empfangsbereit ist, läßt sich dann normalerweise mit RTS/CTS feststellen. |
Re: Wie mit TSerial prüfen, ob was an COM angeschlossen ?
Hallo und Danke,
aber leider: den Trick verstehe ich nicht, Mein Programm hängt sich auf, wenn kein Gerät an der RS232 dran ist. Kannst Du mir den Trick genauer beschreiben? Danke E. B. |
Re: Wie mit TSerial prüfen, ob was an COM angeschlossen ?
Hallo,
ich habe ein Programm zur Bedienung eines Messgerätes über die serielle Schnittstelle geschrieben - mit TSerial 4.2 (asynchron Mode). Funktioniert soweit alles sehr gut Nur ein Problem: Wenn ich das Messgerät nicht angeschlossen habe, bleibt mein Programm (der gesamte Rechner) einfach einfach stehen. Selbst die extra dafür geschriebene Prüfroutine, die am Anfang fragt, ob ein Gerät dranhängt, und im Positivfall dessen Seriennummer zurück gibt (im Negativfall einen Leerstring) bleibt stehen. Das Programm (der gesamte Rechner) geht erst dann weiter, wenn ich das Gerät wieder angeschlossen (angeschaltet) habe. Programmiert habe ich die Schnittstelle mit einem Timer (der im 500ms Takt die Frage absendet, die Antwort abfragt und sich dann abschaltet) unter Nutzung von TSerial 4.2. Dabei nutze den Asynchron Mode. Kennt jemand dieses Verhalten von TSerial und hat jemand eine elegante Lösung dieses Problems? Vielen Dank E. B. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz