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

正文內(nèi)容

基于c的rs232通信協(xié)議模擬終端畢業(yè)論文-wenkub.com

2025-05-24 18:06 本頁面
   

【正文】 2001.[16] 王華,岳麗全,++[J].長春工程學院學報:自然科學版,2009,10(1):3255.[17] Herbert ++:The Complete Reference,Fourth Edition[J] .McGrawHill,2009,23(7):1552.[18] 孫淑霞,李思明,++程序設(shè)計實驗指導與測試第2版[J].北京:電子工業(yè)出版社,2007.[19] 王莉,++的串口通信設(shè)計及其應(yīng)用[J].控制工程,2004,11 (S1) :8999.[20] 王珊,[M].北京: 參 考 文 獻[1] [D].上海:華東師范大學,2010.[2] [D].合肥:合肥工業(yè)大學,2009.[3] 樊一支,姜文祥,陳梨園。所以對通信過程中數(shù)據(jù)交換準確度的驗證采用了比較準確的方法即CRC校驗,CRC校驗全稱CRC(Cyclic Redundancy Check)循環(huán)冗余校驗碼,它是數(shù)據(jù)通信中最常用的一種差錯校驗碼,數(shù)據(jù)從發(fā)送端發(fā)送過來同時在其低位上是兩個CRC校驗碼,接收方對接收到的數(shù)據(jù)進行CRC解碼,與發(fā)送來的數(shù)據(jù)進行比對,驗證是否相同,若相同則接收到的數(shù)據(jù)是正確的,反之則證明數(shù)據(jù)在發(fā)送過程中受到了干擾等,需重新發(fā)送此數(shù)據(jù)。由于通信過程中,被傳遞的數(shù)據(jù)有可能受到各種因素的影響,造成數(shù)據(jù)丟失,更改等,影響發(fā)送接收數(shù)據(jù)的準確性。掌握了串行通信的基本概念。并對此應(yīng)用程序進行了運行測試。圖419 發(fā)送接收數(shù)據(jù)(4)十六進制顯示和計算CRC值設(shè)置完成各參數(shù)后,選擇十六進制發(fā)送、接收復選框和計算CRC數(shù)值復選框,點擊【發(fā)送按鈕】,可以看到在接收區(qū)字符是以十六進制形式顯示的,接收和發(fā)送的CRC值在編輯框中顯示,這樣就可以判斷發(fā)送的內(nèi)容是否受到干擾。然后需要打開串口,點擊【打開串口】按鈕,程序會提示串口打開成功,最后設(shè)置通信參數(shù),點擊【設(shè)置】按鈕,跳轉(zhuǎn)到設(shè)這界面,根據(jù)需要選擇通信參數(shù),如果保存設(shè)置就點擊【確定按鈕】否則點擊【退出】按鈕,之后又回到了主界面,現(xiàn)在即可進行數(shù)據(jù)的發(fā)送了。 else return (1)。f39。a39。)) return ch39。)amp。939。039。 hexdatalen++。 if((hexdata==16)||(lowhexdata==16)) break。 if(i=len) break。 39。 for(int i=0。senddata) { int hexdata,lowhexdata。 //發(fā)送后清空輸入框 UpdateData(false)。 unsigned char* pC = (unsigned char*)(LPCTSTR)m_send。 //此處返回的len可以用于計算發(fā)送了多少個十六進制數(shù) (COleVariant(hexdata))。 }}(6)發(fā)送模塊開始讀取編輯框16進制形式發(fā)送字符形式發(fā)送計算CRC值值更新編輯框結(jié)束圖414 發(fā)送模塊流程圖發(fā)送數(shù)據(jù)模塊中,程序先讀取編輯框的內(nèi)容,根據(jù)是否選擇16進制顯示選取字符發(fā)送形式,并計算發(fā)送數(shù)據(jù)的CRC值,同時發(fā)送并清空,最后更新編輯框的內(nèi)容。 default:conf = conf+1。 case 1:conf = conf + 。 default:conf = conf+8,。 case 2:conf = conf + 7,。 } switch(m_databit) // 設(shè)置數(shù)據(jù)位 { case 0:conf = conf + 5,。 case 2:conf = conf + e,。 } switch(m_jiaoyan) // 設(shè)置校驗方法 { case 0:conf = conf + n,。break。 CString conf。 = m_databit。 UpdateData(FALSE)。 UpdateData(false)。 //將字符送入臨時變量strtemp存放 CByteArray hexdata。klen。klen。 if(()==2) //值為表示接收緩沖區(qū)內(nèi)有字符 { variant_inp=()。 COleSafeArray safearray_inp。}(4)實現(xiàn)數(shù)據(jù)交換模塊使用MSComm通信控件是MFC中進行串口通訊最簡單的。 //每當接收緩沖區(qū)有個字符則接收串口數(shù)據(jù)(0)。//設(shè)置當前接收區(qū)數(shù)據(jù)長度為,表示全部讀取 (1)。 (m_n+1)。程序流程圖如圖411所示,實現(xiàn)其功能代碼如下:void CMyDlg::OnOpen() { if(()) (FALSE)。 //設(shè)置輸入緩沖區(qū) (512)。//顯示登錄界面if(()) //如果發(fā)現(xiàn)串口本來是打開的,則關(guān)閉串口 (FALSE)。初始化的程序流程圖如圖410所示。 CDialog::OnOK()。 AfxMessageBox(用戶名、密碼錯誤,請重試!)。%s39。 //新建的類,是基于CRecordset try { if(())//判斷記錄集是否打開 ()。需要重新輸入和驗證,驗證通過后才可以登錄。 圖47 主界面(3)參數(shù)設(shè)置界面完成兩臺PC機間的串行通信(數(shù)據(jù)交換),必須保證兩個串口的通信參數(shù)一致,這樣就需要將兩個應(yīng)用程序的通信參數(shù)重新設(shè)置,通信參數(shù)包括波特率、數(shù)據(jù)位、停止位、奇偶校驗位等。登陸界面如圖 46 所示。數(shù)據(jù)庫和數(shù)據(jù)源建立完成后,開始用MFC建立登陸界面。對Access數(shù)據(jù)庫的連接與操作有很多種方法,例如在ASP中建立對Access數(shù)據(jù)庫的連接、使用Recordset對象操作Access數(shù)據(jù)庫、使用SQL指令操作數(shù)據(jù)庫、使用DSN連接Access數(shù)據(jù)庫等。圖43 建立基于對話框應(yīng)用程序過程圖按照如上所示的方法步驟,建立Win32下的MFC應(yīng)用程序工程,應(yīng)用程序工程名為“通信”,最后點擊完成按鈕,就會出現(xiàn)MFC應(yīng)用程序初始界面如圖44所示[19]。 建立工程要實現(xiàn)通信,首先應(yīng)先建立工程,即新建基于Win32的MFC應(yīng)用程序。能夠發(fā)送單個或多個數(shù)據(jù)。主函數(shù)CRC校驗十六進制顯示密碼登錄參數(shù)設(shè)置打開串口關(guān)閉串口接收數(shù)據(jù)發(fā)送數(shù)據(jù)圖41 主要功能框圖應(yīng)用程序主要實現(xiàn)的功能如圖41所示的主要功能框圖,此應(yīng)用程序的總體程序流程圖如圖42所示。程序員就不需要花費大量時間去了解API函數(shù),只需要利用MSComm控件就可實現(xiàn)串口通信編程[16]。 串行通信控件MSComm目前,以Windows下的MFC應(yīng)用程序為主要的框架,常用的基于VC++的串行通信編程一般可以用兩種方法實現(xiàn):一種是使用Windows API通信函數(shù)。MFC的全稱是Microsoft Foundation Classes。MFC提供了構(gòu)造Windows應(yīng)用程序的框架,它不僅為應(yīng)用程序建立標準的結(jié)構(gòu),還為其提供了標準的圖形用戶界面如菜單欄、工具欄、狀態(tài)欄等,開發(fā)人員只需要在此基礎(chǔ)上添加針對特定應(yīng)用的代碼即可。并通過CRC校驗實現(xiàn)通信中的檢錯。在使用的時候,把計算出來的校驗值放在最后兩個字節(jié)里,將其發(fā)送出去,接收端對所有的數(shù)據(jù)進行相同的校驗,如校驗值為0我們則認為其數(shù)據(jù)沒有出錯。此時,16 位移位寄存器中的內(nèi)容就是 CRC 碼。 CRC校驗碼權(quán)的形式CRC校驗碼有很多種權(quán)的行式,使用哪一種形式是根據(jù)通信雙方共同制定的“規(guī)則”而定的,其中各種常用權(quán)的形式如下所示: (31) (32) (33) (34) (35)以其中CRCCCITT形式為例。CRC校驗碼是在K位信息碼后再拼接R位的校驗碼,整個編碼長度為N位,因此,這種編碼也叫(N,K)碼。接收方為了檢查所接收的數(shù)據(jù)是否有誤碼,可采用多種檢測方法。這主要是由通信技術(shù)不可靠性決定的。 本章小結(jié)本章從原理上介紹了串行通信的基本原理,詳細的闡述了RS232標準協(xié)議接口和與串行通信相關(guān)的一些知識。這就需要用到串口調(diào)試小助手。圖23顯示了9針通訊的接口管腳,9針管腳的串口各引腳名稱、功能和信號來源各不相同。所以要想通過串行通信實現(xiàn)與外圍設(shè)備數(shù)據(jù)交換,必須用USB轉(zhuǎn)RS232 9針串口轉(zhuǎn)換線。發(fā)送端和接收端可以由各自的時鐘源來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨立,互不同步,接收端檢測到傳輸線上發(fā)送過來的低電平邏輯0(即字符幀起始位)時,確定發(fā)送端已開始發(fā)送數(shù)據(jù),每當接收端收到字符幀中的停止位時,就知道一幀字符已經(jīng)發(fā)送完畢[3]。 它們均由數(shù)據(jù)字符、CRC即同步字符和校驗字符組成。同步通信是一種在發(fā)送端發(fā)送一個抑制載波的雙邊帶信號,而在接收端恢復載波,再進行檢波的通信方式。對于奇校驗和偶校驗,串口會設(shè)置校驗位,是數(shù)據(jù)位后面的一位,用一個值保證傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。(3)停止位停止位一般為,用來表示單個包的最后一位。怎樣決定數(shù)據(jù)位的取值取決于傳送的信息。在串行通信中,通信線上所傳輸?shù)淖址麛?shù)據(jù)(代碼)是逐位傳送的,一個字符由若干位組成,所以每秒鐘所傳輸?shù)牟ㄌ芈屎妥址麛?shù)(字符速率)是完全不同的。(1)波特率所謂波特率就是每秒中傳送的二進制位數(shù),其單位是bps(bits per second),用來描述數(shù)據(jù)的傳送速率,是衡量串行通信數(shù)據(jù)傳輸速度快慢的重要指標。串行端口的本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器[5]。串行通信中所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。RS232 9針通訊的接口圖如圖21所示 。是目前PC機與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。同時,由于RS232標準具有連線簡單、通訊距離長等優(yōu)點,目前也廣泛應(yīng)用于微型計算機系統(tǒng)、工控機和大型設(shè)備系統(tǒng)中。有25條信號線,盡管有如此多的信號線,但是對于一般雙工通信,僅僅需要其中幾條信號線就可實現(xiàn)數(shù)據(jù)的傳送,即一條發(fā)送線、一條接收線和一條地線。在VC++高級語言中,利用Windows下的MSComm ActiveX控件,實現(xiàn)兩臺計算機間的通信測試與仿真。在設(shè)計過程中,我通過查閱大量相關(guān)書籍和資料,研究學習了RS232標準協(xié)議和VC++編程語言下的MFC界面編程,學習串行通信相關(guān)知識,通過編
點擊復制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1