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

正文內(nèi)容

基于c的rs232通信協(xié)議模擬終端所有專業(yè)(完整版)

  

【正文】 RS232 標(biāo)準(zhǔn)以及接口, 學(xué)習(xí)了串行通信的基本原理,串行通信的通信參數(shù),例如波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)位等。如圖 421 所示: 圖 421 系統(tǒng)提示框 39 本章小結(jié) 本章介紹了 Windows 編程下的 MFC 和串行通信控件 MSComm,詳細(xì)的描述了利用 MFC 和串行通信控件 MSComm 實(shí)現(xiàn)兩臺(tái) PC 機(jī)間的數(shù)據(jù)交換的設(shè)計(jì)概述、模塊功能、代碼實(shí)現(xiàn)等。 圖 417 用戶名密碼正確 36 (2)串口和參數(shù)的設(shè)置 登陸成功后跳轉(zhuǎn)到主界面,通信之前要設(shè)置可用的串口號(hào), 設(shè)置串口號(hào)時(shí)若沒(méi)有 選對(duì)串口號(hào),應(yīng)用程序會(huì)提示不可用的串口,直到設(shè)置了可用的串口號(hào)[24]。(ch=39。F39。(ch=39。 senddata[hexdatalen]=(char)hexdata。 } 開(kāi)始 字符是否在0F 之間 轉(zhuǎn)換成相 應(yīng)的 16 進(jìn)制形式 結(jié)束 Y 返回值 1 N 34 i++。 (len/2)。 ()。 int len=String2Hex(m_send,hexdata)。break。break。break。 default:conf = 9600,。 if(()==IDOK) // 配置對(duì)話框 “確定 ”按下,需要重新配置端口 { (FALSE)。 //顯示完成后要自動(dòng)換行 m_receive+=temp。 //將字符以十六進(jìn)制方式送入臨時(shí)變量strtemp,加空格 else (%c,bt)。 //得到有效的數(shù)據(jù)長(zhǎng)度 for(k=0。 實(shí)現(xiàn)此模塊的程序流程圖如圖 412 所示, 其 功能代碼如下: 圖 412 數(shù)據(jù)交換模塊流程圖 代碼如下: void CMyDlg::OnOnComm() { // TODO: Add your control notification handler code here 開(kāi)始 接收緩沖區(qū)內(nèi)是否有字符 將緩沖區(qū)內(nèi)字符給接收變量 結(jié)束 Y N 是否以 16 進(jìn)制顯示 將緩沖區(qū)內(nèi)字符以16 進(jìn)制給變量 N Y 計(jì)算接收數(shù)據(jù)的 CRC 值 更新編輯框內(nèi)容 28 VARIANT variant_inp。 //打開(kāi)串口 (1)。 = m_n。 //輸入方式為二進(jìn)制方式 開(kāi)始 顯示登陸界面 串口是否打開(kāi) 設(shè)置參數(shù) 結(jié)束 關(guān)閉串口 Y N 25 (1024)。 } (2)應(yīng)用程序初始化 實(shí)現(xiàn)先顯示登陸界面后主界面,利用 MFC 中的模式對(duì)話框在初始化函數(shù)中來(lái)實(shí)現(xiàn), 若串口是打開(kāi)的則關(guān)閉串口, 同時(shí)串口參 數(shù)的設(shè)置也是在初始化函數(shù)中設(shè)置實(shí)現(xiàn) 的。 if(())//密碼用戶名不一致 () { ()。 //讀取編輯框內(nèi)容 CUserRecordset m_user。完整的主界面如圖 47 所示。最后為 Access 數(shù)據(jù)庫(kù) demo01 建立數(shù)據(jù)源,利用 ODBC 驅(qū)動(dòng)。然后在將基于對(duì)話框選中 (如圖 43) ,直接下一步即可,最后直到完成。通信結(jié)束后,關(guān)閉打開(kāi)的串口。 Windows 提供 的 ActiveX 控件 利用 它本身帶 的 MSComm ActiveX控件,只需要 程序員編寫少量的代碼,就能輕松 完成任務(wù), 這樣就 使得對(duì)串口編程不再需要處理煩瑣的細(xì)節(jié)。平大家所見(jiàn)到的大多數(shù)Windows應(yīng)用程序均屬于這兩種框架。分析了 CRC 校驗(yàn)原理、算法形式和算法的實(shí)現(xiàn)。當(dāng)所有數(shù)據(jù)位都這樣操作后,計(jì)算結(jié)束。例如:代碼 101011 對(duì)應(yīng)的多項(xiàng)式為135 ??? XXX ,而多項(xiàng)式為 1256 ??? XXX 對(duì)應(yīng)的代碼 1100101。 11 第 3章 CRC校驗(yàn) CRC校驗(yàn) 原理 CRC校驗(yàn)碼的基本原理 早期的通信由于受到外界各種因素的干擾 , 會(huì)造成傳輸、接收信號(hào)的不準(zhǔn)確。 圖 24 USB 轉(zhuǎn) RS232 線的連接圖 串口調(diào)試 實(shí)現(xiàn)個(gè)人計(jì)算機(jī)與外圍設(shè)備間的串行通信必須將個(gè)人計(jì)算機(jī)上的串口調(diào)通,驗(yàn)證一下個(gè)人計(jì)算機(jī)上的串口是否好用。 8 串口的調(diào)制 串口連接 現(xiàn)在大多數(shù)計(jì)算機(jī)外用接口都是 USB 口, 外用接口很少有串口的, 并且現(xiàn)在的個(gè)人計(jì)算機(jī)的串口大多都是 簡(jiǎn)型的 9 針串口。信息中含有若干個(gè)數(shù)據(jù)字符。 (4)奇偶校驗(yàn)位 在串行通信中奇偶校驗(yàn)是一種簡(jiǎn)單的檢錯(cuò)方式,奇偶校驗(yàn)位僅占一位,用于進(jìn)行奇校驗(yàn)和偶校 驗(yàn),同時(shí)也可以無(wú)校驗(yàn)位。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是 8 位的,標(biāo)準(zhǔn)的值是 7 和 8 位。 串行通信參數(shù) 串行通信在數(shù)據(jù)交換過(guò)程中,要對(duì)幾個(gè)重要的 通信 參數(shù)進(jìn)行設(shè)置,其中包括波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位等。并行通信中所傳送 數(shù)據(jù)的各位同時(shí)發(fā)送或接收。 RS232 串行接口屬于個(gè)人計(jì)算機(jī)( PC)及電信應(yīng)用領(lǐng)域中最為成功的串行數(shù)據(jù)標(biāo)準(zhǔn)。 RS232 協(xié)議一共有兩個(gè)通道:一個(gè)主通道和一個(gè)輔助通道,很多 情況下主要使用 的是 主通道。 本文主要的研究?jī)?nèi)容 本文主要通過(guò) RS232 標(biāo)準(zhǔn)串口協(xié)議,使用 VC++編程語(yǔ)言實(shí)現(xiàn)串行通 信,最終完成模擬終端的調(diào)試與仿真。 RS232 被定義為一種在低速率串行通信中增加通信距離的單端標(biāo)準(zhǔn)。其中 Windows 平臺(tái)先進(jìn)的 ActiveX 技術(shù)對(duì)串口編程不再需要處理繁瑣的細(xì)節(jié)。 Serial Communications。 按照其工作原理及 RS232 串口的 標(biāo)準(zhǔn)協(xié)議最終采用串行全雙工的方式實(shí)現(xiàn)其通信,本文中的接口使用的是 計(jì)算機(jī)上的 USB 口 。 基于 C++的 RS232 通信 協(xié)議模擬終端 Analog Terminal For RS232 Communication Protocol Based On C++ 學(xué) 院: 專 業(yè) 班 級(jí): 學(xué) 號(hào): 學(xué) 生 姓 名: 指 導(dǎo) 教 師: 2020 年 06 月密級(jí):公開(kāi) I 摘 要 隨著科技的迅猛發(fā)展 ,通信技術(shù)已經(jīng)成為社會(huì)經(jīng)濟(jì)、環(huán)境、 生活、工作、學(xué)習(xí)不可缺少的一部分 。 在軟件實(shí)現(xiàn)方面,本設(shè)計(jì)在比較了多種方法之后,最終選擇了基于 C++的 MFC 應(yīng)用程序。 C++。利用自帶 的 ActiveX 控件 技術(shù) ,只要編寫少量的代碼,就能很快的 完成 通信 任務(wù)。串行通信中的串口應(yīng)用始于 1960 年,然而 RS232 的初始版本于 1969 年才得到認(rèn)證,認(rèn)證的版本號(hào)為 RS232C,在這之前有 RS232A、RS232B 這兩個(gè)版本。在設(shè)計(jì)過(guò)程中,我通過(guò)查閱大量相關(guān)書籍和資 3 料,研究學(xué)習(xí)了 RS232 標(biāo)準(zhǔn)協(xié)議和 VC++編程語(yǔ)言下的 MFC 界面編程,學(xué)習(xí)串行通信相關(guān)知識(shí),通過(guò)編程軟件的仿真完成了基于 C++的 RS232 通信協(xié)議的模擬終端。有 25 條信號(hào)線, 盡管有如此 多的信號(hào)線,但是 對(duì)于一般雙工通信,僅 僅 需 要其中 幾條信號(hào)線就可實(shí)現(xiàn) 數(shù)據(jù)的傳送 ,即 一條發(fā)送線、一條接收線和一條地線。是目前 PC 機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。串行通信中所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。 (1)波特率 所謂波特率就是每秒中傳送的二進(jìn)制位數(shù),其單位是 bps( bits per second),用來(lái)描述數(shù)據(jù)的傳送速率,是衡量串行通信數(shù)據(jù)傳輸速度快慢的重要指標(biāo)。怎樣決定數(shù)據(jù)位的取值取決于傳送的信息。對(duì)于奇校驗(yàn)和偶校驗(yàn),串口會(huì)設(shè)置校驗(yàn)位,是數(shù)據(jù)位后面的一位,用一個(gè)值保證傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。 它們均由數(shù)據(jù)字符、 CRC 即同步字符和校驗(yàn)字符組成。所以要想通過(guò) 串行通信實(shí)現(xiàn)與外圍設(shè)備數(shù)據(jù)交換,必須用 USB 轉(zhuǎn) RS232 9 針串口轉(zhuǎn)換線。這就需要用到串口調(diào)試小助手。這主要是由通信技術(shù)不可靠性決定的。 CRC 校驗(yàn)碼是 在 K 位信息碼后 再拼接 R 位的校驗(yàn)碼,整個(gè)編碼長(zhǎng)度為 N 位,因此,這種編碼也叫( N, K)碼。此時(shí), 16 位移位寄存器中的內(nèi)容就是 CRC 碼。并通過(guò) CRC 校驗(yàn)實(shí)現(xiàn)通信中的檢錯(cuò)。 MFC的全稱是 Microsoft Foundation Classes。 程序員 就 不需要花 費(fèi)大量 時(shí)間去了解 API 函數(shù),只需要利用 MSComm 控件就可實(shí)現(xiàn)串口 通信 編程 [16]。能夠發(fā)送單個(gè)或多個(gè)數(shù)據(jù) 。 圖 43 建立基于對(duì)話框應(yīng)用程序過(guò)程圖 18 按照如上所示的方法步驟 ,建立 Win32 下的 MFC 應(yīng)用程序工程, 應(yīng)用程序工程名為 “通信 ”,最后點(diǎn)擊完成按鈕,就會(huì)出現(xiàn) MFC 應(yīng)用程序初始界面如圖44 所示 [19]。數(shù)據(jù)庫(kù)和數(shù)據(jù)源建 立完成后,開(kāi)始用 MFC 建立登陸界面。 圖 47 主界面 (3)參數(shù)設(shè)置界面 完成兩臺(tái) PC 機(jī)間的串行通信(數(shù)據(jù)交換),必須保證兩個(gè)串口的 通信 參數(shù)一致,這樣就需要將兩個(gè)應(yīng)用程序的通信參數(shù)重新設(shè)置,通信參數(shù)包括波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位等。 //新建的類,是基于 CRecordset 開(kāi)始 輸入獲取信息 是否登錄 密碼用戶名是否一致 登錄成功,轉(zhuǎn)到主界面 結(jié)束 點(diǎn)擊退出按鈕 Y N Y N 23 try { if(())//判斷記錄集是否打開(kāi) ()。 AfxMessageBox(用戶名、密碼錯(cuò)誤,請(qǐng)重試! )。 初始化的程序流程圖如圖 410 所示。 //設(shè)置輸入緩沖區(qū) (512)。 (m_n+1)。 //每當(dāng)接收緩沖區(qū)有個(gè)字符則接收串口數(shù)據(jù) (0)。 COleSafeArray safearray_inp。klen。 //將字符送入臨時(shí)變量 strtemp存放 CByteArray hexdata。 29 UpdateData(FALSE)。 CString conf。 } switch(m_jiaoyan) // 設(shè)置校驗(yàn)方法 { case 0:conf = conf + n,。 } switch(m_databit) // 設(shè)置數(shù)據(jù)位 { case 0:conf = conf + 5,。 default:conf = conf+8,。 default:conf = conf+1。 //此處返回的 len可以用于計(jì)算發(fā)送了多少個(gè)十六進(jìn)制數(shù) (COleVariant(hexdata))。 //發(fā)送后清空輸入框 UpdateData(false)。 for(int i=0。 if(i=len) break。 hexdatalen++。939。)) return ch39。f39。 然后需要打開(kāi)串口,點(diǎn)擊【打開(kāi)串口】按鈕, 程序會(huì)提示串口打開(kāi)成功,最后設(shè)置 通信參數(shù), 點(diǎn)擊【設(shè)置】按鈕,跳轉(zhuǎn)到設(shè)這界面,根據(jù)需要選擇通信參數(shù),如果保存設(shè)置就點(diǎn)擊【確定按鈕】否則點(diǎn)擊【退出】按鈕,之后又回 到了主界面,現(xiàn)在即可進(jìn)行數(shù)據(jù)的發(fā)送了。并對(duì)此應(yīng)用程序進(jìn)行了運(yùn)行測(cè)試。 主要功能有用戶名密碼 驗(yàn)證登錄、設(shè)置串口號(hào)、打開(kāi)串口、 關(guān)閉串口、設(shè)置通信參數(shù)等 。 圖 418 設(shè)置串口和參數(shù) (3)發(fā)送數(shù)據(jù) 選擇串口號(hào),并將此 串口 打開(kāi) ,設(shè)置通信參數(shù)完成后,在發(fā)送 區(qū)內(nèi)的 編輯框輸入要發(fā)送的內(nèi)容, 然后點(diǎn)擊【發(fā)送】按鈕, 發(fā)送 去編輯框里要發(fā)送的內(nèi)容 37 會(huì)通過(guò)此串口發(fā)送到 另一個(gè)端口的接收區(qū) 的編輯框 內(nèi), 并 在接收區(qū) 的編輯框內(nèi)顯示了發(fā)送的 內(nèi)容, 同理也可在另一個(gè)串口的發(fā)送區(qū)編輯框內(nèi)輸入數(shù)據(jù),此 數(shù)據(jù)也可發(fā)送到本串口的編輯框內(nèi),也會(huì)在 接收區(qū)的編輯框內(nèi)得到顯示, 如圖 419所示。a39。+10。 else if((ch=39。 return hexdatalen。 hexdata=ConvertHexChar(hstr)。) { char lstr,hstr=str[i]。 單個(gè)字符轉(zhuǎn)換成十六進(jìn)制的 流程圖如圖 415 所示,代碼如下。//發(fā)送 ASCII字符數(shù)據(jù) CByteArray hexdata。 } (conf)。 } switch(m_stopbit) // 設(shè)置停止位 { 31 case 0:conf = conf + 1。 case 1:conf = conf + 6,
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1