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

正文內(nèi)容

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

2023-05-27 15:28:01 本頁面
 

【正文】 控系統(tǒng)會根據(jù)系統(tǒng)運行情況通過串口向監(jiān)控設(shè)備發(fā)送指令,調(diào)節(jié)設(shè)備的運行參數(shù)等使得生產(chǎn)過程平穩(wěn)進行 [1]。串行通信中的串口應用始于 1960 年,然而 RS232 的初始版本于 1969 年才得到認證,認證的版本號為 RS232C,在這之前有 RS232A、RS232B 這兩個版本。 未來 RS232 串口通信仍將在低成本、設(shè)計簡單的產(chǎn)品中繼續(xù)發(fā)揮著重要作用。在設(shè)計過程中,我通過查閱大量相關(guān)書籍和資 3 料,研究學習了 RS232 標準協(xié)議和 VC++編程語言下的 MFC 界面編程,學習串行通信相關(guān)知識,通過編程軟件的仿真完成了基于 C++的 RS232 通信協(xié)議的模擬終端。 在 VC++高級語言中,利用 Windows 下的 MSComm ActiveX 控件,實現(xiàn)兩臺 計算機間的通信測試與仿真。有 25 條信號線, 盡管有如此 多的信號線,但是 對于一般雙工通信,僅 僅 需 要其中 幾條信號線就可實現(xiàn) 數(shù)據(jù)的傳送 ,即 一條發(fā)送線、一條接收線和一條地線。同時,由于 RS232 標準具有連線簡單、通訊距離長等優(yōu)點,目前也廣泛應用于微型計算機系統(tǒng) 、工控機 和大型設(shè)備系統(tǒng)中。是目前 PC 機與通信工業(yè)中應用最廣泛的一種串行接口。 RS232 9 針通訊的接口圖如圖 21 所示 。串行通信中所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。串行端口的本質(zhì)功能是作為 CPU 和串行設(shè)備間的編碼轉(zhuǎn)換器 [5]。 (1)波特率 所謂波特率就是每秒中傳送的二進制位數(shù),其單位是 bps( bits per second),用來描述數(shù)據(jù)的傳送速率,是衡量串行通信數(shù)據(jù)傳輸速度快慢的重要指標。在串行通信中,通信線上所傳輸?shù)淖址麛?shù)據(jù)(代碼)是逐位傳送的,一個字符由若干位組成,所以每秒鐘所傳輸?shù)牟ㄌ芈屎妥址?數(shù)(字符速率)是完全不同的。怎樣決定數(shù)據(jù)位的取值取決于傳送的信息。 (3)停止位 7 停止位一般為 和 2 位,用來表示單個包的最后一位。對于奇校驗和偶校驗,串口會設(shè)置校驗位,是數(shù)據(jù)位后面的一位,用一個值保證傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。 同步通信是一種在發(fā)送端發(fā)送一個抑制載波的雙邊帶信號,而在接收端恢復載波,再進行檢波的通信方式。 它們均由數(shù)據(jù)字符、 CRC 即同步字符和校驗字符組成。發(fā)送端和接收端可以由各自的時鐘 源 來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨立,互不同步, 接收端檢測到 傳輸線上發(fā)送過來的低電平邏輯 0(即字符幀起始位)時,確定發(fā)送端已開始發(fā)送數(shù)據(jù),每當接收端收到字符幀中的停止位時,就知道一幀字符已經(jīng)發(fā)送完畢 [3]。所以要想通過 串行通信實現(xiàn)與外圍設(shè)備數(shù)據(jù)交換,必須用 USB 轉(zhuǎn) RS232 9 針串口轉(zhuǎn)換線。圖 23顯示了 9 針通訊的接口管腳, 9 針管腳的串口各引腳名稱、功能和信號來源各不相同。這就需要用到串口調(diào)試小助手。 10 本章小結(jié) 本章從原理上介紹了串行通信 的基本原理,詳細的闡 述了 RS232 標準協(xié)議接口和與串行通信相關(guān)的一些知識。這主要是由通信技術(shù)不可靠性決定的。接收方為了檢查所接收的數(shù)據(jù)是否有誤碼,可采用多種檢測方法。 CRC 校驗碼是 在 K 位信息碼后 再拼接 R 位的校驗碼,整個編碼長度為 N 位,因此,這種編碼也叫( N, K)碼。 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 形式為例。此時, 16 位移位寄存器中的內(nèi)容就是 CRC 碼。在使用的時候,把計算出來的校驗值放在最后兩個字節(jié)里,將其發(fā)送出去,接收端對所有的數(shù)據(jù)進行相同的校驗,如校驗值為 0 我們則認為其數(shù)據(jù)沒有出錯。并通過 CRC 校驗實現(xiàn)通信中的檢錯。 MFC 提供了構(gòu)造 Windows 應用程序的框架,它不僅為應用程序建立標準的結(jié)構(gòu),還為其提供了標準的圖形用戶界面如菜單欄、工具欄、狀態(tài)欄等,開發(fā)人員只需要在此基礎(chǔ)上添加針對特定應用的代碼即可。 MFC的全稱是 Microsoft Foundation Classes。 串行通信控件 MSComm 目前,以 Windows 下的 MFC 應用程序為主要 的 框架, 常用的 基于 VC++的串行通信編程一般可以用兩種方法實現(xiàn):一種是使用 Windows API 通信函數(shù)。 程序員 就 不需要花 費大量 時間去了解 API 函數(shù),只需要利用 MSComm 控件就可實現(xiàn)串口 通信 編程 [16]。 圖 41 主要功能框圖 應用程序 主要實現(xiàn)的功能如圖 41 所示 的主要功能框圖 ,此應用程序的 總體程序流程圖如圖 42 所示。能夠發(fā)送單個或多個數(shù)據(jù) 。 建立工程 要實現(xiàn)通信,首先應先建立工程,即新建基于 Win32 的 MFC 應用程序。 圖 43 建立基于對話框應用程序過程圖 18 按照如上所示的方法步驟 ,建立 Win32 下的 MFC 應用程序工程, 應用程序工程名為 “通信 ”,最后點擊完成按鈕,就會出現(xiàn) MFC 應用程序初始界面如圖44 所示 [19]。對 Access 數(shù)據(jù)庫的連接與操作有很多種方法,例如在 ASP 中建立對 Access數(shù)據(jù)庫的連接、使用 Recordset 對象操作 Access 數(shù)據(jù)庫、使用 SQL 指令操作數(shù)據(jù)庫、使用 DSN 連接 Access 數(shù)據(jù)庫等。數(shù)據(jù)庫和數(shù)據(jù)源建 立完成后,開始用 MFC 建立登陸界面。登陸界面如圖 46 所示。 圖 47 主界面 (3)參數(shù)設(shè)置界面 完成兩臺 PC 機間的串行通信(數(shù)據(jù)交換),必須保證兩個串口的 通信 參數(shù)一致,這樣就需要將兩個應用程序的通信參數(shù)重新設(shè)置,通信參數(shù)包括波特率、數(shù)據(jù)位、停止位、奇偶校驗位等。 需要重新輸入和驗證,驗證通過后才可以登錄。 //新建的類,是基于 CRecordset 開始 輸入獲取信息 是否登錄 密碼用戶名是否一致 登錄成功,轉(zhuǎn)到主界面 結(jié)束 點擊退出按鈕 Y N Y N 23 try { if(())//判斷記錄集是否打開 ()。%s39。 AfxMessageBox(用戶名、密碼錯誤,請重試! )。 CDialog::OnOK()。 初始化的程序流程圖如圖 410 所示。//顯示登錄界面 if(()) //如果發(fā)現(xiàn)串口本來是打開的,則關(guān)閉串口 (FALSE)。 //設(shè)置輸入緩沖區(qū) (512)。程序流程圖如圖 411 所示,實現(xiàn)其功能代碼如下: void CMyDlg::OnOpen() 開始 設(shè)置串口號 打開串口 關(guān)閉串口 結(jié)束 26 { if(()) (FALSE)。 (m_n+1)。//設(shè)置當前接收區(qū)數(shù)據(jù)長度為 ,表示全部讀取 (1)。 //每當接收緩沖區(qū)有個字符則接收串口數(shù)據(jù) (0)。 } (4)實現(xiàn)數(shù)據(jù)交換模塊 使用 MSComm 通信控件是 MFC 中進行串口通訊最簡單的。 COleSafeArray safearray_inp。 if(()==2) //值為表示接收緩沖區(qū)內(nèi)有字符 { variant_inp=()。klen。klen。 //將字符送入臨時變量 strtemp存放 CByteArray hexdata。 UpdateData(false)。 29 UpdateData(FALSE)。 = m_databit。 CString conf。break。 } switch(m_jiaoyan) // 設(shè)置校驗方法 { case 0:conf = conf + n,。 case 2:conf = conf + e,。 } switch(m_databit) // 設(shè)置數(shù)據(jù)位 { case 0:conf = conf + 5,。 case 2:conf = conf + 7,。 default:conf = conf+8,。 case 1:conf = conf + 。 default:conf = conf+1。 } } (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)容。 //此處返回的 len可以用于計算發(fā)送了多少個十六進制數(shù) (COleVariant(hexdata))。 unsigned char* pC = (unsigned char*)(LPCTSTR)m_send。 //發(fā)送后清空輸入框 UpdateData(false)。senddata) { int hexdata,lowhexdata。 for(int i=0。 39。 if(i=len) break。 if((hexdata==16)||(lowhexdata==16)) break。 hexdatalen++。039。939。)amp。)) return ch39。a39。f39。 else return (1)。 然后需要打開串口,點擊【打開串口】按鈕, 程序會提示串口打開成功,最后設(shè)置 通信參數(shù), 點擊【設(shè)置】按鈕,跳轉(zhuǎn)到設(shè)這界面,根據(jù)需要選擇通信參數(shù),如果保存設(shè)置就點擊【確定按鈕】否則點擊【退出】按鈕,之后又回 到了主界面,現(xiàn)在即可進行數(shù)據(jù)的發(fā)送了。 圖 419 發(fā)送接收數(shù)據(jù) (4)十六進制顯示和計算 CRC 值 設(shè)置完成各參數(shù)后,選擇十六進制發(fā)送、接收復選框和計算 CRC 數(shù)值復選框,點擊【發(fā)送按鈕】,可以看到在接收區(qū)字符是以十六進制形式顯示的,接收和發(fā)送的 CRC 值在編輯框中顯示,這樣就可以判斷發(fā)送的內(nèi)容是否受到干擾。并對此應用程序進行了運行測試。掌握了串行通信的基本概念。 主要功能有用戶名密碼 驗證登錄、設(shè)置串口號、打開串口、 關(guān)閉串口、設(shè)置通信參數(shù)等 。 38 圖 420 十六進制顯示和計算發(fā)送接收數(shù)據(jù) CRC 值 (5)關(guān)閉串口退出整個應用程序 發(fā) 送數(shù)據(jù)結(jié)束后,關(guān)閉串口,點擊【退出】按鈕,程序提示 “謝謝使用!再見 ”。 圖 418 設(shè)置串口和參數(shù) (3)發(fā)送數(shù)據(jù) 選擇串口號,并將此 串口 打開 ,設(shè)置通信參數(shù)完成后,在發(fā)送 區(qū)內(nèi)的 編輯框輸入要發(fā)送的內(nèi)容, 然后點擊【發(fā)送】按鈕, 發(fā)送 去編輯框里要發(fā)送的內(nèi)容 37 會通過此串口發(fā)送到 另一個端口的接收區(qū) 的編輯框 內(nèi), 并 在接收區(qū) 的編輯框內(nèi)顯示了發(fā)送的 內(nèi)容, 同理也可在另一個串口的發(fā)送區(qū)編輯框內(nèi)輸入數(shù)據(jù),此 數(shù)據(jù)也可發(fā)送到本串口的編輯框內(nèi),也會在 接收區(qū)的編輯框內(nèi)得到顯示, 如圖 419所示。 圖 416 用戶名密碼不一致 輸入正確用戶名和密碼,程序提示 “登錄成功!歡迎使用! ”如圖 417 所示。a39。amp。+10。(ch=39。 else if((ch=39。amp。 return hexdatalen。 i++。 hexdata=ConvertHexChar(hstr)。 continue。) { char lst
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1