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

正文內(nèi)容

基于c的rs232通信協(xié)議模擬終端畢業(yè)論文(參考版)

2024-09-04 18:21本頁面
  

【正文】 掌握了串行通信的基本概念。 主要功能有用戶名密碼 驗(yàn)證登錄、設(shè)置串口號(hào)、打開串口、 關(guān)閉串口、設(shè)置通信參數(shù)等 。并對(duì)此應(yīng)用程序進(jìn)行了運(yùn)行測試。 38 圖 420 十六進(jìn)制顯示和計(jì)算發(fā)送接收數(shù)據(jù) CRC 值 (5)關(guān)閉串口退出整個(gè)應(yīng)用程序 發(fā) 送數(shù)據(jù)結(jié)束后,關(guān)閉串口,點(diǎn)擊【退出】按鈕,程序提示 “謝謝使用!再見 ”。 圖 419 發(fā)送接收數(shù)據(jù) (4)十六進(jìn)制顯示和計(jì)算 CRC 值 設(shè)置完成各參數(shù)后,選擇十六進(jìn)制發(fā)送、接收復(fù)選框和計(jì)算 CRC 數(shù)值復(fù)選框,點(diǎn)擊【發(fā)送按鈕】,可以看到在接收區(qū)字符是以十六進(jìn)制形式顯示的,接收和發(fā)送的 CRC 值在編輯框中顯示,這樣就可以判斷發(fā)送的內(nèi)容是否受到干擾。 圖 418 設(shè)置串口和參數(shù) (3)發(fā)送數(shù)據(jù) 選擇串口號(hào),并將此 串口 打開 ,設(shè)置通信參數(shù)完成后,在發(fā)送 區(qū)內(nèi)的 編輯框輸入要發(fā)送的內(nèi)容, 然后點(diǎn)擊【發(fā)送】按鈕, 發(fā)送 去編輯框里要發(fā)送的內(nèi)容 37 會(huì)通過此串口發(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所示。 然后需要打開串口,點(diǎn)擊【打開串口】按鈕, 程序會(huì)提示串口打開成功,最后設(shè)置 通信參數(shù), 點(diǎn)擊【設(shè)置】按鈕,跳轉(zhuǎn)到設(shè)這界面,根據(jù)需要選擇通信參數(shù),如果保存設(shè)置就點(diǎn)擊【確定按鈕】否則點(diǎn)擊【退出】按鈕,之后又回 到了主界面,現(xiàn)在即可進(jìn)行數(shù)據(jù)的發(fā)送了。 圖 416 用戶名密碼不一致 輸入正確用戶名和密碼,程序提示 “登錄成功!歡迎使用! ”如圖 417 所示。 else return (1)。a39。f39。amp。a39。+10。)) return ch39。(ch=39。)amp。 else if((ch=39。939。amp。039。 return hexdatalen。 hexdatalen++。 i++。 if((hexdata==16)||(lowhexdata==16)) break。 hexdata=ConvertHexChar(hstr)。 if(i=len) break。 continue。 39。) { char lstr,hstr=str[i]。 for(int i=0。 int len=()。senddata) { int hexdata,lowhexdata。 單個(gè)字符轉(zhuǎn)換成十六進(jìn)制的 流程圖如圖 415 所示,代碼如下。 //發(fā)送后清空輸入框 UpdateData(false)。 UpdateData(false)。 unsigned char* pC = (unsigned char*)(LPCTSTR)m_send。//發(fā)送 ASCII字符數(shù)據(jù) CByteArray hexdata。 //此處返回的 len可以用于計(jì)算發(fā)送了多少個(gè)十六進(jìn)制數(shù) (COleVariant(hexdata))。 //讀取編輯框內(nèi)容 if(()) { CByteArray hexdata。 } } (6)發(fā)送模塊 圖 414 發(fā)送模塊流程圖 開始 讀取編輯框 更新編輯框 結(jié)束 字符形式發(fā)送 16 進(jìn)制形式發(fā)送 計(jì)算 CRC 值值 32 發(fā)送數(shù)據(jù)模塊中,程序先讀取編輯框的內(nèi)容, 根據(jù)是否選擇 16 進(jìn)制顯示選取字符發(fā)送形式,并計(jì)算發(fā)送數(shù)據(jù)的 CRC 值,同時(shí)發(fā)送并 清空,最后更新編輯框的內(nèi)容。 } (conf)。 default:conf = conf+1。 case 2:conf = conf + 2。 case 1:conf = conf + 。 } switch(m_stopbit) // 設(shè)置停止位 { 31 case 0:conf = conf + 1。 default:conf = conf+8,。 case 3:conf = conf + 8,。 case 2:conf = conf + 7,。 case 1:conf = conf + 6,。 } switch(m_databit) // 設(shè)置數(shù)據(jù)位 { case 0:conf = conf + 5,。 default:conf = conf+n,。 case 2:conf = conf + e,。 case 1:conf = conf + o,。 } switch(m_jiaoyan) // 設(shè)置校驗(yàn)方法 { case 0:conf = conf + n,。break。break。break。 CString conf。 = m_stopbit。 = m_databit。參數(shù)設(shè)置模塊流程圖如圖 413 所示,實(shí)現(xiàn)應(yīng)用程序具體功能的 代碼如下: 圖 413 通信參數(shù)設(shè)置流程圖 void CMyDlg::OnSet() { CSetcs sc。 29 UpdateData(FALSE)。 //加入接收編輯框?qū)?yīng)字符串 } } CString temp=(\r\n)。 UpdateData(false)。 unsigned char* a= (unsigned char*)(LPCTSTR)strtemp。 //將字符送入臨時(shí)變量 strtemp存放 CByteArray hexdata。 //字符型 if(()) (%02X ,bt)。klen。k,rxdata+k)。klen。 ///變量轉(zhuǎn)換 len=()。 if(()==2) //值為表示接收緩沖區(qū)內(nèi)有字符 { variant_inp=()。 byte rxdata[512]。 COleSafeArray safearray_inp。加入 MSComm 通信控件, 實(shí)現(xiàn)從緩沖區(qū)中讀取數(shù)據(jù),同時(shí)將數(shù)據(jù)給接收變量,更新接收區(qū)編輯框的內(nèi)容 。 } (4)實(shí)現(xiàn)數(shù)據(jù)交換模塊 使用 MSComm 通信控件是 MFC 中進(jìn)行串口通訊最簡單的。 //預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù) } else AfxMessageBox(打開端口失敗 !,MB_ICONSTOP,0)。 //每當(dāng)接收緩沖區(qū)有個(gè)字符則接收串口數(shù)據(jù) (0)。 if(!()) { (TRUE)。//設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長度為 ,表示全部讀取 (1)。 //接收緩沖區(qū) (1024)。 (m_n+1)。 UpdateData(true)。程序流程圖如圖 411 所示,實(shí)現(xiàn)其功能代碼如下: void CMyDlg::OnOpen() 開始 設(shè)置串口號(hào) 打開串口 關(guān)閉串口 結(jié)束 26 { if(()) (FALSE)。//波特率,無校驗(yàn),數(shù)據(jù)位, 停止位 return TRUE。 //設(shè)置輸入緩沖區(qū) (512)。 //選擇 COM4端口 (1)。//顯示登錄界面 if(()) //如果發(fā)現(xiàn)串口本來是打開的,則關(guān)閉串口 (FALSE)。 …… // TODO: Add extra initialization here CMylogin my。 初始化的程序流程圖如圖 410 所示。 return。 CDialog::OnOK()。 } else { ()。 AfxMessageBox(用戶名、密碼錯(cuò)誤,請(qǐng)重試! )。//用來作為檢索條件,字符串格式化輸出 (CRecordset::snapshot,NULL,CRecordset::none)。%s39。%s39。 //新建的類,是基于 CRecordset 開始 輸入獲取信息 是否登錄 密碼用戶名是否一致 登錄成功,轉(zhuǎn)到主界面 結(jié)束 點(diǎn)擊退出按鈕 Y N Y N 23 try { if(())//判斷記錄集是否打開 ()。 } void CMylogin::OnOK() { TODO: Add extra validation here UpdateData(TRUE)。 需要重新輸入和驗(yàn)證,驗(yàn)證通過后才可以登錄。界面的具體情況如圖 48 所示。 圖 47 主界面 (3)參數(shù)設(shè)置界面 完成兩臺(tái) PC 機(jī)間的串行通信(數(shù)據(jù)交換),必須保證兩個(gè)串口的 通信 參數(shù)一致,這樣就需要將兩個(gè)應(yīng)用程序的通信參數(shù)重新設(shè)置,通信參數(shù)包括波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位等。接收區(qū)由靜態(tài)文本框和編輯框組成;發(fā)送區(qū)同樣也是由靜態(tài)文本框和邊界框組成;設(shè)置區(qū)由組合框、 復(fù)選框、 按鈕和靜態(tài)文本框組成。登陸界面如圖 46 所示。 圖 45 數(shù)據(jù)庫中用戶名和弱密碼 運(yùn)行應(yīng)用程序時(shí),若輸入了錯(cuò)誤的用戶名或密碼,則系統(tǒng)會(huì)提示輸入錯(cuò)誤。數(shù)據(jù)庫和數(shù)據(jù)源建 立完成后,開始用 MFC 建立登陸界面。 19 首先,啟動(dòng) Microsoft Office Access,建立 Access 數(shù)據(jù)庫,命名為 demo01,然后在數(shù)據(jù)庫中創(chuàng)建一個(gè)表,命名為 puser,在表 puser 中輸入序號(hào)( userid)、用戶名( username)和密碼( userpwd),將這個(gè)數(shù)據(jù)庫保存。對(duì) Access 數(shù)據(jù)庫的連接與操作有很多種方法,例如在 ASP 中建立對(duì) Access數(shù)據(jù)庫的連接、使用 Recordset 對(duì)象操作 Access 數(shù)據(jù)庫、使用 SQL 指令操作數(shù)據(jù)庫、使用 DSN 連接 Access 數(shù)據(jù)庫等。本次登陸界面使用的數(shù)據(jù)庫是微軟的Access 數(shù)據(jù)庫。 圖 43 建立基于對(duì)話框應(yīng)用程序過程圖 18 按照如上所示的方法步驟 ,建立 Win32 下的 MFC 應(yīng)用程序工程, 應(yīng)用程序工程名為 “通信 ”,最后點(diǎn)擊完成按鈕,就會(huì)出現(xiàn) MFC 應(yīng)用程序初始界面如圖44 所示 [19]。并將這個(gè)應(yīng)用程序命名為通信 [17,18]。 建立工程 要實(shí)現(xiàn)通信,首先應(yīng)先建立工程,即新建基于 Win32 的 MFC 應(yīng)用程序。 程序流程圖如圖 32所示。能夠發(fā)送單個(gè)或多個(gè)數(shù)據(jù) 。在發(fā)送接收數(shù)據(jù)過程中需要打開串口。 圖 41 主要功能框圖 應(yīng)用程序 主要實(shí)現(xiàn)的功能如圖 41 所示 的主要功能框圖 ,此應(yīng)用程序的 總體程序流程圖如圖 42 所示。 程序的主要功能 實(shí)現(xiàn)兩臺(tái) PC 機(jī)之間的通信的應(yīng)用程序,主要實(shí)現(xiàn)了密碼登陸、參設(shè)設(shè)置、參數(shù)顯示、打開串口、關(guān)閉串口、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收 、 CRC 校驗(yàn) 等功能。 程序員 就 不需要花 費(fèi)大量 時(shí)間去了解 API 函數(shù),只需要利用 MSComm 控件就可實(shí)現(xiàn)串口 通信 編程 [16]。 其余一種是利用 MSComm ActiveX 串行通信控件 。 串行通信控件 MSComm 目前,以 Windows 下的 MFC 應(yīng)用程序?yàn)橹饕?的 框架, 常用的 基于 VC++的串行通信編程一般可以用兩種方法實(shí)現(xiàn):一種是使用 Windows API 通信函數(shù)。 1989年微軟公司成立 Application Framework技術(shù)團(tuán)隊(duì),名為AFX小組,用以開發(fā) C++面向?qū)ο蠊ぞ呓o Windows應(yīng)用程序開發(fā)人員使用。 MFC的全稱是 Microsoft Foundation Classes。 Windows應(yīng)用 程序的框架主要有兩種類型,一種是基于對(duì)話框的應(yīng)用程序框架,另外一種是基于文檔、視圖結(jié)構(gòu)的應(yīng)用程序框架。 MFC 提供了構(gòu)造 Windows 應(yīng)用程序的框架,它不僅為應(yīng)用程序建立標(biāo)準(zhǔn)的結(jié)構(gòu),還為其提供了標(biāo)準(zhǔn)的圖形用戶界面如菜單欄、工具欄、狀態(tài)欄等,開發(fā)人員只需要在此基礎(chǔ)上添加針對(duì)特定應(yīng)用的代碼即可。其中使用 MFC 直接編寫提供大量預(yù)先 編好的類和支持代碼或使用 MFC和向?qū)В?Wizards)編寫,用 AppWizard 來生成 Windows 應(yīng)用程序框架。并通過 CRC 校驗(yàn)實(shí)現(xiàn)通信中的檢錯(cuò)。 本章介紹了通信中最常使用的校驗(yàn)方
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1