修改通訊資源 設定
當 CreateFile 函式開啟序列通訊資源的句柄時,系統會根據上次開啟資源時所設定的值,初始化並設定資源。 保留先前的設定可讓使用者在重新開啟裝置時,透過模式命令保留指定的設定。 繼承自先前開啟作業的值包括裝置控制區塊的組態設定( DCB 結構)和 I/O 作業中使用的逾時值。 如果裝置從未開啟,則會使用系統預設值進行設定。
若要判斷序列通訊資源的初始組態,進程會呼叫 GetCommState 函式,此函式會填入具有目前組態設定的序列埠 DCB 結構。 若要修改此組態,進程會在對 SetCommState 函式的呼叫中指定 DCB 結構。
DCB 結構的成員會指定組態設定,例如包速率、每個位元組的數據位數目,以及每個位元組的停止位數目。 其他 DCB 成員會指定特殊字元,並啟用同位檢查和流程控制。 當程式只需要修改其中一些組態設定時,應該先呼叫 GetCommState,以填入 DCB 結構中的目前組態。 然後,此程式可以調整 DCB 結構中的重要值,並藉由呼叫 SetCommState 並指定修改的 DCB 結構來重新設定裝置。 此程式可確保 DCB 結構的未修改成員包含適當的值。 例如,常見的錯誤是設定具有DCB結構的裝置,其中結構的 XonChar 成員等於 XoffChar 成員。
BuildCommDCB 函式提供另一種方式來修改 DCB 結構。 BuildCommDCB 會使用與 mode 命令命令行自變數相同的格式字串,以指定傳輸速率、同位配置、停止位數目和數據位數目。 此函式不會變更 DCB 的其餘成員,不同之處在於適當的成員會設定為停用 XON/XOFF 和硬體流量控制。 BuildCommDCB 只會修改 DCB 結構;它不會重新設定裝置。
進程可以使用 GetCommProperties 函式重新設定通訊資源,從設備驅動器取得其支援的組態設定相關信息。 此程式可以使用這項資訊來避免指定不支援的組態。
SetCommState 函式會重新設定通訊資源,但不會影響指定驅動程式的內部輸出和輸入緩衝區。 不會清除緩衝區,而且暫止的讀取和寫入作業不會過早終止。
行程會使用 SetupComm 函式重新初始化通訊資源,其會執行下列工作:
- 即使尚未完成,仍會終止暫止的讀取和寫入作業。
- 捨棄未讀取的字元,並釋放與指定資源相關聯之驅動程式的內部輸出和輸入緩衝區。
- 重新配置內部輸出和輸入緩衝區。
不需要行程即可呼叫 SetupComm。 如果沒有,資源的驅動程式會在第一次使用通訊資源句柄時,使用預設設定來初始化裝置。