WIN32_API串口通信編程實(shí)例教程

WIN32_API串口通信編程實(shí)例教程

ID:37158402

大?。?08.00 KB

頁數(shù):34頁

時(shí)間:2019-05-19

WIN32_API串口通信編程實(shí)例教程_第1頁
WIN32_API串口通信編程實(shí)例教程_第2頁
WIN32_API串口通信編程實(shí)例教程_第3頁
WIN32_API串口通信編程實(shí)例教程_第4頁
WIN32_API串口通信編程實(shí)例教程_第5頁
資源描述:

《WIN32_API串口通信編程實(shí)例教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、WIN32API串口通訊實(shí)例教程第一節(jié)實(shí)現(xiàn)串口通訊的函數(shù)及串口編程簡介API函數(shù)不僅提供了打開和讀寫通訊端口的操作方法,還提供了名目繁多的函數(shù)以支持對(duì)串行通訊的各種操作。常用函數(shù)及作用下:函數(shù)名作用CreateFile打開串口GetCommState檢測串口設(shè)置SetCommState設(shè)置串口BuilderCommDCB用字符串中的值來填充設(shè)備控制塊GetCommTimeouts檢測通信超時(shí)設(shè)置SetCommTimeouts設(shè)置通信超時(shí)參數(shù)SetCommMask設(shè)定被監(jiān)控事件WaitCommEvent等待被監(jiān)控事件發(fā)

2、生WaitForMultipleObjects等待多個(gè)被監(jiān)測對(duì)象的結(jié)果WriteFile發(fā)送數(shù)據(jù)ReadFile接收數(shù)據(jù)GetOverlappedResult返回最后重疊(異步)操作結(jié)果PurgeComm清空串口緩沖區(qū),退出所有相關(guān)操作ClearCommError更新串口狀態(tài)結(jié)構(gòu)體,并清除所有串口硬件錯(cuò)誤CloseHandle關(guān)閉串行口用WindowsAPI編寫串口程序本身是有巨大優(yōu)點(diǎn)的,因?yàn)榭刂颇芰?huì)更強(qiáng),效率也會(huì)更高。API編寫串口,過程一般是這樣的:1、創(chuàng)建串口句柄,用CreateFile;2、對(duì)串口的參數(shù)進(jìn)行

3、設(shè)置,其中比較重要的是波特率(BaudRate),數(shù)據(jù)寬度(BytesBits),奇偶校驗(yàn)(Parity),停止位(StopBits),當(dāng)然,重要的還有端口號(hào)(Port);3、然后對(duì)串口進(jìn)行相應(yīng)的讀寫操作,這時(shí)候用到ReadFile和WriteFile函數(shù);4、讀寫結(jié)束后,要關(guān)閉串口句柄,用CloseFile。下面依次講述各個(gè)步驟的過程。第一節(jié)創(chuàng)建串口句柄打開串口從字面上去理解,大家也可以發(fā)現(xiàn)CreateFile實(shí)際上表明Windows是把串口當(dāng)作一個(gè)文件來處理的,所以它也有文件那樣的緩沖區(qū)、句柄、讀寫錯(cuò)誤等,不同的

4、是,這個(gè)文件名字只有固定的幾個(gè)(一般為四個(gè)),而且始終存在(EXSITING),而且在調(diào)用CreateFile的時(shí)候請注意它的參數(shù)。CreateFile函數(shù)原型如下:HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLEhTem

5、plateFile);lpFileName:指向一個(gè)以NULL結(jié)束的字符串,該串指定了要?jiǎng)?chuàng)建、打開或截?cái)嗟奈募?、管道、通信源、磁盤設(shè)備或控制臺(tái)的名字。當(dāng)用CreateFile打開串口時(shí),這個(gè)參數(shù)可用“COM1”指定串口1,用“COM2”指定串口2,依此類推。dwDesireAccess:指定對(duì)文件訪問的類型,該參數(shù)可以為GENERIC_READ(指定對(duì)該文件的讀訪問權(quán))或GENERIC_WRITE(指定該文件的寫訪問權(quán))兩個(gè)值之一或同時(shí)為為這兩個(gè)值。用ENERIC_READ

6、GENERIC_WRITE則指定可對(duì)串口進(jìn)

7、行讀寫;dwShareMode:指定此文件可以怎樣被共享。因?yàn)榇锌诓恢С秩魏喂蚕砟J?,所以dwShareMode必須設(shè)為0;lpSecurityAttributes定義安全屬性,一般不用,可設(shè)為NULL。Win9x下該參數(shù)被忽略;dwCreationDistribution定義文件創(chuàng)建方式,對(duì)串口必須設(shè)為OPEN_EXISTING,表示打開已經(jīng)存在的文件;dwFlagsAndAttributes為該文件指定定義文件屬性和標(biāo)志,這個(gè)程序中設(shè)為FILE_FLAG_OVERLAPPED,表示異步通信方式; hTempla

8、teFile指向一個(gè)模板文件的句柄,串口無模板可言,設(shè)為NULL。在Windows9x下該參數(shù)必須為NULL。串口被成功打開時(shí),返回其句柄,否則返回INVALID_HANDLE_value(0XFFFFFFFF)。上面說到了異步,那什么是異步呢?異步是相對(duì)同步這個(gè)概念而言的。異步,就是說,在進(jìn)行串口讀寫操作時(shí),不用等到I/O操作完成后函數(shù)才返回,也就是說,異步可以更快得響應(yīng)用戶操作;同步,相反,響應(yīng)的I/O操作必須完成后函數(shù)才返回,否則阻塞線程。對(duì)于一些很簡單的通訊程序來說,可以選擇同步,這樣可以省去很多錯(cuò)誤檢查,但

9、是對(duì)于復(fù)雜一點(diǎn)的應(yīng)用程序,異步是最佳選擇。實(shí)例1:/******************example1.cpp******************************************//*lishaoan2009-06-29*****************************************************/

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。