Einzelnen Beitrag anzeigen

Elsterscher

Registriert seit: 18. Apr 2013
3 Beiträge
 
#1

Ausbleibende COM-Events

  Alt 18. Apr 2013, 16:05
Hallo zusammen,

es geht um eine Prüfanlage, bei der das Datenverwaltungsprogramm (Delphi) mit dem Anlagensteuerungsprogramm (C++) per COM-Interface kommuniziert.

Das Anlagensteuerungsprogramm hat den COM-Server implementiert.

Der Client ruft mehrere Methoden des COM-Servers auf und gibt damit den Prüfablauf vor. Mit einer Methode "Start", die sofort wiederkehrt, wird die Prüfung gestartet. Die während der Prüfung anfallenden Messergebnisse werden per Event vom Server zum Client übergeben, von denen mehrere zur Verfügung stehen.

Das funktioniert soweit sehr gut - nur leider nicht immer. Die Anzahl der Events liegt so zwischen 10 und 200 pro Prüfablauf.

Nach einer gewissen Zeit kommen beim Client keine Events mehr an, obwohl der Server sie feuert. Auf Serverseite kann dann man über
HRESULT hRet = pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
einen Fehlercode 2147549440 ermitteln, der dann in "Systemaufruf ist fehlgeschlagen" übersetzt werden kann.

Der Zeitpunkt bzw. die Anzahl der Events, die übertragen werden, sind dabei verschieden quasi wie das Wetter.

Danach kann ein neuer Prüfablauf definiert und eine neue Prüfung gestartet werden. Die Events kommen wieder an, als wäre nichts gewesen.

Wird eine Prüfung mit solchen fehlenden Events komplett wiederholt, ist der Ausstieg zu einem ähnlichen Zeitpunkt - es muss aber nicht genau die gleiche Stelle sein.

Zwischendurch wird die Verbindung zum COM-Server nicht neu aufgebaut.

Hat jemand mit Erfahrung mit solchen Effekten und wie man soetwas beseitigt?
  Mit Zitat antworten Zitat