例如,以下程式用於以同步讀寫方式開啟串列埠com1:
handle hcom;
dword dwerror;
hcon = createfile("com1", generic_read | generic_write, 0, null, open_existing, 0, null);
if (hcom == (handle)0xffffffff)
以下程式將串列埠設定為:波特率為9600,資料位數為7位,停止位為2 位,偶校驗,接收緩衝區和傳送緩衝區大小均為1024個位元組,最後用purgecomm函式終止所有的後台讀寫操作並清空接收緩衝區和傳送緩衝區:
dcb dcb;
dcb.baudrate = 9600; //波特率為9600
dcb.bytesize = 7; //資料位數為7位
dcb.parity = evenparity; //偶校驗
dcb.stopbits = 2; //兩個停止位
dcb.fbinary = true;
dcb.fparity = true;
if (!setcommstate(hcom, &dcb))
setupcomm(hcom, 1024, 1024);
purgecomm(hcom, purce_txabort | purge_rxabort | purge_txclear | purge_rxclear);
超時設定
超時設定是通過改變commtimeouts結構體的成員變數值來實現的,commtimeouts的原型為:
typedef struct _commtimeouts
commtimeouts, *lpcommtimeouts;
設定超時的函式為setcommtimeouts,其原型中接收commtimeouts的指標為引數:
bool setcommtimeouts(
handle hfile, // handle to communications device
lpcommtimeouts lpcommtimeouts // pointer to comm time-out structure
);
以下程式將串列埠讀操作的超時設定為10 毫秒:
commtimeouts to;
memset(&to, 0, sizeof(to));
to.readintervaltimeout = 10;
setcommtimeouts(hcom, &to);
與setcommtimeouts對應的getcommtimeouts()函式的原型為:
bool getcommtimeouts(
handle hfile, // handle of communications device
lpcommtimeouts lpcommtimeouts // pointer to comm time-out structure
);
事件設定
在讀寫串列埠之前,需要用setcommmask ()函式設定事件掩模來監視指定通訊埠上的事件,其原型為:
bool setcommmask(
handle hfile, //標識通訊埠的控制代碼
dword dwevtmask //能夠使能的通訊事件
);
有了set當然還會有get,與setcommmask對應的getcommmask()函式的原型為:
bool getcommmask(
handle hfile, //標識通訊埠的控制代碼
lpdword lpevtmask // address of variable to get event mask
);
關閉串列埠
利用api 函式實現串列埠通訊時關閉串列埠非常簡單,只需使用createfile 函式返回的控制代碼作為引數呼叫closehandle 即可:
bool closehandle(
handle hobject // handle to object to close
);
讀寫串列埠的實現(一)
windows開啟串列埠,讀寫串列埠,自動識別串列埠 該串列埠讀寫是採用非同步方式,即非阻塞模式進行讀寫串列埠 串列埠名形如 com3 com4 com22 等 其中com1至com9能成功開啟,但是com10及以上開啟都是失敗的,需要特殊處理 及com10以上的開啟方式是 com10 com11 ...
非同步讀寫的簡單串列埠類
serial.h ifndef serial h define serial h define fc dtrdsr 0x01 define fc rtscts 0x02 define fc xonxoff 0x04 define ascii bel 0x07 define ascii bs 0x08...
Labview上位機串列埠通訊 讀寫
使用visa進行串列埠通訊 2 讀取部分 首先依據協議進行包頭的識別,再從後續的位元組裡讀取位元組進行相應的判斷和顯示儲存,顯示儲存部分需要將接收的字串進行轉換 操作讀取的單個位元組 使用乙個for迴圈結構進行位元組的讀取,其中讀取部分使用迴圈移位結構依次向後累加的讀取位元組 3 寫入部分 依據待寫...