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

正文內(nèi)容

溫度監(jiān)控系統(tǒng)畢業(yè)設(shè)計-畢業(yè)設(shè)計(已改無錯字)

2023-03-03 03:43:40 本頁面
  

【正文】 口 進行讀寫 操 作的 例 子 如下: mHandle = CreateFile(lpszPort, //串 口 名 GENERIC_READ|GENERIC_WRITE, //允許 讀 /寫 0, //獨 占 方式串 口 不能共享 NULL, //安 全 性屬性 一 般 設(shè)為 0 OPEN_EXISTING, //串 口 是 已存 在的不能 建 新端口 lpOverlapped, //異步方式 0 //串 口無 模板 文件應設(shè)為 0 )。 如 果 調(diào)用成功函數(shù) 返回 串 口 的 句柄賦 給 Handle, 如 果 調(diào)用 失敗則 函數(shù) 返回INVALID_HANDLE_VALUE。 (2)初 始 化串 口 對串 口 的 初 始 化 工 作 包 括 對 波 特 率, 數(shù)據(jù)位, 停止 位, 奇偶 校驗 位 I/O 緩沖 大小以及超時 等參 數(shù)的設(shè) 置。 在調(diào)用 API 函數(shù)進行串 口 初 始 化時, 波 特 率, 數(shù)據(jù)位, 奇偶 校驗停止 位的信 息包含 于一 個 DCB結(jié)構(gòu) 中,而超時方面的信 息則包含 于 COMMTIMEOUTS結(jié)構(gòu) 中, 一 般 在用 CreateFile 打 開串行 口后, 可以調(diào)用 GetCommState 函數(shù)來 獲 取 串行 口 的 初 始配置。要 修 改串行 口 的 配置 應 該 先修 改 DCB結(jié)構(gòu),然后再 調(diào)用 SetCommState函數(shù)用 指 定的 DCB結(jié)構(gòu) 來設(shè) 置串行口。例如: DCB dcb。 GetCommState(mHandle, amp。dcb) //讀 取 DCB結(jié)構(gòu) ???????? ???????? =9600 // 設(shè) 置 波 特 率 為 9600b/s =8。 // 每個字 符 有 8位 =NOPARITY。 // 無校驗 =ONESTOPBIT。 // 一 個 停止 位 SetCommState(hCom, amp。dcb) // 保 存 至 DCB結(jié)構(gòu)使 設(shè) 置值生 效 調(diào)用 SetupComm 函數(shù)可以設(shè) 置 串行 口 的輸 入 和輸出 緩沖 區(qū) 的大小。如 果 通信的 速 率 較 高則 應 該 設(shè) 置 較大的 緩沖區(qū)。例 如: ?????????? ?????????? SetupComm( mHandle , 1024*2, 1024*2 ) //輸 入 輸出 緩沖區(qū) 的大小均為 2K ?????????? ?????????? 在用 ReadFile 和 WriteFile 讀寫串行 口 時, 需要 考慮 超時問題。如 果 在 指 定的時間 內(nèi)沒 有讀出 或 寫 入指 定數(shù)量的 字 符,那么 ReadFile 或 WriteFile 的 操 作就會 結(jié)束。要查詢當 前的超時設(shè) 置 應調(diào)用 GetCommTimeouts 函數(shù)。 該 函數(shù) 會 填充 一 個 COMMTIMEOUTS 結(jié)構(gòu) 調(diào)用 SetCommTimeouts 可以用 某 一 個 COMMTIMEOUTS結(jié)構(gòu) 的 內(nèi)容 來設(shè) 置 超時。 ?????????? ?????????? TimeOuts. ReadIntervalTimeout=0 //讀間 隔 超時 =10 //讀時間系數(shù) =100 //讀時間 常 量 =10 //寫時間系數(shù) =100 //寫時間 常 數(shù) SetCommTimeouts(hCom, amp。TimeOuts)。 // 保 存 設(shè) 置值生 效 ???????????? ???????????? ???????????? COMMTIMEOUTS結(jié)構(gòu) 的成 員 都 以 毫秒 為單位。 總 超時的計 算 公式是: 總 超時 =時間系數(shù) 要求 讀 /寫的 字 符 數(shù) + 時間 常 數(shù) 異步方式讀寫串行 口 時 雖 然 ReadFile()和 WriteFile() 在完成 操 作以前就可能 返回 但超時 仍 然 是起作用的。這 種情況 下,超時 規(guī) 定的是 操 作的完成時間而不是 ReadFile()和WriteFile()的 返回 時間。 (3)讀寫串 口 初 始 化 工 作完成以 后便 可以 根 據(jù)通信協(xié)議 合 理 安排 讀 /寫函數(shù) ReadFile()和WriteFile()以讀 寫各 種 握手信 息 和數(shù)據(jù)信 息等。 其中 何 時讀 取 單片機發(fā)送過來的數(shù)據(jù)信 息 及應 答 信 息 是 重要 的。此時采 取 的是 事 件 驅(qū)動法, 即:設(shè) 置 通信資源上的 事 件 掩 碼為 EV_RXCHAR 。 當 接收到一 個字 符 并放入緩沖區(qū)后 即通 知 應用程 序例。 //PC發(fā)送一 組命令 至 單片機 WriteFile(mHandle, //串 口句柄 pDataBuff, //存放 數(shù)據(jù) 緩種區(qū) iLen, //所寫數(shù)據(jù)的 長度 pdwWritten, //已 寫 長度操 作前應 置 為 0 lpOverlapped) //異步方式 //設(shè) 置 通信 事 件 掩 碼 DWORD dwMask=EV_RXCHAR。 SetCommMask(m_hFile,dwMask)) //設(shè) 置 通信 事 件 掩 碼 //等待 通信 事 件的發(fā) 生 OVERLAPPED os 。 memset( amp。os, 0, sizeof( OVERLAPPED ) ) 。 =CreateEvent(NULL TRUE FALSE NULL) if(!WaitCommEvent(m_hFile, amp。dwEvtMask, amp。os)) // 重疊操 作 if(GetLastError()==ERROR_IO_PENDING) { // 無 限 等待重疊操 作 結(jié)果 GetOverlappedResult(mHandle, amp。os, amp。dwTrans, true)。 //事 件 已 發(fā) 生 安排 讀 操 作 ReadFile(mHandle, //串 口句柄 pDataBuff, //存放 數(shù)據(jù) 緩種區(qū) iLen, //所讀數(shù)據(jù)的 長度 pdwRead, //實際所讀 長度 lpOverlapped) //異步方式 } 在上 例 中,我們 無 限 等待 通信 事 件的發(fā) 生。 如 果 通信 事 件一直 沒 有發(fā) 生則 系 統(tǒng) 將不會 繼 續(xù)執(zhí) 行。在實際程 序 設(shè)計中我們可以設(shè) 置 一時限,超過此時限通信 事 件 未 到 則執(zhí) 行相應 錯誤處 理此時, 只需 將 GetOverlappedResult函數(shù) 替 換 為 WaitForSingleObject函數(shù)此函數(shù)的 聲 明 形 式如下: WaitForSingleObject( HANDLE hEvent, //事 件 句柄 unsigned long mTimeOuts //超時設(shè) 置 ) (4) 關(guān) 閉 串 口 通信完 畢 調(diào)用 CloseHandle() 函數(shù) 關(guān) 閉 串 口例 如 CloseHandle(mHandle)。 //關(guān) 閉 mHandle為 打 開串 口 時 返回 的 句柄 單片機軟件設(shè)計 我們 知 道影 響 數(shù)據(jù)轉(zhuǎn)輸 產(chǎn)生錯誤 的因 素 有:轉(zhuǎn)輸線分 布 參 數(shù)上下位機間的 波 特 率 誤差 現(xiàn) 場 干擾 等。 而 針 對近程小批量數(shù)據(jù)的通信,下位機的 波 特 率 誤 差 性 是 影 響 可 靠 通信的 最主要 因 素。 所以在單片機軟件的設(shè)計時應 重 點 考慮 并 設(shè) 置 好 波 特 率。 ( 1)波 特 率 誤 差 來源分 析 ① 單片機的 振蕩 電路是由 晶 體 及 電 容 C1 和 C2 構(gòu) 成 。 晶振頻率 主要 由 晶 體 的因有 頻率 決定,同時 也 與電 容 C C2及 外界 溫 度 有一定的 關(guān) 系。 另 外, 晶 體 頻率 的標稱 值 與實際 值也 不可能完全一 致。 ②波 特 率 最 大 允許誤 差 分 析 在異步串行通信方式 1中 單片機 以 16倍波 特 率 的采樣 速 率 對接收數(shù)據(jù)( RXD) 不 斷 采樣,一 旦 檢測 到由 1到 0的 負跳 變, 16分 頻 計數(shù)器立 刻 復 位, 使 之 滿 度 翻 轉(zhuǎn) 的時 刻 恰 好與輸 入 位的 邊沿 對準。 16分 頻 計數(shù)器 把 每個 接收位的時間分為 16 份, 在中間 三 位即 7 , 8 ,9 , 狀態(tài) 時位 檢測 器對 RXD 端 的 值 采樣, 并 以 3取 2的表決方式 確 定所接收的數(shù)據(jù)位。由此可見, 當 波 特 率 的 誤 差 使 得在接收 某 位數(shù)據(jù)位時,采樣點離 該 位的中點 半 位間 隔 時將會對 該 位采樣兩 次。 即: 欲使 接收的 第 N位為正 確 位時, 須 滿足 下式成立: 所 允許 的 波 特 率 誤 差 N 故 當 所傳輸?shù)囊?幀 數(shù)據(jù)為 10 位時,所 允許 的 最 大的 波 特 率 允許誤 差 為 5 %對于其它 常 用的 8位, 9位, 11位,一 幀 的串行傳輸,其 最 大的 波 特 率 允許誤 差 分別為 %, %, 和 %。 ③減 小 波 特 率 誤 差 的 措施 我們知道 使 用離 散 度 小的 晶振 是 減 小 波 特 率 誤 差 的 關(guān) 鍵。 如 果, 晶振 的離 散 度已 超過所 允許 的 范圍, 此時不 宜 用其標稱 值, 可以采用 測 量其 波 特 率 的方 法 來得出實際 的 晶振波 特 率 值。 ( 2) 單片機軟件的實現(xiàn) ① 設(shè) 置 通信方式和 波 特 率 的 值例 ???????? ???????? ???????? MOV SCON,50H 初 始 化串 口 設(shè)為方式 1 MOV TMOD,20H 利 用定時器 1為 波 特 率 發(fā) 生 器 并 設(shè)為 模 式 2 MOV PCON,XXH 設(shè) 置 SMOD值 MOV TH1,XXH 設(shè) 置 定時器 初 始值 SETB TR1 啟 動 定時器 1 ?????????? ?????????? ?????????? ② 等待 接收 PC機發(fā)來的信號 幀并 按 通信協(xié)議作出相應 響 應。 通信協(xié)議設(shè)計結(jié)論 通信的可 靠性主要體 現(xiàn)在所 使 用通信協(xié)議的可 靠性 上,本通信協(xié)議的可 靠性主要 有兩點理論 基礎(chǔ): (1)通過 判斷 幀頭 起 始字 符 來決定一 幀 的開 始, 這樣就 避免 了 部 分數(shù)據(jù)進 入 到 內(nèi)部數(shù)據(jù) 處 理之中。這 個 可能 性 在 1/256, 通過 停止 位的 判斷 可將這 個 可能 性再 降低 1/256。 另 外 通過 幀 類 型字 節(jié)的 判斷 可 使 之進一步 降低。 (2)校驗字 將 整 幀 信號進行異 或校驗則使誤 收的可能很小。如 果 將此異 或校驗 改為CRC校驗則 出 錯 的可能 性 更是 微乎 其 微 了。本通信所用協(xié)議具有 糾 錯 功能,這 體 現(xiàn)在 當PC 發(fā)送 或 接收數(shù)據(jù)時, 當 所接收的應 答 信號出現(xiàn) 失誤 時,將 重新 發(fā)送 或 接收此 幀 數(shù)據(jù),直 至 接收到了正 確 的應 答, 具 體 在程 序 中 最多允許 連 續(xù) 出 錯三次, 超過 后則放棄 通信。在實際應用中,應用本通信時傳輸距離 只 有 幾 米以 內(nèi) 而 且 環(huán)境 干擾 比 較小, 從 而 從外部因 素 上進一步 保證 了通信的可 靠性。 如 果 在不 考慮 錯誤 發(fā) 生 的 情況 下, PC 機 每 發(fā)送一 幀 數(shù)據(jù)時 需要 附 加 12 個字 節(jié),其中 8 個字 節(jié)用于發(fā)送 4 個字 節(jié)用于應 答 PC 機。 每 接收一 幀 數(shù)據(jù)時, 需要 附 加 13 個字 節(jié)其中 5 個字 節(jié)用于接收 8 個字 節(jié)用于應 答。 如: 按 每幀 傳送 32個字 節(jié)計 算 的話,其發(fā)送 和接收的 效率 為為 忽略 PC和 PIC16F877A單片機 的 處 理時間計 算。 發(fā)送數(shù)據(jù)速率、接收數(shù)據(jù) 速率計算公式如下: 發(fā)送數(shù)據(jù) 速率 : 9600*32/44=6981bit/s 接收數(shù)據(jù) 速率 : 9600*32/45=6826bit/s 這是理論上的 速率, 實際中 還 應 包含 PC和 PIC16F877A單片機 的 處 理信號 幀,等待 信號 幀 的時間。在本通信協(xié)議中,不會出現(xiàn) 某 信號 幀已 到達但 PC或 PIC16F877A單片機 還 未開 始 準
點擊復制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1