Anzeige

Am Puls von Microsoft

Anzeige

Frage Com Port freigeben

Pur

Herzlich willkommen
Hallo,

wenn ein MS-DOS-Programm unter Windows XP einen seriellen Port benützt (öffnet und wieder schließt), wird er für andere Programme erst wieder freigegeben, wenn das MS-DOS-Programm beendet wird.

Gibt es eine Möglichkeit, die COM-Schnittstelle während der Laufzeit des MS-DOS-Programms doch für andere Programme freizugeben?

MfG
Pur
 
Anzeige
Das wird vermutlich etwas tricky und aufwändig, hierfür eine Batch-Datei zu schreiben,
zumal DOS-Programme im laufenden Betrieb derartige Änderungen sicher nicht zulassen.
Außerdem muß man dem DOS-Programm auch mitteilen, wann dieser Port wieder freigegeben wird.

Was du aber versuchen kannst, ist, über den Befehl
Code:
change port
portx=porty
dem DOS-Programm einen anderen seriellen Anschluß zuzuweisen.
Wobei "x" für den aktuellen und "y" für den zukünftigen COM-Port stehen.

Allerdings weiß ich nicht, welche Ports bei den anderen Anwendungen benutzt werden.
 
Hallo Franz,

die Anwendung wird mindestens zweimal über ein Netzwerk gestartet. In jeder Instanz dieser Anwendung wird (über einen COM-Server) dieselbe COM-Schnittstelle angesprochen.
Wenn nun eine Instanz einmal die COM-Schnittstelle benützt hat, können die anderen Instanzen nicht mehr auf die COM zugreifen.

Nach jeder Benützung der COM wird selbstverständlich die COM vom Programm geschlossen. Das nützt aber nichts, sie wird erst freigegeben wenn die Instanz geschlossen wird.
 
Jetzt bist du mir fast durchs Netz.

Hast du inzwischen eine Lösung finden können?
Wie sieht es, wenn du dem Programm einen anderen Port zuweisen würdest -
schon probiert?
 
Hallo Franz,

wo/wie (in einer Batch-Datei?) muss der Code eingegeben werden?

Ich konnte das Problem schon weiter einkreisen.

Es ist/war ein Windows XP-Bug, der mit dem SP3 behoben wurde.

The NTVDM CommsAutoClose setting does not work in Windows XP
http://207.46.225.250/kb/946480/de

Jetzt muss ich ‚nur’ noch wissen, wo man den Wert CommsAutoClose (in der Registry?) für das Programm NTVDM setzen kann und welchen Wert man CommsAutoClose zuordnen muss.

Hier habe ich diese Frage auch schon gestellt:

NTVDM-CommsAutoClose
 
Hast du den HotFix oder das SP 3 von Microsoft ausgespielt?
Danach würde ich das Programm kurzerhand neu installieren, damit es die Änderungen übernimmt.
Danach sollte das Problem behoben sein.

Leider habe ich hier kein XP, deswegen kann ich dir nicht sagen, wo du den Registry-Eintrag finden wirst.
Hast du die Suchfunktion in der Registrierung mit dem Schlüsserlwort "CommsAutoClose" bemüht?
 
Hallo Franz,

ich habe Windows XP mit SP3 und in der Registry CommsAutoClose gesucht – aber nicht gefunden.

Ich nehme an, dass CommsAutoClose den Default-Wert FALSE hat – es sei denn man setzt ihn ausdrücklich auf TRUE (falls CommsAutoClose ein Boolescher Wert ist).

Wenn man nach CommsAutoClose googelt, bekommt man nur Hinweise, dass CommsAutoClose mit Windows XP ohne SP3 nicht ausgewertet wird, aber nicht *wo* es mit dem SP3 gelesen/ausgewertet wird.
 
Das heißt also, es funktioniert trotz HotFix und SP3 nicht?
Dann vermute ich, daß das Programm nur mit einem etwas größeren Aufwand
zum Port-Wechsel animiert wird.

Probleme mit MS-DOS-basierten Programmen unter Windows XP lösen

Die Änderungen, die sich auf den Portwechsel, bzw. der temporären Freigabe des Ports, beziehen,
lassen demnach nicht mit einer einfachen change port-Batchdatei beheben,
sondern die Befehle müssen auch dauerhaft im NTDVM-System, in der autoexec.bat, config.nt und config.sys eingetragen sein.

Aber vielleicht hilft besser ein Zusatzprogramm, hast du das hier schon ausprobiert?

Shared Serial Ports Software
 
Hallo Franz,

ich bin noch „am basteln“, wo ich das AutoCommsClose einarbeiten kann.

Ich versuche es erst einmal mit „AutoCommsClose=1“.
 
Anzeige
Oben