串列埠通訊程式設計一日通4 串列埠基本操作

2021-06-18 17:50:10 字數 2876 閱讀 3519

前幾篇大概介紹了串列埠的相關幾個結構,了解後開始進入windows api的基本操作

1.createfile建立開啟串列埠

用指定的方式開啟指定的串列埠,注意檔案在windows的概念很廣泛,包括:檔案、通訊裝置、命名管道、郵件、磁碟和控制台。

我們前面宣告了控制代碼

/*串列埠控制代碼*/

handle    m_hcomm;

那麼接下來可以這樣建立:

m_hcom = createfile( "com1",  //串列埠1

generic_read | generic_write, //指定可以對串列埠進行讀寫操作

0, //表示串列埠為獨佔開啟

null,

open_existing, //表示當指定串列埠不存在時,程式將返回失敗

null );

2.readfile:讀取串列埠資料

宣告如下:

winbaseapi

bool

winapi

readfile(

handle hfile,  //檔案控制代碼

lpvoid lpbuffer,//讀寫資料緩衝區

dword nnumberofbytestoread,//多少資料要讀取

lpdword lpnumberofbytesread,//已經讀取多少資料

);3.writefile:向串列埠寫資料

winbaseapi

bool

winapi

writefile(

handle hfile,//檔案控制代碼

lpcvoid lpbuffer,//讀寫資料緩衝區

dword nnumberofbytestowrite,//多少資料要寫入

lpdword lpnumberofbyteswritten,//已經寫入多少資料

);4.closehandle:關閉串列埠

winbaseapi

bool

winapi

closehandle(

handle hobject

);5.getcommstate獲取當前串列埠配置

winbaseapi

bool

winapi

getcommstate(

handle hfile,//通訊裝置控制代碼

lpdcb lpdcb//指向dcb

);6.setcommstate配置串列埠

winbaseapi

bool

winapi

setcommstate(

handle hfile,//通訊裝置控制代碼

lpdcb lpdcb//指向dcb

);7.setcommtimeouts超時設定

winbaseapi

bool

winapi

setcommtimeouts(

handle hfile,

lpcommtimeouts lpcommtimeouts//超時結構

);8.clearcommerror清除錯誤標誌

winbaseapi

bool

winapi

clearcommerror(

handle hfile,//通訊裝置

lpdword lperrors,//錯誤掩碼型別

lpcomstat lpstat);

10.waitforsingleobject非同步io事件獲取

winbaseapi

dword

winapi

waitforsingleobject(

handle hhandle,

dword dwmilliseconds

);11.waitformultipleobjects等待多個事件

winbaseapi

dword

winapi

waitformultipleobjects(

dword ncount,  //事件控制代碼組的事件組

const handle *lphandles,//事件陣列

bool bwaitall,//true:所有事件發生才返回;false:有乙個事件發生就返回

dword dwmilliseconds//等待時間

);12.setcommmask通訊事件設定

winbaseapi

bool

winapi

setcommmask(

handle hfile,

dword dwevtmask//事件碼

);13.getcommmask當前通訊事件獲取

winbaseapi

bool

winapi

getcommmask(

handle hfile,

lpdword lpevtmask

);14.waitcommevent通訊事件監測

15.createevent事件建立

handle createevent(

lpsecurity_attributes lpeventattributes,

bool bmanualreset,

bool binitialstate,

lpcstr lpname

);常用的就這麼多了,不熟悉的去msdn查,看看就知道用法

串列埠程式設計 (1)串列埠基本知識

計算機為了弄懂傳給它的序列資料,它需要確定每個字元開始和結束的位置。這通常是用非同步序列資料來完成的。在非同步模式中,除非有字元被傳輸,否則序列資料線總是處於mark 1 狀態。有乙個start位會被加入傳輸字元的各個位之前,在字元本身的位之後會有乙個可選的parity位和乙個或者多個stop位。s...

串列埠通訊模組2 串列埠通訊程式設計基礎 開啟 配置

有兩種方式可以操作串列埠 同步操作方式和非同步操作方式 即重疊操作方式 同步操作時,api函式會阻塞直到操作完成以後才能返回 在多執行緒方式中,雖然不會阻塞主線程,但是仍然會阻塞監聽執行緒 而非同步操作方式,api函式會立即返回,操作在後台進行,避免程序阻塞。非同步操作方式還允許讀 寫操作能同時進行...

linux串列埠通訊(一) 串列埠的概念

二 串列埠內部 序列介面 serial inte ce 是指資料一位一位地順序傳送,其特點是通訊線路簡單,只要一對傳輸線就可以實現雙向通訊 可以直接利用 線作為傳輸線 從而大大降低了成本,特別適用於遠距離通訊,但傳送速度較慢。一條資訊的各位資料被逐位按順序傳送的通訊方式稱為序列通訊。序列通訊的特點是...