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

正文內容

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

2025-07-21 16:22 本頁面
 

【文章內容簡介】 甚至可以在同一端口上同時進行讀寫操作?!爱惒揭辉~的含義就在于此。ReadFile0和writeFile()函數(shù)是否為異步操作模式是由CreateFile()函數(shù)決定的。如果在調用CreateFileO創(chuàng)建句柄時指定了ILE FLAG OVERLAPPED標志,那么調用ReadFileO和writeFileO對該句柄進行的讀寫操作就是異步的,如果未指定異步標志,則讀寫操作是同步的。在設置了異步I/O操作后,I/O操作和函數(shù)返回有以下兩種情況:第一種,函數(shù)返回時I/O操作己完成:此時結果好像是同步執(zhí)行的,但實際上這是異步操作的結果。第二種,函數(shù)返回時I/O操作還沒完成:此時一方面,函數(shù)返回值為0,并且GetLastErrorO函數(shù)返回ERROR IO PENDING;另一方面,系統(tǒng)把OVERLAPPED中的信號事件設為無信號狀態(tài)。當I/O操作完成后,系統(tǒng)將它設置為有信號狀態(tài)。如果GetLastError0函數(shù)返IEIERROR IO PENDING,則說明異步操作還沒完成,線程可以等待操作完成。有兩種等待辦法:一種辦法是用像WaitForSingleObject0這樣的等待函數(shù)來等待OVERLAPPED結構的hEvent成員,可以規(guī)定等待的時間,在等待函數(shù)返回后,調用GetOverlappedResult0。另一種辦法是用GetOverlappedResult()函數(shù)等待,如果指定該函數(shù)的bWait參數(shù)為TRUE,那么該函數(shù)將等待OVERLAPPED結構的hEvent事件,并且只有當I/O操作完成后方返回(實際上這又變成了同步方式)。同時GetOverlappedResultoi函數(shù)可以返回一個OVERLAPPED。結構來報告包括實際傳輸字節(jié)在內的重疊操作結果。串口類的開發(fā)串口類是對通信API函數(shù)進行最一般的封裝,以便能夠應用于不同的串口應用程序開發(fā)中?,F(xiàn)在開發(fā)串口應用程序的方法很多,如微軟的MSCm控件,但是MSComm本身存在一定的弊端,如只能發(fā)送ASCII碼等。從用戶角度講上位機串口通信模塊的使用流程一般分四個步驟,即“初始化并打開串口一監(jiān)視串口~讀寫串21關閉串口’’。 串口通信API函數(shù)的實現(xiàn)原理實際中串口通信程序的開發(fā)很少直接使用API函數(shù),因為這會無謂的增加編程難度,也會給調試帶來諸多不便。在面向對象方法下通常使用串口類(即串口函數(shù)庫),這樣編程效率即高,調試又方便。通信API函數(shù)是整個串口通信程序的基礎,串口類中的任何成員函數(shù)也只不過是對通信API函數(shù)的封裝而己。通信API函數(shù)所涉及的操作包括串口的打開、關閉、初始化與讀寫等。 (1)串口的打開與關閉Win32系統(tǒng)把文件的概念進行了擴展,無論是文件、通信設備、命名管道、郵槽、磁盤,還是控制臺,都是用API函數(shù)CreateFile()來打開或創(chuàng)建的。如果打開成功的話會返回一個串口的句柄,應用程序應對這個句柄判斷其有效性。當不再使用該串口句柄時,應該調用CloseHandle0函數(shù)關閉之,以方便其它應用程序申請對串口的控制權。 (2)串口的初始化在打開串口后,常常需要對串口進行一些初始化工作,這需要通過一個DCB結構來進行。DCB結構包含了諸如波特率、數(shù)據(jù)位數(shù)、奇偶校驗和停止位數(shù)等信息。在查詢或配置串行口的屬性時,都要用DCB結構來作為緩沖區(qū)。調用函數(shù)可以獲得串口的配置,該函數(shù)把當前配置填充到一個DCB結構中。一般在CreateFile0打開串行口后,就調用GetCommState()i函l數(shù)來獲取串行口的初始配置修改串行口的配置,應該先修改DCB結構,然后再調用SetCommState0函數(shù)用指定的DCB結構來設置串行口[3]。除了在DCB中的設置外,程序一般還需要設置I/O緩沖區(qū)的大小。Windows用陽緩沖區(qū)來暫存串行口輸入和輸出的數(shù)據(jù),如果通信的速率較高,則應該設置較大的緩沖區(qū).調用SctupCommOi函數(shù)可以設置串行口的輸入和輸出緩沖區(qū)的大小。在對串口進行讀寫的時候,需要考慮超時問題。超時有兩種:間隔超時和總超時。間隔超時是指在接收時兩個字符之間的最大時延,總超時是指讀寫操作總共花費的最大時間。寫操作只支持總超時,而讀操作兩種超時均支持。在用異步方式讀寫串行口時,雖然在完成讀/寫操作以前就可能返回,但超時仍然是起作用的。在這種情況下,超時規(guī)定的是操作的完成時間,而不是讀/寫函數(shù)的返回時間。 (3)串口的讀寫控制這部分內容關系到串行通信的核心內容,將分讀/寫串口API函數(shù)、異步I/O操作兩部分介紹。讀/寫串口API函數(shù):win32中使用ReadFile0函數(shù)或者ReadFileEx0數(shù)從串口中讀取數(shù)據(jù)。兩者區(qū)別是:前者對同步操作和異步操作都支持,而后者僅支持異步操作。ReadFile0函數(shù)第四個參數(shù),在讀操作之前應置為0。同樣,寫串口函數(shù)也有兩個,一個是writeFile0,另一個是writeFileEx0前者同時支持同步操作和異步操作,而后者僅支持異步操作。寫函數(shù)不論在聲明形式上還是在使用方法上都與ReadFile0十分相似,具體可以查看MSDN幫助文檔。 異步I/O操作:在用ReadFile0和writeFile0讀寫串行口時,既可以同步執(zhí)行,也可以異步執(zhí)行。在同步執(zhí)行時,函數(shù)直到操作完成后才返回。這意味著在同步執(zhí)行時線程會被阻塞,從而導致效率下降。在異步執(zhí)行時,即使操作還未完成,調用的函數(shù)也會立即返回。費時的I/O操作在后臺進行,這樣線程就可以干別的事情。例如,線程可以在不同的端口上同時執(zhí)行I/O操作,甚至可以在同一端口上同時進行讀寫操作?!爱惒揭辉~的含義就在于此。ReadFile0和writeFile(i)函數(shù)是否為異步操作模式是由CreateFile函數(shù)決定的。如果在調用CreateFileO創(chuàng)建句柄時指定了FILE FLAG OVERLAPPED標志,那么調用ReadFileO和writeFileO對該句柄進行的讀寫操作就是異步的,如果未指定異步標志,則讀寫操作是同步的[5]。 串口類的開發(fā)串口類是對通信API函數(shù)進行最一般的封裝,以便能夠應用于不同的串口應用程序開發(fā)中?,F(xiàn)在開發(fā)串口應用程序的方法很多,如微軟的MSCm控件,但是MSComm本身存在一定的弊端,如只能發(fā)送ASCII碼等。從用戶角度講上位機串口通信模塊的使用流程一般分四個步驟,即“初始化并打開串口監(jiān)視串口讀寫串口關閉串口”。封裝串口類CMyCom的成員函數(shù)時也正是基于這種理解,各成員函數(shù)介紹如下:(1)初始化并打開串口函數(shù)函數(shù)聲明形式:BOOL CMyCom:InitMyCom(int nPort,int nBaud,int nDataBits,int nStopBits)參數(shù)含義:nPort為端口號,支持串口l至串口4;nBaud為波特率,支持常用波特率如9600baud;nDataBits為數(shù)據(jù)位數(shù),支持5—8位:nStopBits為停止位數(shù),支持1—2位;返回值:當設置成功后,返回值為TRUE;失敗時,返回值為FALSE;實現(xiàn)原理:本函數(shù)只支持操作一個串口。程序根據(jù)串口配置情況調用CreateFile0函數(shù)打開串口,隨后啟動串口監(jiān)視線程等待應答數(shù)據(jù)。 圖31InitMyCom()函數(shù)流程圖(2)寫串口函數(shù)。函數(shù)聲明形式:BOOL CMyCom:WriteMyCom(char*bur,DWORD dwBufLen)參數(shù)含義:buf為待發(fā)命令的緩沖區(qū)指針,dwBufLen待發(fā)字符。返回值:返回值為實際發(fā)送的字符數(shù);實現(xiàn)原理:該函數(shù)調用WriteFileO發(fā)送命令并調用GetOverlappedResult0函數(shù)返回實際發(fā)送的字符[6]。第四章 使用SPComm控件實現(xiàn)串口通信Delphi可以利用的眾多串行通信控件中,SPComm控件可謂是最簡單,功能比較強大的一種。它支持Data Bits(數(shù)據(jù)位)、Parity(奇偶校驗)、Stop Bits等設置,支持Read/Write,Timing Control(時序控制),Read Interval Timeout(讀間斷超時控制),WriteInterval Timeout(寫間斷超時控制)等,同時還支持DTR/DSR,RTS/DTS等硬件流程控制及Xon/Xoff(握手協(xié)議)軟件流程控制,是比較完善的控件。從互聯(lián)網(wǎng)能下載SPComm控件。選擇下拉菜單Component中的Install Component選項,在Unit filename處填寫SPComm控件所在的路徑,其他各項可用默認值,點擊OK按鈕。如圖41安裝后,在System控件面板中將出現(xiàn)一個紅色控件COM。現(xiàn)在就可以像Delphi自帶控件一樣使用COM控件了[9]。圖41 安裝SPComm控件 SPComm的主要屬性,方法和事件 屬性CommName:填寫COM1,COM2…等串口的名字,在打開串口前,必須填寫好此值。BaudRate:設定波特率9 600,4 800等,根據(jù)實際需要來定,在串口打開后也可更改波特率,實際波特率隨之更改。ParityCheck:奇偶校驗。ByteSize:字節(jié)長度5, 6, 7, 8等,根據(jù)實際情況設定。Parity:奇偶校驗位。pBits:停止位。SendDataEmpty:這是一個布爾屬性,為True時表示發(fā)送緩存為空,或者發(fā)送隊列里沒有信息。為False時表示發(fā)送緩存不為空,或者發(fā)送隊列里有信息。 方法Startm方法用于打開串口,當打開失敗時通常會報錯。錯誤主要有7種:串口已經打開。打開串口錯誤。文件句柄不是通信句柄。不能夠安裝通信緩存。不能產生事件。不能產生讀進程。不能產生寫進程。StopComm過程用于關閉串口,沒有返回值。WriteCommData(pDataToWrite: PChar。 dwSizeofDataToWrite:Word ):boolean用于發(fā)送一個字符串到寫線程,發(fā)送成功返回True,發(fā)送失敗返回False,執(zhí)行此函數(shù)將立即得到返回值,發(fā)送操作隨后執(zhí)行。函數(shù)有兩個參數(shù),其中pDataToWrite是要發(fā)送的字符串, dwSizeofDataToWrite是發(fā)送的長度[9]。 事件 OnReceiveData:procedure(Sender:TObject。Buffer:Pointer。BufferLength:Word) of object當輸入緩存有數(shù)據(jù)時將觸發(fā)該事件,在這里可以對從串口收到的數(shù)據(jù)進行處理。Buffer中是收到的數(shù)據(jù),BufferLength是收到的數(shù)據(jù)長度。OnReceiveError:procedure(Sender: TObject。 Eventask:DWORD)當接受數(shù)據(jù)時出現(xiàn)錯誤將觸發(fā)該事件。 SPComm的使用以實現(xiàn)PC機與單片機8051之間的通信為例,首先要調通他們之間的握手信號。假定他們之間的通信協(xié)議是:PC到8051一幀數(shù)據(jù)6個字節(jié),8051到PC一幀數(shù)據(jù)也為6個字節(jié)。當PC發(fā)出(F0,01,FF,FF,01,F0)后8051能收到一幀(F0,01,FF,FF,01,F0),表示數(shù)據(jù)通信握手成功,兩者之間就可以按照協(xié)議相互傳輸數(shù)據(jù)。,把窗體的標題定義為單片機串口通信:圖42 單片機串口通信窗口實現(xiàn)PC機與單片機之間的數(shù)據(jù)發(fā)送及接收具體步驟:(1) 初始化并打開串口需要選擇本次通信使用的串口,確定通信協(xié)議,即設置波特率、校驗方式、數(shù)據(jù)位、停止位等屬性,打開該串口。代碼如下://初始化并打開串口:Comml.BaudRate:=9600; //波特率9600bpsComml.Parity:=None; //奇偶檢驗無Comml.ByteSize:=8: //數(shù)據(jù)位8Comml.StopBits:=l; //停止位1Comml.StartComm: //打開串口(2)建立握手信號實現(xiàn)PC機與單片機之間的通信,首先要調通它們之間的握手信號,握手信號可以隨意選擇某特定字符串,當Pc發(fā)出這樣一幀數(shù)據(jù)后,通過接收事件能收到單片機返回的這一幀數(shù)據(jù)或特定的某字符串,則表示握手成功,系統(tǒng)通信正常。兩者之間就可以按照協(xié)議相互傳輸數(shù)據(jù)。否則需重新建立握手信號。(3)發(fā)送數(shù)據(jù)在編寫基于串口的計算機工業(yè)測控時,通常需要由PC機向下位機發(fā)送命令以控制下位機的行為,同時向下
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1