GetCommState函式的第一個參數hFile是由CreateFile函式返回指向已打開串列口的句柄。
簡介,擴充,
簡介
函式聲明:
BOOL GetCommState(
HANDLE hFile,
LPDCB lpDCB
);
GetCommState函式的第一個參數hFile是由CreateFile函式返回指向已打開串列口的句柄。第二個參數指向設備控制塊DCB。如果函式調用成功,則返回值為非0;若函式調用失敗,則返回值為0。
當應用程式僅僅需要修改一部分串列口的配置值時,可以通過GetCommState函式獲得當前的DCB結構,然後更改參數,再調用SetCommState函式設定修改過的DCB來配置串列口。
擴充
一般用CreateFile打開串口後,可以調用GetCommState函式來獲取串口的初始配置。要修改串口的配置,應該先修改DCB結構,然後再調用SetCommState函式設定串口。
DCB結構包含了串口的各項參數設定,下面僅介紹幾個該結構常用的變數:
DWORD BaudRate; //CBR_110,CBR_300,CBR_600,CBR_1200,CBR_2400,CBR_4800,CBR_9600,CBR_19200, CBR_38400,
//CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000, CBR_14400 DWORD
fParity; // 指定奇偶校驗使能。若此成員為1,允許奇偶校驗檢查 //…
BYTE ByteSize; // 通信位元組位數,4—8
BYTE Parity; //指定奇偶校驗方法。此成員可以有下列值:
//EVENPARITY 偶校驗 NOPARITY 無校驗//MARKPARITY 標記校驗 ODDPARITY 奇校驗
BYTE StopBits; //指定停止位的位數。此成員可以有下列值:
//ONESTOPBIT 1位停止位 TWOSTOPBITS 2位停止位
//ONE5STOPBITS 1.5位停止位//……… } DCB;
GetCommState函式可以獲得COM口的設備控制塊,從而獲得相關參數: BOOL GetCommState( HANDLE hFile, //標識通訊連線埠的句柄 LPDCB lpDCB //指向一個設備控制塊(DCB結構)的指針 );
SetCommState函式設定COM口的設備控制塊: BOOL SetCommState( HANDLE hFile, LPDCB lpDCB );
除了在BCD中的設定外,程式一般還需要設定I/O緩衝區的大小和逾時。Windows用I/O緩衝區來暫存串口輸入和輸出的數據。如果通信的速率較高,則應該設定較大的緩衝區。調用SetupComm函式可以設定串列口的輸入和輸出緩衝區的大小。 BOOL SetupComm( HANDLE hFile, // 通信設備的句柄 DWORD dwInQueue,// 輸入緩衝區的大小(位元組數) DWORD dwOutQueue // 輸出緩衝區的大小(位元組數) );abc