Änderung der Einstellungen der Kommunikationsressource

Wenn die CreateFile-Funktion ein Handle für eine serielle Kommunikationsressource öffnet, initialisiert und konfiguriert das System die Ressource gemäß den Werten, die beim letzten Öffnen der Ressource eingerichtet wurden. Durch Beibehalten der vorherigen Einstellungen kann der Benutzer die einstellungen beibehalten, die über einen Modusbefehl angegeben werden, wenn das Gerät erneut geöffnet wird. Zu den Werten, die vom vorherigen Öffnungsvorgang geerbt wurden, gehören die Konfigurationseinstellungen des Gerätesteuerungsblocks (eine DCB-Struktur) und die time-out-Werte, die in E/A-Vorgängen verwendet werden. Wenn das Gerät noch nie geöffnet wurde, wird es mit den Standardeinstellungen des Systems konfiguriert.

Um die Erstkonfiguration einer seriellen Kommunikationsressource zu bestimmen, ruft ein Prozess die GetCommState-Funktion auf, die eine DCB-Struktur mit seriellem Anschluss mit den aktuellen Konfigurationseinstellungen auffüllt. Um diese Konfiguration zu ändern, gibt ein Prozess eine DCB-Struktur in einem Aufruf der SetCommState-Funktion an.

Member der DCB-Struktur geben die Konfigurationseinstellungen an, z. B. die Baudrate, die Anzahl der Datenbits pro Byte und die Anzahl der Stoppbits pro Byte. Andere DCB-Member geben Sonderzeichen an und ermöglichen die Paritätsprüfung und Flusssteuerung. Wenn ein Prozess nur einige dieser Konfigurationseinstellungen ändern muss, sollte er zunächst GetCommState aufrufen, um eine DCB-Struktur mit der aktuellen Konfiguration auszufüllen. Anschließend kann der Prozess die wichtigen Werte in der DCB-Struktur anpassen und das Gerät neu konfigurieren, indem SetCommState aufgerufen und die geänderte DCB-Struktur angegeben wird. Mit diesem Verfahren wird sichergestellt, dass die unveränderten Member der DCB-Struktur entsprechende Werte enthalten. Ein häufiger Fehler ist z. B. das Konfigurieren eines Geräts mit einer DCB-Struktur, bei der das Häufchar-Element der Struktur gleich dem XoffChar-Member ist.

Die BuildCommDCB-Funktion bietet eine weitere Möglichkeit, eine DCB-Struktur zu ändern. BuildCommDCB verwendet eine Zeichenfolge mit der gleichen Form wie die Befehlszeilenargumente des Modebefehls, um die Baudrate, das Paritätsschema, die Anzahl der Stoppbits und die Anzahl der Datenbits anzugeben. Die verbleibenden Member von DCB werden von dieser Funktion nicht geändert, mit der Ausnahme, dass die entsprechenden Member so festgelegt sind, dass die Steuerung von CONTROL/XOFF und der Hardwareflusssteuerung deaktiviert wird. BuildCommDCB ändert nur eine DCB-Struktur. Das Gerät wird nicht neu konfiguriert.

Ein Prozess kann eine Kommunikationsressource mithilfe der GetCommProperties-Funktion neu konfigurieren, um Informationen von einem Gerätetreiber zu den unterstützten Konfigurationseinstellungen abzurufen. Der Prozess kann diese Informationen verwenden, um zu vermeiden, dass eine Konfiguration angegeben wird, die nicht unterstützt wird.

Die SetCommState-Funktion konfiguriert die Kommunikationsressource neu, wirkt sich jedoch nicht auf die interne Ausgabe und die Eingabepuffer des angegebenen Treibers aus. Die Puffer werden nicht geleert, und ausstehende Lese- und Schreibvorgänge werden nicht vorzeitig beendet.

Ein Prozess initialisiert eine Kommunikationsressource mithilfe der SetupComm-Funktion erneut, die die folgenden Aufgaben ausführt:

  • Beendet ausstehende Lese- und Schreibvorgänge, auch wenn sie nicht abgeschlossen wurden.
  • Verwirft ungelesene Zeichen und gibt die internen Ausgabe- und Eingabepuffer des Treibers frei, der der angegebenen Ressource zugeordnet ist.
  • Weist die interne Ausgabe und die Eingabepuffer neu zu.

Zum Aufrufen von SetupCommist kein Prozess erforderlich. Andernfalls initialisiert der Treiber der Ressource das Gerät mit den Standardeinstellungen, wenn das Kommunikationsressourcenhandle zum ersten Mal verwendet wird.