Freigeben über


Ändern der Kommunikationsressourceneinstellungen

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. Die Beibehaltung der vorherigen Einstellungen ermöglicht es dem Benutzer, die über einen Modusbefehl angegebenen Einstellungen beizubehalten, wenn das Gerät erneut geöffnet wird. Die vom vorherigen geöffneten Vorgang geerbten Werte umfassen die Konfigurationseinstellungen des Gerätesteuerungsblocks (eine DCB-Struktur ) und die Timeoutwerte, die in E/A-Vorgängen verwendet werden. Wenn das Gerät noch nie geöffnet wurde, wird es mit den Systemstandardeinstellungen konfiguriert.

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

Mitglieder 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 Paritätsüberprüfung und Flusssteuerung. Wenn ein Prozess nur einige dieser Konfigurationseinstellungen ändern muss, sollte er zuerst 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 Er SetCommState aufruft und die geänderte DCB-Struktur angibt. Mit diesem Verfahren wird sichergestellt, dass die unveränderten Member der DCB-Struktur geeignete Werte enthalten. Ein häufiger Fehler besteht beispielsweise darin, ein Gerät mit einer DCB-Struktur zu konfigurieren, bei der das XonChar-Element der Struktur gleich dem XoffChar-Element 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 Modusbefehls , um die Baudrate, das Paritätsschema, die Anzahl der Stoppbits und die Anzahl der Datenbits anzugeben. Die restlichen Member von DCB werden von dieser Funktion nicht geändert, mit der Ausnahme, dass die entsprechenden Member so festgelegt sind, dass XON/XOFF und die Hardwareflusssteuerung deaktiviert werden. 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 über die 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 neu, die die folgenden Aufgaben ausführt:

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

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