上位機(jī)和單片機(jī)串口編程---API函數(shù)編程

上位機(jī)和單片機(jī)串口編程---API函數(shù)編程

ID:41412058

大小:56.39 KB

頁數(shù):4頁

時(shí)間:2019-08-24

上位機(jī)和單片機(jī)串口編程---API函數(shù)編程_第1頁
上位機(jī)和單片機(jī)串口編程---API函數(shù)編程_第2頁
上位機(jī)和單片機(jī)串口編程---API函數(shù)編程_第3頁
上位機(jī)和單片機(jī)串口編程---API函數(shù)編程_第4頁
資源描述:

《上位機(jī)和單片機(jī)串口編程---API函數(shù)編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、不用MSComm控件,那看起來只能是使用WindowsAPIT,因?yàn)镸FC貌似沒有什么類封裝了串口API函數(shù)的。用WindowsAPI編寫串口程序本身是有巨大優(yōu)點(diǎn)的,因?yàn)榭刂颇芰?huì)更強(qiáng),效率也會(huì)更高,而且對(duì)丁?那些純綠色軟件追求者來說,沒有ActiveX控件比什么都重要——呵呵,我也是這么認(rèn)為。API編寫串口,過程一般是這樣的:1、創(chuàng)建串口句柄,用CreateFile;2、對(duì)串口的參數(shù)進(jìn)行設(shè)置,其屮比佼重要的是波特率(BaudRate),數(shù)據(jù)寬度(BytesBits),奇偶校驗(yàn)(Parity),停止位(StopBits),當(dāng)然,重要的還有端口號(hào)(Port);3、然后對(duì)串丨I進(jìn)行相應(yīng)的

2、讀寫操作,這時(shí)候用到ReadFile和WriteFile函數(shù);4、讀寫結(jié)束后,要關(guān)閉串口句柄,用CloseFile;下面依次大致講講個(gè)步驟的過程:第一步,從字面上去理解,人家也可以發(fā)現(xiàn)CreateFile實(shí)際上表明Windows是把串口當(dāng)作一個(gè)文件來處理的,所以它也有文件那樣的緩沖區(qū)、旬柄、讀寫錯(cuò)課等,不同的是,這個(gè)文件名字只有固定的兒個(gè)(一般為四個(gè)),而且始終存在(EXSITTNG),而且在調(diào)用CreateFile的時(shí)候請(qǐng)注意它的參數(shù)。CreateFile函數(shù)原型如下:HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDesiredAccess,D

3、WORDdwShareMode,LPSECURITY.ATTRIBUTESIpSecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile);lpFileName是你需要?jiǎng)?chuàng)建的端口號(hào),默認(rèn)情況卜?是C0M1;dwDesiredAccess是表明你想訃你創(chuàng)建的串口以何種方式存在于你的應(yīng)用程序中,因?yàn)榇甀I通常是可讀可寫的,所以這里必須設(shè)置為GENERIC_READ

4、GENERIC_WRITE;dwShareMode是用來設(shè)置串口共享屬性的,因?yàn)榇诩佑谂R界資源,當(dāng)然

5、不能共享,所以這里也必須設(shè)置為0;IpSecurityAttributes是設(shè)登安全模式,一般采川默認(rèn)的安全模式就可以了,選擇NULL;dwCreationDisposition是設(shè)置是否打開新的“文件"(上面說過了,Windows是把串口等端口當(dāng)作文件來處理的),因?yàn)榇趯儆谟布丝?,?dāng)然不能隨便重復(fù)創(chuàng)建,所以這里必須告訴Windows,每次創(chuàng)建的時(shí)候必須使用己經(jīng)存在的串口,所以這里設(shè)置OPEN_EXSITING;dwFlagsAndAttributes,這個(gè)參數(shù)可以設(shè)宜的值比較多,大家若需要深入了解可以查找MSDN,這里因?yàn)槲覀兘酉氯ヒ龅氖钱惒酵ㄓ?,所以需要設(shè)置FILE_FLA

6、G_OVERLAPPED:最后一個(gè)參數(shù)hTemplateFile是指定模板文件,串口沒有模板,選擇NULL;所以最后我們?cè)O(shè)遺的CreateFile兩數(shù)如F:m_hCom=CreateFile(m_sPort,GENERIC_READ

7、GENERIC_WR1TE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);在創(chuàng)建完巾口后,最后進(jìn)行句柄測(cè)試:if(m_hCom==INVALID_HANDLE_VALUE){AfxMessageBox(u打開串丨I失敗!”);return;}上面說到了并步,那什么是并步呢?界步是相對(duì)同步這個(gè)概念而言的。界

8、步,就是說,在進(jìn)行串口讀寫操作時(shí),不用等到I/O操作完成后函數(shù)才返回,也就是說,異步可以更快得響應(yīng)用戶操作;同步,相反,響應(yīng)的I/O操作必須完成麻函數(shù)才返回,否則阻塞線程。對(duì)于一些很簡(jiǎn)單的通訊程序來說,可以選擇同步,這樣可以省去很多錯(cuò)謀檢杳,但是對(duì)于復(fù)雜一點(diǎn)的應(yīng)用程序,異步是最佳選擇;第二步,設(shè)置串口,并創(chuàng)建串口線程。串口有很多的屬性,上血也已經(jīng)介紹了一些最重要的參數(shù)。這里不得不介紹一個(gè)重量級(jí)的數(shù)據(jù)結(jié)構(gòu)DCB:typedefstruct_DCB{//debDWORDDCBlength;//DCB結(jié)構(gòu)體大小DWORDBaudRate;〃波特率DWORDfBinary:1;〃是否是二進(jìn)制

9、,一般設(shè)置為TRUEDWORDfParity:1;//是否進(jìn)行奇偶校驗(yàn),我做的是ARM嵌入式,所以FALSEDWORDfOutxCtsFlow:l;//CTS線上的硬件握手DWORDfOutxDsrFlow:l;//DSR線上的碩件握手DWORDfDtrControl:2;//DTR控制DWORDfDsrSensitivity:1;DWORDfTXContinueOnXoffrl;DWORDfOutX:1;〃是否使用XON/XOFF協(xié)議DWORDflnX:

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(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)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。