freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于單片機(jī)的多功能環(huán)境檢測(cè)系統(tǒng)設(shè)計(jì)(編輯修改稿)

2024-07-11 02:34 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 Access是微軟公司推出的基于 Windows的桌面關(guān)系數(shù)據(jù)庫(kù)管理 系統(tǒng),是 Office系列應(yīng)用軟件之一。它提供了表、查詢、窗體、報(bào)表、頁(yè)、宏和模塊來(lái)建立數(shù)據(jù)庫(kù)系統(tǒng)的對(duì)象;提供了多種向?qū)?、.生成器和模板,把?shù)據(jù)存儲(chǔ)、查詢、界面設(shè)計(jì)、報(bào)表生成等操作規(guī)范化等。 幾種數(shù)據(jù)庫(kù)各有特點(diǎn),其中 Access是一個(gè)中、小型數(shù)據(jù)庫(kù)管理系統(tǒng),使用方便、功能強(qiáng)大、易操作并且很實(shí)用,它適合數(shù)據(jù)量不太大的應(yīng)用,在處理數(shù)據(jù)庫(kù)時(shí)效率也很高。所以本課題選用 Access作為數(shù)據(jù)庫(kù)平臺(tái),既可以滿足數(shù)據(jù)操作方便迅速的特點(diǎn),也可以降低軟件的開(kāi)發(fā)成本。 串口通信的實(shí)現(xiàn)方法 概述 實(shí)際中串口通信程 序的開(kāi)發(fā)很少直接使用 API函數(shù),因?yàn)檫@會(huì)無(wú)謂的增加編程難度,也會(huì)給調(diào)試帶來(lái)諸多不便。在面向?qū)ο蠓椒ㄏ峦ǔJ褂么陬?(即串口函數(shù)庫(kù) ),這樣編程效率即高,調(diào)試又方便。下面就從通信 API介紹、串口類開(kāi)發(fā)這兩方面加以介紹。 l、串口通信 API函數(shù)基礎(chǔ) 通信 API函數(shù)是整個(gè)串口通信程序的基礎(chǔ),串口類中的任何成員函數(shù)也只不過(guò)是對(duì)通信 API函數(shù)的封裝而己。通信 API函數(shù)所涉及的操作包括串口的打開(kāi)、關(guān)閉、初始化與讀寫(xiě)等。 (1)串口的打開(kāi)與關(guān)閉 Win32系統(tǒng)把文件的概念進(jìn)行了擴(kuò)展,無(wú)論是文件、通信設(shè)備、命名管道、 郵槽、磁盤(pán),還是控制臺(tái),都是用 API函數(shù) Create File()來(lái)打開(kāi)或創(chuàng)建的。如果打開(kāi)成功的話健雄職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 10會(huì)返回一個(gè)串口的句柄,應(yīng)用程序應(yīng)對(duì)這個(gè)句柄判斷其有效性。當(dāng)不再使用該串口句柄時(shí),應(yīng)該調(diào)用 CloseHandle0函數(shù)關(guān)閉之,以方便其它應(yīng)用程序申請(qǐng)對(duì)串口的控制權(quán)。 (2)串口的初始 化 在打開(kāi)串口后,常常需要對(duì)串口進(jìn)行一些初始化工作,這需要通過(guò)一個(gè) DCB結(jié)構(gòu)來(lái)進(jìn)行。 DCB結(jié)構(gòu)包含了諸如波特率、數(shù)據(jù)位數(shù)、奇偶校驗(yàn)和停止位數(shù)等信息。在查詢或配置串行口的屬性時(shí),都要用 DCB結(jié)構(gòu)來(lái)作為緩沖區(qū)。 調(diào)用函數(shù)可以獲得串口的配置 ,該函數(shù)把當(dāng)前配置填充到一個(gè) DCB結(jié)構(gòu)中。一般在用 CreateFile0打開(kāi)串行口后,就調(diào)用 GetCommState()函數(shù)來(lái)獲取串行口的初始配置。要修改串行口的配置,應(yīng)該先修改 DCB結(jié)構(gòu),然后再調(diào)用 SetCommState0函數(shù)用指定的 DCB結(jié)構(gòu)來(lái)設(shè)置串行口。 除了在 DCB中的設(shè)置外,程序一般還需要設(shè)置 I/ O緩沖區(qū)的大小。 Windows用陽(yáng)緩沖區(qū)來(lái)暫存串行口輸入和輸出的數(shù)據(jù),如果通信的速率較高,則應(yīng)該設(shè)置較大的緩沖區(qū).調(diào)用 SctupCommO函數(shù)可以設(shè)置串行口的輸入和輸出緩沖區(qū)的大小。在對(duì)串口進(jìn)行讀寫(xiě)的時(shí) 候,需要考慮超時(shí)問(wèn)題。超時(shí)有兩種:間隔超時(shí)和總超時(shí)。間隔超時(shí)是指在接收時(shí)兩個(gè)字符之間的最大時(shí)延,總超時(shí)是指讀寫(xiě)操作總共花費(fèi)的最大時(shí)間 。寫(xiě)操作只支持總超時(shí),而讀操作兩種超時(shí)均支持。在用異步方式讀寫(xiě)串行口時(shí),雖然在完成讀/寫(xiě)操作以前就可能返回,但超時(shí)仍然是起作用的。在這種情況下,超時(shí)規(guī)定的是操作的完成時(shí)間,而不是讀/寫(xiě)函數(shù)的返回時(shí)間。 (3)串口的讀寫(xiě)控制 這部分內(nèi)容關(guān)系到串行通信的核心內(nèi)容,將分讀/寫(xiě)串口 API函數(shù)、異步 I/ O操作兩部分介紹。 讀/寫(xiě)串口 API函數(shù): win32中使用 ReadFile0函數(shù)或者 ReadFileEx0數(shù)從串口中讀取數(shù)據(jù)。兩者區(qū)別是:前者對(duì)同步操作和異步操作都支持,而后者僅支持異步操作。 eadFile0函數(shù)第四個(gè)參數(shù),在讀操作之前應(yīng)置為 0。同樣,寫(xiě)串口函數(shù)也有兩個(gè),一個(gè)是 writeFile0,另一個(gè)是 writeFileEx0前者同時(shí)支持同步操作和異步操作,而后者僅支持異步操作。寫(xiě)函數(shù)不論在聲明形式上還是在使用方法上都與 ReadFile0十分相似,具體可以查看 MSDN幫助文檔。 異步 I/ O操作: 健雄職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 11在用 ReadFile0和 writeFile0讀寫(xiě)串行口時(shí),既可以同步執(zhí)行,也可以異步執(zhí)行。在同步執(zhí)行時(shí),函數(shù)直到操作完成后才返回。這意味著在同步執(zhí)行時(shí)線程會(huì)被阻塞,從而導(dǎo)致效率下降。在異步執(zhí)行時(shí),即使操作還未完成,調(diào)用的函數(shù)也會(huì)立即返回。費(fèi)時(shí)的 I/ O操作在后臺(tái)進(jìn)行,這樣線程就可以干別的事情。例如,線程可以在不同的端口上同時(shí)執(zhí)行 I/ O操作,甚至可以在同一端口上同時(shí)進(jìn)行讀寫(xiě)操作。 “異步 一詞的含義就在于此。 ReadFile0和 writeFile()函數(shù)是否為異步操作模式是由 CreateFile()函數(shù)決定的。如果在調(diào)用 CreateFileO創(chuàng)建句柄時(shí)指定了 ILE FLAG OVERLAPPED標(biāo)志, 那么調(diào)用 ReadFileO和 writeFileO對(duì)該句柄進(jìn)行的讀寫(xiě)操作就是異步的,如果未指定異步標(biāo)志,則讀寫(xiě)操作是同步的。 在設(shè)置了異步 I/ O操作后, I/ O操作和函數(shù)返回有以下兩種情況: 第一種,函數(shù)返回時(shí) I/ O操作己完成:此時(shí)結(jié)果好像是同步執(zhí)行的,但實(shí)際上這是異步操作的結(jié)果。第二種,函數(shù)返回時(shí) I/ O操作還沒(méi)完成:此時(shí)一方面,函數(shù)返回值為 0,并且 GetLastErrorO函數(shù)返回 ERROR IO PENDING;另一方面,系統(tǒng)把OVERLAPPED中的信號(hào)事件設(shè)為無(wú)信號(hào)狀態(tài)。當(dāng) I/ O操作完成后,系統(tǒng)將它設(shè)置 為有信號(hào)狀態(tài)。如果 GetLastError0函數(shù)返 IEIERROR IO PENDING,則說(shuō)明異步操作還沒(méi) 完 成, 線程 可以 等 待操 作完 成。 有兩 種 等待 辦法 :一 種辦 法 是用 像WaitForSingleObject0這樣的等待函數(shù)來(lái)等待 OVERLAPPED結(jié)構(gòu)的 hEvent成員,可以規(guī)定等待的時(shí)間,在等待函數(shù)返回后,調(diào)用 GetOverlappedResult0。另一種辦法是用GetOverlappedResult()函數(shù)等待,如果指定該函數(shù)的 bWait參數(shù)為 TRUE,那么該函數(shù)將等待 OVERLAPPED結(jié)構(gòu)的 hEvent事件,并且只有當(dāng) I/ O操作完成后方返回 (實(shí)際上這又變成了同步方式 )。同時(shí) GetOverlappedResultoi函數(shù)可以返回一個(gè) OVERLAPPED。結(jié)構(gòu)來(lái)報(bào)告包括實(shí)際傳輸字節(jié)在內(nèi)的重疊操作結(jié)果。 串口類的開(kāi)發(fā) 串口類是對(duì)通信 API函數(shù)進(jìn)行最一般的封裝,以便能夠應(yīng)用于不同的串口應(yīng)用程序開(kāi)發(fā)中?,F(xiàn)在開(kāi)發(fā)串口應(yīng)用程序的方法很多,如微軟的 MSCm控件,但是 MSComm本身存在一定的弊端,如只能發(fā)送 ASCII碼等。從用戶角度講上位機(jī)串口通信模塊的使用流程一般分四個(gè)步驟,即 “初始化并打開(kāi)串口一監(jiān)視串口 ~讀寫(xiě)串 21關(guān)閉串口 ’’。 健雄職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 12 串口通信 API 函數(shù)的實(shí)現(xiàn)原理 實(shí)際中串口通信程序的開(kāi)發(fā)很少直接使用 API函數(shù),因?yàn)檫@會(huì)無(wú)謂的增加編程難度,也會(huì)給調(diào)試帶來(lái)諸多不便。在面向?qū)ο蠓椒ㄏ峦ǔJ褂么陬?(即串口函數(shù)庫(kù) ),這樣編程效率即高,調(diào)試又方便。 通信 API函數(shù)是整個(gè)串口通信程序的基礎(chǔ),串口類中的任何成員函數(shù)也只不過(guò)是對(duì)通信 API函數(shù)的封裝而己。通信 API函數(shù)所涉及的操作包括串口的打開(kāi)、關(guān)閉、初始化與讀寫(xiě)等。 (1)串口的打開(kāi)與關(guān)閉 Win32系統(tǒng)把文件的概念進(jìn)行了擴(kuò)展,無(wú)論是文件、通信設(shè)備、 命名管道、郵槽、磁盤(pán),還是控制臺(tái),都是用 API函數(shù) CreateFile()來(lái)打開(kāi)或創(chuàng)建的。如果打開(kāi)成功的話會(huì)返回一個(gè)串口的句柄,應(yīng)用程序應(yīng)對(duì)這個(gè)句柄判斷其有效性。當(dāng)不再使用該串口句柄時(shí),應(yīng)該調(diào)用 CloseHandle0函數(shù)關(guān)閉之,以方便其它應(yīng)用程序申請(qǐng)對(duì)串口的控制權(quán)。 (2)串口的初始化 在打開(kāi)串口后,常常需要對(duì)串口進(jìn)行一些初始化工作,這需要通過(guò)一個(gè) DCB結(jié)構(gòu)來(lái)進(jìn)行。 DCB結(jié)構(gòu)包含了諸如波特率、數(shù)據(jù)位數(shù)、奇偶校驗(yàn)和停止位數(shù)等信息。在查詢或配置串行口的屬性時(shí),都要用 DCB結(jié)構(gòu)來(lái)作為緩沖區(qū)。 調(diào)用函數(shù)可 以獲得串口的配置,該函數(shù)把當(dāng)前配置填充到一個(gè) DCB結(jié)構(gòu)中。一般在CreateFile0打開(kāi)串行口后,就調(diào)用 GetCommState()i函 l數(shù)來(lái)獲取串行口的初始配置修改串行口的配置,應(yīng)該先修改 DCB結(jié)構(gòu),然后再調(diào)用 SetCommState0函數(shù)用指定的 DCB結(jié)構(gòu)來(lái)設(shè)置串行口 [3]。 除了在 DCB中的設(shè)置外,程序一般還需要設(shè)置 I/ O緩沖區(qū)的大小。 Windows用陽(yáng)緩沖區(qū)來(lái)暫存串行口輸入和輸出的數(shù)據(jù),如果通信的速率較高,則應(yīng)該設(shè)置較大的緩沖區(qū).調(diào)用 SctupCommOi函數(shù)可以設(shè)置串行口的輸入和輸出緩沖區(qū)的大小 。在對(duì)串口進(jìn)行讀寫(xiě)的時(shí)候,需要考慮超時(shí)問(wèn)題。超時(shí)有兩種:間隔超時(shí)和總超時(shí)。間隔超時(shí)是指在接收時(shí)兩個(gè)字符之間的最大時(shí)延,總超時(shí)是指讀寫(xiě)操作總共花費(fèi)的最大時(shí)間。寫(xiě)操作只支持總超時(shí),而讀操作兩種超時(shí)均支持。在用異步方式讀寫(xiě)串行口時(shí),雖然在完成讀/寫(xiě)操作以前就可能返回,但超時(shí)仍然是起作用的。在這種情況下,超時(shí)規(guī)定的是操作的完成時(shí)間,而不是讀/寫(xiě)函數(shù)的返回時(shí)間。 (3)串口的讀寫(xiě)控制 健雄職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 13這部分內(nèi)容關(guān)系到串行通信的核心內(nèi)容,將分讀/寫(xiě)串口 API函數(shù)、異步 I/ O操作兩部分介紹。讀/寫(xiě)串口 API函數(shù): win32中使用 ReadFile0函數(shù)或者 ReadFileEx0數(shù)從串口中讀取數(shù)據(jù)。兩者區(qū)別是:前者對(duì)同步操作和異步操作都支持,而后者僅支持異步操作。 ReadFile0函數(shù)第四個(gè)參數(shù),在讀操作之前應(yīng)置為 0。同樣,寫(xiě)串口函數(shù)也有兩個(gè),一個(gè)是 writeFile0,另一個(gè)是 writeFileEx0前者同時(shí)支持同步操作和異步操作,而后者僅支持異步操作。寫(xiě)函數(shù)不論在聲明形式上還是在使用方法上都與 ReadFile0十分相似,具體可以查看 MSDN幫助文檔。 異步 I/ O操作: 在用 ReadFile0和 writeFile0讀寫(xiě)串行口 時(shí),既可以同步執(zhí)行,也可以異步執(zhí)行。在同步執(zhí)行時(shí),函數(shù)直到操作完成后才返回。這意味著在同步執(zhí)行時(shí)線程會(huì)被阻塞,從而導(dǎo)致效率下降。在異步執(zhí)行時(shí),即使操作還未完成,調(diào)用的函數(shù)也會(huì)立即返回。費(fèi)時(shí)的 I/ O操作在后臺(tái)進(jìn)行,這樣線程就可以干別的事情。例如,線程可以在不同的端口上同時(shí)執(zhí)行 I/ O操作,甚至可以在同一端口上同時(shí)進(jìn)行讀寫(xiě)操作。 “異步 一詞的含義就在于此。 ReadFile0和 writeFile(i)函數(shù)是否為異步操作模式是由 CreateFile函數(shù)決定的。如果在調(diào)用 CreateFileO創(chuàng)建句柄時(shí)指定了 FILE FLAG OVERLAPPED標(biāo)志,那么調(diào)用 ReadFileO和 writeFileO對(duì)該句柄進(jìn)行的讀寫(xiě)操作就是異步的,如果未指定異步標(biāo)志,則讀寫(xiě)操作是同步的 [5]。 串口 類的開(kāi)發(fā) 串口類是對(duì)通信 API 函數(shù)進(jìn)行最一般的封裝,以便能夠應(yīng)用于不同的串口應(yīng)用程序開(kāi)發(fā)中。現(xiàn)在開(kāi)發(fā)串口應(yīng)用程序的方法很多,如微軟的 MSCm 控件,但是 MSComm本身存在一定的弊端,如只能發(fā)送 ASCII 碼等。從用戶角度講上位機(jī)串口通信模塊的使用流程一般分四個(gè)步驟,即“初始化并打開(kāi)串口 監(jiān)視串口 讀寫(xiě)串口 關(guān)閉串口 ” 。封裝串口類 CMyCom 的成員函數(shù)時(shí)也正是基于這種理解,各成員函數(shù)介紹如下: (1)初始化并打開(kāi)串口函數(shù) 函 數(shù) 聲明 形式 : BOOL CMyCom: InitMyCom(int nPort , int nBaud, int nDataBits,int nStopBits) 參數(shù)含義: nPort為端口號(hào),支持串口 l至串口 4; nBaud為波特率,支持常用波特率如 9600baud; nDataBits為數(shù)據(jù)位數(shù),支持 5— 8位: nStopBits為停止位數(shù),支持 1— 2位; 健雄職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 14返回值:當(dāng)設(shè)置成功后,返回值為 TRUE;失敗時(shí),返回值 為 FALSE; 實(shí)現(xiàn)原理:本函數(shù)只支持操作一個(gè)串口。程序根據(jù)串口配置情況調(diào)用 CreateFile0函數(shù)打開(kāi)串口,隨后啟動(dòng)串口監(jiān)視線程等待應(yīng)答數(shù)據(jù)。 串 口 已 打 開(kāi) 否調(diào) 用 C r e a t F i l e ( )打 開(kāi) n P o r t 指 定 端口句 柄 有 效 否設(shè) 置 I / O 緩 沖 區(qū) ,啟 動(dòng) 串 口 監(jiān) 視 線 程線 程 啟 動(dòng) 成 功否返 回 T U R E 返 回 F A L S E 否是否否是是 圖 31InitMyCom()函數(shù)流程圖 (2)寫(xiě)串口函數(shù)。 函數(shù)聲明形式: BOOL CMyCom: WriteMyCom(char*bur,DWORD dwBufLen) 參數(shù)含義: buf為待發(fā)命令的緩沖區(qū)指針, dwBufLen待發(fā)字符。 返回值: 返回值為實(shí)際發(fā)送的字符數(shù); 實(shí)現(xiàn)原理:該函數(shù)調(diào)用 WriteFileO發(fā)送命令并調(diào)用 GetOverlappedResult0函數(shù)返回實(shí)際發(fā)送的字符 [6]。 健雄職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 15第四章 使用 SPComm 控件實(shí)現(xiàn)串口通信 Delphi可以利用的眾多串行通信控件中 ,SPComm控件可謂是最簡(jiǎn)單 ,功能比較強(qiáng)大的一種 。它 支持 Data Bits(數(shù)據(jù)位 )、 Parity(奇偶校驗(yàn) )、 Stop Bits等設(shè)置 ,支持Read/Write,Timing Control(時(shí)序控制 ),Read Int
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1