Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

COM-Port Dateihandle invalid - Neustart?

COM-Port Dateihandle invalid - Neustart?
13.02.2022 12:05:09
Bernd
Aus einem Growatt-Inverter werden mit Application.OnTime in einminütigem Abstand über USB mittels einem COM-Port-Emulator die Leistungsdaten ausgelesen. Hierzu wird in Excel das modCOMM-Modul von David M. Hitchner (https://gist.github.com/heiswayi/f47dfd8dc38955322bef) verwendet, was zumeist auch problemlos funktioniert. Der COM-Port wird dabei wie eine Datei behandelt:
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, lpSecurityAttributes As Any, _
ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
Allerdings kommt es zeitweise zu einer (nicht ermittelbaren) Störung, wonach das Dateihandle invalid ist, sich keine Read- bzw. Write-Zugriffe ausführen lassen und das Handle auch nicht mehr geschlossen werden kann. Ein erneutes Öffnen ist danach nicht wieder möglich – es muß Excel komplett beendet und neu gestartet werden.
Nun meine Fragen:
- Ist es irgendwie möglich derartige Fehler abzufangen?
- Können die mittels Lib „Kernel32“ erstellten Functions wieder neu initiiert werden?
- Gibt es eine Möglichkeit, den Arbeitsspeicher zu reorganisieren, falls dort Fehler aufgetreten sind?
- Wie könnte man, wenn alles o.g. nicht möglich ist, Excel nach einem derartigen Fehler automatisch schließen und wieder neu aufstarten?
Vielen Dank im Voraus für Eure Antworten!
Bernd

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: COM-Port Dateihandle invalid - Neustart?
13.02.2022 18:13:06
volti
Hallo Bernd,
mal 'ne Nachfrage.
wonach das Dateihandle invalid ist: Was heißt das? Ist es (hFile) einfach 0, also weg oder ist es noch da, aber nichts läuft mehr.
Für ersteres würde ich, wenn's öfter vorkommt, das irgendwo abspeichern (z.B. in einem versteckten Namen o.ä.). Ist ja nur eine Nummer.
Gruß
Karl-Heinz
AW: COM-Port Dateihandle invalid - Neustart?
13.02.2022 18:43:46
Bernd
Hallo Karl-Heinz,
danke für die Nachfrage!
Das tatsächliche Dateihandle (die Nummer) wird im modCOMM-Modul in der Variablen »lngHandle« gespeichert
Private Type COMM_PORT
lngHandle As Long
blnPortOpen As Boolean
udtDCB As DCB
End Type
und ist - soweit ich es debuggen konnte - auch nach dem Absturz noch vorhanden. Da man nie weiß, wann der Fehler auftritt, läßt er sich schwer debuggen. Ich habe manuell durch Abziehen des USB-Kabels einen Fehler erzeugt und da war die Handle-# in der Variablen »lngHandle« noch vorhanden.
Es scheint, daß der Zugriff in die Lib "kernel32" sich zerstört und deshalb kein Zugriff trotz vorhandenem Dateihandle mehr möglich ist. Bei einem Neustart von Excel werden die Funktionen, die auf Lib "kernel32" zugreifen, neu gestartet und funktionieren dann auch wieder (bis zum nächsten Fehler).
Liebe Grüße
Bernd
Anzeige
AW: COM-Port Dateihandle invalid - Neustart?
13.02.2022 19:03:05
volti
Hallo Bernd,
das ist ein verzwicktes Thema und gerade bei dieser Funktion weiß ich nicht genau, was da passiert, da werde ich wohl nicht weiter helfen können.
Die Kernel32 hat als eine der Haupt-DLL in meinem API-Viewer weit über 100 Funktionen drin. Ich denke nicht, dass da irgendwas "kaputt" geht, da würde ja so manch eines nicht mehr funktionieren.
Wahrscheinlich hängt sich im Ablauf irgendwas auf.
Hast Du denn mal probiert, mit einem zweiten Testcode eine weitere File zu öffnen?
Gruß
KH
AW: COM-Port Dateihandle invalid - Neustart?
13.02.2022 19:30:45
Bernd
Hallo Karl-Heinz,
möglicherweise hat Excel auch ein Speicherverwaltungsproblem, das den Zugriff auf die Kernel32-Lib ruiniert. Die DLL selbst wird sicher keinen Schaden nehmen, sonst würde nach einem Neustart der Fehler bestehen bleiben.
Ich habe noch an einem zweiten USB-Port ein Steuermodul angeschlossen, das auch über das modCOMM-Modul angesteuert wird. Das ging dann auch nicht mehr. Allerdings müßte ich das nochmal mit weiteren Tests exakt überprüfen.
Liebe Grüße
Bernd
Anzeige
AW: COM-Port Dateihandle invalid - Neustart?
13.02.2022 20:28:12
Bernd
Falls noch jemand eine Idee zu diesem Thema hat, würde ich mich über weitere Antworten freuen.
Liebe Grüße
Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige