AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Comport-Exception abfangen und verbindung schließen
Thema durchsuchen
Ansicht
Themen-Optionen

Comport-Exception abfangen und verbindung schließen

Ein Thema von delphifant · begonnen am 4. Feb 2009 · letzter Beitrag vom 22. Apr 2009
Antwort Antwort
Seite 2 von 2     12   
delphifant

Registriert seit: 20. Dez 2007
Ort: nähe Freiburg
14 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Comport-Exception abfangen und verbindung schließen

  Alt 6. Feb 2009, 09:54
Hallo messie,
ich werde nun als nächster Schritt try...except direkt beim senden und empfangen einsetzen. Bis jetzt hoffte ich, ich könne die Exceptions direkt an einen Punkt im Programm abfangen.

Das Senden läuft momentan auch schon über einen Timer... wenn du willst kann ich auch noch gerne Auszüge davon posten. Jedoch findet in der Timer-Routine nur die Verarbeitung der Antworten statt.

Fand es eine nette Lösung in der Sende-Prozedur eine gewisse Zeit auf die Antwort zu warten oder die Prozedur abzubrechen.

Aber ich lasse mich gerne eines besseren belehren und bin um jede Hilfe froh.
Gruß

Delphifant
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Comport-Exception abfangen und verbindung schließen

  Alt 6. Feb 2009, 10:03
Erkläre mal Deine Datenübertragung: machst Du Polling-Betrieb, bei dem vom externen Gerät nur auf einen Befehl hin gesendet wird oder schreibt das Gerät die Daten selbständig?

Grüße, Messie
  Mit Zitat antworten Zitat
delphifant

Registriert seit: 20. Dez 2007
Ort: nähe Freiburg
14 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Comport-Exception abfangen und verbindung schließen

  Alt 6. Feb 2009, 10:30
Hallo messie,
ich arbeite im Pooling-Betrieb. Ich sende meinen Gerät Befehle im IEEE-Standart (*RST) und mein Gerät meldet sich dann mit einer definierten Antwort z.B "OK<CR><LF>". Hier noch ein Außzug aus der

Dokumentation vom Elektroniker
Zitat:
Schnittstelle: virtueller COM-Port an USB
Baudrate: 921600
Datenbits: 8
Parität: keine
Stoppbits: 1
Handshake: OFF

Synchronisation: Es darf immer nur ein Befehl abgesetzt werden.
Jeder Befehl gibt eine Antwort, auf die der PC
warten muss. Erst dann ist das Gerät bereit für den
nächsten Befehl.
(Das erspart BUSY / READY Flags)
Ach, ich habe nun versucht direkt um meine Befehle zur Schnittstelle mit try..exception-Blöcke das Ergebnis ist jedoch das gleiche
Zitat:
... Klasse EComPort mit der Meldung WriteFile function failed (win error code: 5)' ...
Gruß

Delphifant
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#14

Re: Comport-Exception abfangen und verbindung schließen

  Alt 6. Feb 2009, 10:59
Also beim Abziehen des seriellen Kabels sollte es mit try..except klappen. Beim Abziehen des USB-Kabels trennt man die Verbindung zweischen Treiber und Hardware. Das habe ich auch noch nicht abfangen können.

Grüße, Messie
  Mit Zitat antworten Zitat
delphifant

Registriert seit: 20. Dez 2007
Ort: nähe Freiburg
14 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Comport-Exception abfangen und verbindung schließen

  Alt 6. Feb 2009, 13:17
Hallo messie,
genau da befindet sich mein Problem. Ich arbeite über USB.
Wenn der Konflikt zwischen Hardware und Treiber auftritt, aber ich kann mich auch täuschen, sollte ich nun die USB-Events abfragen und hoffen rechtzeitig darauf reagieren zu können.

Ich habe nun mal die USB-Events abgefangen...jedoch muss ich nun noch versuchen das Event herauszufinden welches mich betrifft.-> Also das Handle meinen Treiber zuzuordnen. Vielleicht gelingt es mir so.

Danke für die Hilfe
Gruß

Delphifant
  Mit Zitat antworten Zitat
Koonunga Hill

Registriert seit: 26. Nov 2003
1 Beiträge
 
#16

Re: Comport-Exception abfangen und verbindung schließen

  Alt 22. Apr 2009, 18:32
Hallo Leute,

ich schlage mich mit genau dem gleichen Problem herum und bekomme nach dem Ziehen des USB-Kabels von der TComPort Komponente immer die Meldung PurgeComm Function failed on COM4.
Das Problem ist, daß ich den Port gar nicht mehr dis-connecten kann oder an einem anderen gültigen COM-Port anmelden kann. Auch das Abfragen der USB-Messages von WIndows hilft nicht weiter, da der Port ja schon 'weg' ist, wenn das Event auftritt.

Irgendeine Idee, wie ich den ComPort zur Laufzeit wieder DisConnected bekomme??

Gruß, Michael
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#17

Re: Comport-Exception abfangen und verbindung schließen

  Alt 22. Apr 2009, 22:26
Schwierig.
Eigentlich geht es nur dann, wenn Du auch die Hardware der Gegestelle programmierst. Dann kannst Du eine Art Watchdogfunktion implementieren. Solange der Treiber keine eindeutige Antwort "Hardwareverbindung getrennt" liefert, bist Du weitgehend hilflos.
Das Problem ist, dass der Treiber bei abgezogener Hardware bisher in der Abfrage steckenbleibt. Dann kannst Du ihn auch nicht durch einen anderen Thread deaktivieren.
Wenn man es schaffen könnte, einen Windows-Treiber zur Laufzeit hart zu deaktivieren und neu initialisieren zu können, könnte das klappen, wenn der Treiber beim Fehler (Kabel abgezogen) eine Meldung macht.

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.
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