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

正文內(nèi)容

基于c的rs232通信協(xié)議模擬終端所有專業(yè)-文庫吧在線文庫

2025-07-14 15:28上一頁面

下一頁面
  

【正文】 算發(fā)送接收數(shù)據(jù) CRC 值 (5)關(guān)閉串口退出整個應(yīng)用程序 發(fā) 送數(shù)據(jù)結(jié)束后,關(guān)閉串口,點擊【退出】按鈕,程序提示 “謝謝使用!再見 ”。掌握了串行通信的基本概念。 圖 419 發(fā)送接收數(shù)據(jù) (4)十六進制顯示和計算 CRC 值 設(shè)置完成各參數(shù)后,選擇十六進制發(fā)送、接收復選框和計算 CRC 數(shù)值復選框,點擊【發(fā)送按鈕】,可以看到在接收區(qū)字符是以十六進制形式顯示的,接收和發(fā)送的 CRC 值在編輯框中顯示,這樣就可以判斷發(fā)送的內(nèi)容是否受到干擾。 else return (1)。a39。)amp。039。 if((hexdata==16)||(lowhexdata==16)) break。 39。senddata) { int hexdata,lowhexdata。 unsigned char* pC = (unsigned char*)(LPCTSTR)m_send。 } } (6)發(fā)送模塊 圖 414 發(fā)送模塊流程圖 開始 讀取編輯框 更新編輯框 結(jié)束 字符形式發(fā)送 16 進制形式發(fā)送 計算 CRC 值值 32 發(fā)送數(shù)據(jù)模塊中,程序先讀取編輯框的內(nèi)容, 根據(jù)是否選擇 16 進制顯示選取字符發(fā)送形式,并計算發(fā)送數(shù)據(jù)的 CRC 值,同時發(fā)送并 清空,最后更新編輯框的內(nèi)容。 case 1:conf = conf + 。 case 2:conf = conf + 7,。 case 2:conf = conf + e,。break。 = m_databit。 UpdateData(false)。klen。 if(()==2) //值為表示接收緩沖區(qū)內(nèi)有字符 { variant_inp=()。 } (4)實現(xiàn)數(shù)據(jù)交換模塊 使用 MSComm 通信控件是 MFC 中進行串口通訊最簡單的。//設(shè)置當前接收區(qū)數(shù)據(jù)長度為 ,表示全部讀取 (1)。程序流程圖如圖 411 所示,實現(xiàn)其功能代碼如下: void CMyDlg::OnOpen() 開始 設(shè)置串口號 打開串口 關(guān)閉串口 結(jié)束 26 { if(()) (FALSE)。//顯示登錄界面 if(()) //如果發(fā)現(xiàn)串口本來是打開的,則關(guān)閉串口 (FALSE)。 CDialog::OnOK()。%s39。 需要重新輸入和驗證,驗證通過后才可以登錄。登陸界面如圖 46 所示。對 Access 數(shù)據(jù)庫的連接與操作有很多種方法,例如在 ASP 中建立對 Access數(shù)據(jù)庫的連接、使用 Recordset 對象操作 Access 數(shù)據(jù)庫、使用 SQL 指令操作數(shù)據(jù)庫、使用 DSN 連接 Access 數(shù)據(jù)庫等。 建立工程 要實現(xiàn)通信,首先應(yīng)先建立工程,即新建基于 Win32 的 MFC 應(yīng)用程序。 圖 41 主要功能框圖 應(yīng)用程序 主要實現(xiàn)的功能如圖 41 所示 的主要功能框圖 ,此應(yīng)用程序的 總體程序流程圖如圖 42 所示。 串行通信控件 MSComm 目前,以 Windows 下的 MFC 應(yīng)用程序為主要 的 框架, 常用的 基于 VC++的串行通信編程一般可以用兩種方法實現(xiàn):一種是使用 Windows API 通信函數(shù)。 MFC 提供了構(gòu)造 Windows 應(yīng)用程序的框架,它不僅為應(yīng)用程序建立標準的結(jié)構(gòu),還為其提供了標準的圖形用戶界面如菜單欄、工具欄、狀態(tài)欄等,開發(fā)人員只需要在此基礎(chǔ)上添加針對特定應(yīng)用的代碼即可。在使用的時候,把計算出來的校驗值放在最后兩個字節(jié)里,將其發(fā)送出去,接收端對所有的數(shù)據(jù)進行相同的校驗,如校驗值為 0 我們則認為其數(shù)據(jù)沒有出錯。 12 CRC校驗碼權(quán)的形式 CRC 校驗碼有很多 種權(quán)的 行式, 使用哪一種形式是根據(jù)通信雙方共同制定的 “規(guī)則 ”而定的,其中各種常用 權(quán) 的形式 如下所示: 18 458 ???? XXXC R C ( 31) 151216 ????? XXXC C IT TC R C ( 32) 116 51516 ???? XXXC R C ( 33) 112 231112 ????? XXXXC R C ( 34) ????????? 101112162223263232 XXXXXXXXC R C 124578 ?????? XXXXXX ( 35) 以其中 CRCCCITT 形式為例。接收方為了檢查所接收的數(shù)據(jù)是否有誤碼,可采用多種檢測方法。 10 本章小結(jié) 本章從原理上介紹了串行通信 的基本原理,詳細的闡 述了 RS232 標準協(xié)議接口和與串行通信相關(guān)的一些知識。圖 23顯示了 9 針通訊的接口管腳, 9 針管腳的串口各引腳名稱、功能和信號來源各不相同。發(fā)送端和接收端可以由各自的時鐘 源 來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨立,互不同步, 接收端檢測到 傳輸線上發(fā)送過來的低電平邏輯 0(即字符幀起始位)時,確定發(fā)送端已開始發(fā)送數(shù)據(jù),每當接收端收到字符幀中的停止位時,就知道一幀字符已經(jīng)發(fā)送完畢 [3]。 同步通信是一種在發(fā)送端發(fā)送一個抑制載波的雙邊帶信號,而在接收端恢復載波,再進行檢波的通信方式。 (3)停止位 7 停止位一般為 和 2 位,用來表示單個包的最后一位。在串行通信中,通信線上所傳輸?shù)淖址麛?shù)據(jù)(代碼)是逐位傳送的,一個字符由若干位組成,所以每秒鐘所傳輸?shù)牟ㄌ芈屎妥址?數(shù)(字符速率)是完全不同的。串行端口的本質(zhì)功能是作為 CPU 和串行設(shè)備間的編碼轉(zhuǎn)換器 [5]。 RS232 9 針通訊的接口圖如圖 21 所示 。同時,由于 RS232 標準具有連線簡單、通訊距離長等優(yōu)點,目前也廣泛應(yīng)用于微型計算機系統(tǒng) 、工控機 和大型設(shè)備系統(tǒng)中。 在 VC++高級語言中,利用 Windows 下的 MSComm ActiveX 控件,實現(xiàn)兩臺 計算機間的通信測試與仿真。 未來 RS232 串口通信仍將在低成本、設(shè)計簡單的產(chǎn)品中繼續(xù)發(fā)揮著重要作用。所以現(xiàn)在大量的 2 智能儀器 、工控設(shè)備、實驗研究設(shè)備 或數(shù)據(jù)采集模塊都帶有 RS232 串行通訊接口,通過相應(yīng)的通訊協(xié)議和串口通訊程序,可以將測試 、采集的數(shù)據(jù)傳輸?shù)缴衔还た貦C,以滿足各種形式后續(xù)數(shù)據(jù)處理的要求, 同時整個監(jiān)控系統(tǒng)會根據(jù)系統(tǒng)運行情況通過串口向監(jiān)控設(shè)備發(fā)送指令,調(diào)節(jié)設(shè)備的運行參數(shù)等使得生產(chǎn)過程平穩(wěn)進行 [1]。它主要被廣泛應(yīng)用 在 工業(yè)控制生產(chǎn)和實驗室等重要領(lǐng)域。 串行通信以其成本低、結(jié)構(gòu)簡單等優(yōu)點被人們廣泛應(yīng)用。 傳輸過程中通過 CRC 對數(shù)據(jù)進行校驗。 圍繞串行通信技術(shù),本文 主要 介紹了串行通信 接口 ——RS232 標準串口,闡述 了RS232 串行通信基本原理和 CRC 校驗 ,通過 VC 界面編程實現(xiàn)串行通信。最終實現(xiàn)了兩臺PC 間的串行通信。 隨著 通信技術(shù)的不斷創(chuàng)新和發(fā)展以及 計算機網(wǎng)絡(luò)和多微機系統(tǒng)的廣泛應(yīng)用, USB 通信技術(shù)的 發(fā)展 如此迅速 , 盡管如此, 然而串口通信技術(shù)以其 實現(xiàn)簡單、使用靈活方便、數(shù)據(jù)傳輸可靠等優(yōu)點并未面臨被淘汰,反而在通信領(lǐng)域中一直都被 人們廣泛的 應(yīng)用。由于串行通信方式具有使用線路少、成本低、特別是在遠程傳輸時,避免了 很多條線路 的 特性 不一致而 被 人們廣泛應(yīng) 用。 RS232串行通信的發(fā)展趨勢 RS232 協(xié)議自 1960 年形成, 1969 年得到認證,一直到如今的廣泛使用,始終隨著 各種領(lǐng)域 應(yīng)用需求的不斷變化而穩(wěn)步發(fā)展。 了解 CRC 校驗,掌握 CRC 校驗基本原理及應(yīng)用。它規(guī)定連接電纜、 機械、電氣特性、信號功能及傳送過程 等 ?,F(xiàn)在大多數(shù)個人計算機幾乎都沒有串口,大多采用 USB 接口,所以要實現(xiàn)個人計算機與外圍設(shè)備進行通信大多采用 RS232 轉(zhuǎn) USB 接口 。串行通信是通過串行端口實現(xiàn)的。串行接口電路的接收波特率和發(fā)送的波特率可以設(shè)置,要求接收方的接收波特率必須與發(fā)送方的發(fā)送波特率是一致的。 數(shù)據(jù)位可以由硬件或軟件設(shè)備進行設(shè)置,用來 滿足設(shè)備間數(shù)據(jù)交換的需要。 串行通信的分類 串行通信 又 可以分為同步串行通信和異步串行通信兩類。異步通信 通常 有兩個非常重要的指標:即 字符幀格式和 波特率。在 RS232 的通訊標準中是以一個 25 針的接口來定義的,并且在早期的計算機中,如 PC 機或XT 機型上得到了廣泛地使用,但是在 AT 機以后的機型上,實際上均采用了 9針管腳的簡化版本應(yīng)用,現(xiàn)在所說的 RS232 通訊均默認為 9 針的接口。 串口調(diào)試助手是一個專門用來調(diào)試串口程序的功能軟件,要想測試串口是否可用,應(yīng)先打開軟件,選擇串口號,打開串口,在發(fā) 送區(qū)輸入內(nèi)容,點擊發(fā)送按鈕,若在接收區(qū)中有所發(fā)送的內(nèi)容,則證明此 串口可用。 如早期一樣目前在通信系統(tǒng)的數(shù)據(jù)傳輸過程中,由于信道中各種復雜因素的影響, 使傳輸?shù)男盘柺艿礁蓴_,造成傳輸過程中誤碼的出現(xiàn) [8]。接收方使用相同的生成碼進行校驗,若接收到的字段或生成碼(二進制除法)如果能夠 除盡,則說明在通信過程中,數(shù)據(jù)交換期間未受到其他因素的干擾,消息收發(fā)成功。還有一種是按照字節(jié)計算 CRC 校驗碼,按字節(jié)校驗是每次計算 8 位數(shù)據(jù),多是基于查表的算法,首先要準備一個表,一共 256 項。 本次軟件程序設(shè)計功能的實現(xiàn)主要利用 Windows 編程中 MFC(利用 C++語言)。啟用MFC編碼可以使 Windows程序員能夠利用 C++面向?qū)ο蟮乃枷脒M行編程,用好的類作為標準,減少代碼的編寫量 [15]。主要功能框圖如圖 41 所示。 程序運行平臺 在程序設(shè)計時,原計劃使用 VS2020 軟件,但是由于電腦、操作系統(tǒng)等各種原因,就改用 VC++ 這個軟件。 Access 數(shù)據(jù)庫是一個小型的數(shù)據(jù)庫,使用起來非常的靈活、方便 。若輸入用戶名和密碼正確,即與 Access 數(shù)據(jù)庫表 login 內(nèi)容相一致,點擊登錄按鈕,出現(xiàn)提示正確,點擊確定按鈕應(yīng)用程序的界面會由登陸界面跳轉(zhuǎn)到主界面,開始進行數(shù)據(jù)交換。 21 圖 48 設(shè)置界面 模塊分析 (1)用戶名密碼登錄模塊 在登錄界面下,在編輯框中輸入用戶名和密碼,單擊 界面中的【登錄】按鈕,可以驗證用戶名密碼輸入是否正確, 若正確登錄 ,程序提示 “登陸成功,歡迎使用! ”,然后登陸界面關(guān)閉顯示 主界面,若輸入錯誤則 程序提示 “密碼用戶名錯誤,請重新輸入! ”。anduserpwd=39。 AfxMessageBox(登錄成功,歡迎使用! )。 ()。 } (3)設(shè)置、打開和關(guān)閉串口功能 圖 411 設(shè)置、打開和關(guān)閉串口流程圖 串行通信是通過串口實現(xiàn)數(shù)據(jù) 交換的,但是 PC 機上有不止一個串口,需要我們設(shè)置進行串行通信端口號,并將串口打開,通信結(jié)束后將串口關(guān)閉。//發(fā)送緩沖區(qū) (0)。 } void CMyDlg::OnClose()//關(guān)閉串口 { (FALSE)。 //設(shè)置 BYTE數(shù)組 CString strtemp。 for(k=0。 if(()) m_crca=crc16r(a,le1)。 = m_baund。 case 1:conf = 4800,。break。break。break。 //設(shè)置波特率等參數(shù) if(!()) //打開串口 (TRUE)。 unsigned int le=String2Hex(m_send,hexdata)。 33 圖 415 單個字符轉(zhuǎn)換成十六進制的流程圖 int CMyDlg::String2Hex(CString str, CByteArray amp。 if(hstr==39。 lowhexdata=ConvertHexChar(lstr)。 } char CMyDlg::ConvertHexChar(char ch) {if((ch=39。A39。 else if((ch=39。+10。 即串口 3 的內(nèi)容 “”發(fā)送到了串口 4 中,串口 4 的內(nèi)容 “”可以發(fā)送到串口 3的接收區(qū),并在編輯框中得到顯示。 了解了串行通信接口,即
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1