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

正文內容

基于c的rs232通信協議模擬終端畢業(yè)論文-閱讀頁

2024-09-20 18:21本頁面
  

【正文】 選擇串口并打開 是否選擇 CRC 校驗 輸入數據并發(fā)送 登錄界面 N Y 選擇 CRC N Y 數據發(fā)送完成 關閉串口 結束 設置參數 N Y N Y 選擇 16 進制 17 使用此應用程序時,需要有 正確的 用戶名和密碼才能登錄到此軟件的主界面, 登錄到主界面后,要想 實現兩臺 PC 間的通信則 需要 選擇 可用 的串口號并且傳輸參數要一致,其中包括 波特率、數據位、停止位、奇偶校驗位等,只有設置對的參數才能實現數據交換的功能。通信結束后,關閉打開的串口。 能夠接收和顯示多個數據,并且能夠通過 CRC 校驗檢查接收的數據是否正確。 程序運行平臺 在程序設計時,原計劃使用 VS2020 軟件,但是由于電腦、操作系統(tǒng)等各種原因,就改用 VC++ 這個軟件。首先打開 VC++ 軟件,建立基于對話框的 MFC 應用程序。然后在將基于對話框選中 (如圖 43) ,直接下一步即可,最后直到完成。 圖 44 應用程序最初界 面 界面功能實現 (1)登錄 界面 登錄 界面的設計除了應用 MFC 中的控件和工具外,要想實現其用戶名和密碼的驗證功能還利用了數據庫的知識。 Access 數據庫是一個小型的數據庫,使用起來非常的靈活、方便 。其中使用 DNS 連接 Access 數據庫方法中, 在定義 DSN 的時候,就已經指定好了數據源需要的 ODBC 驅動程序,也指定好了數據庫文件的實際路徑和名字,我們在程序中,只需要引用預先定義的數據源名 DSN 即可 [20,21]。最后為 Access 數據庫 demo01 建立數據源,利用 ODBC 驅動。數據庫中用戶名和密碼如圖 45 所示。若輸入用戶名和密碼正確,即與 Access 數據庫表 login 內容相一致,點擊登錄按鈕,出現提示正確,點擊確定按鈕應用程序的界面會由登陸界面跳轉到主界面,開始進行數據交換。 圖 46 登錄界面 (2)主界面 20 主界面是整個應用程序的主體, 大致可劃分為三部分,有接收區(qū)、發(fā)送區(qū)和設置區(qū)。完整的主界面如圖 47 所示。相應的 通信 參數設置完成后,點擊 【 確定 】按鈕 ,應用程序 則會再次跳轉到主界面(數據收發(fā)界面),若想取消設置則點擊取消按鈕,參數設置界面關閉,回到主界面。 21 圖 48 設置界面 模塊分析 (1)用戶名密碼登錄模塊 在登錄界面下,在編輯框中輸入用戶名和密碼,單擊 界面中的【登錄】按鈕,可以驗證用戶名密碼輸入是否正確, 若正確登錄 ,程序提示 “登陸成功,歡迎使用! ”,然后登陸界面關閉顯示 主界面,若輸入錯誤則 程序提示 “密碼用戶名錯誤,請重新輸入! ”。 實現該功能的程序流程圖如圖 49 所示, 實現該功能的 程序 代碼如下: 22 圖 49 用戶名密碼登錄模塊流程圖 void CMylogin::OnBnClickedOk() { // TODO: Add your control notification handler code here OnOK()。 //讀取編輯框內容 CUserRecordset m_user。 //若打開則將其關閉 (username=39。anduserpwd=39。,m_username,m_userpwd)。 if(())//密碼用戶名不一致 () { ()。 return。 AfxMessageBox(登錄成功,歡迎使用! )。 } } catch(CDBException* e)//try….catch 是捕捉異常,即先執(zhí)行 try 若成功則 結束 { //若失敗則執(zhí)行 catch 捕捉異常并輸出 eReportError()。 } (2)應用程序初始化 實現先顯示登陸界面后主界面,利用 MFC 中的模式對話框在初始化函數中來實現, 若串口是打開的則關閉串口, 同時串口參 數的設置也是在初始化函數中設置實現 的。具體 程序代碼如下面所示: 24 圖 410 初始化流程圖 BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog()。 ()。 (4)。 //輸入方式為二進制方式 開始 顯示登陸界面 串口是否打開 設置參數 結束 關閉串口 Y N 25 (1024)。 //設置輸出緩沖區(qū) (9600,n,8,1)。 } (3)設置、打開和關閉串口功能 圖 411 設置、打開和關閉串口流程圖 串行通信是通過串口實現數據 交換的,但是 PC 機上有不止一個串口,需要我們設置進行串行通信端口號,并將串口打開,通信結束后將串口關閉。 CMyDlg md1。 = m_n。 //設置串口號 (1024)。//發(fā)送緩沖區(qū) (0)。//以二進制方式讀寫數據 (1)。 //打開串口 (1)。 //設置當前緩沖區(qū)長度 ()。 } void CMyDlg::OnClose()//關閉串口 { (FALSE)。 MSComm 通信控件提供了一系列標準通信命令的接口,它可以 建立串口連接,可以連接到其他通信設備(如 Modem) 還可以發(fā)送命令、進行數據交換以及 以及監(jiān)視通信中 27 的干擾 ,從而可以用它創(chuàng)建全雙工 、事件驅動的、高效實用的通信程序 [22,23]。 實現此模塊的程序流程圖如圖 412 所示, 其 功能代碼如下: 圖 412 數據交換模塊流程圖 代碼如下: void CMyDlg::OnOnComm() { // TODO: Add your control notification handler code here 開始 接收緩沖區(qū)內是否有字符 將緩沖區(qū)內字符給接收變量 結束 Y N 是否以 16 進制顯示 將緩沖區(qū)內字符以16 進制給變量 N Y 計算接收數據的 CRC 值 更新編輯框內容 28 VARIANT variant_inp。 long len,k。 //設置 BYTE數組 CString strtemp。 //讀緩沖區(qū)消息 safearray_inp=variant_inp。 //得到有效的數據長度 for(k=0。k++) (amp。 for(k=0。k++) //將數組轉換為 CString型變量 { char bt=*(char*)(rxdata+k)。 //將字符以十六進制方式送入臨時變量strtemp,加空格 else (%c,bt)。 unsigned int le1=String2Hex(strtemp,hexdata)。 if(()) m_crca=crc16r(a,le1)。 m_receive+=strtemp。 //顯示完成后要自動換行 m_receive+=temp。 //更 新編輯框內容 } (5)參數設置模塊 對數據交換過程中的波特率、數據位、停止位、奇偶校驗位等通信參數進行設置, 點擊【確定】按鈕,設置成功;點擊【退出】按鈕,取消設置,返回主界面。 = m_baund。 開始 確定鍵是否按下 設置通信參數 打開串口 結束 Y N 30 = m_jiaoyan。 if(()==IDOK) // 配置對話框 “確定 ”按下,需要重新配置端口 { (FALSE)。 switch(m_baund) // 設置波特率 { case 0:conf = 2400,。 case 1:conf = 4800,。 case 2:conf = 9600,。 default:conf = 9600,。break。break。break。break。break。break。break。break。break。break。break。break。break。 //設置波特率等參數 if(!()) //打開串口 (TRUE)。發(fā)送數據流程圖如圖 414 所示,代碼如下 : void CMyDlg::OnSendbtn() { // TODO: Add your control notification handler code here UpdateData(true)。 int len=String2Hex(m_send,hexdata)。 //發(fā)送十六進制數據 } else (COleVariant(m_send))。 unsigned int le=String2Hex(m_send,hexdata)。 if(()) m_crcs=crc16r(pC,le)。 ()。 //更新編輯框內容 //if(()) } (7)十六進制轉換模塊 本模塊主要是實現將字符轉換成十六進制形式,轉換后發(fā)送到接收區(qū)的數據即是十六進制的形式。 33 圖 415 單個字符轉換成十六進制的流程圖 int CMyDlg::String2Hex(CString str, CByteArray amp。 int hexdatalen=0。 (len/2)。ilen。 if(hstr==39。) { i++。 } 開始 字符是否在0F 之間 轉換成相 應的 16 進制形式 結束 Y 返回值 1 N 34 i++。 lstr=str[i]。 lowhexdata=ConvertHexChar(lstr)。 else hexdata=hexdata*16+lowhexdata。 senddata[hexdatalen]=(char)hexdata。 } (hexdatalen)。 } char CMyDlg::ConvertHexChar(char ch) {if((ch=39。)amp。(ch=39。)) return ch0x30。A39。amp。F39。A39。 else if((ch=39。)amp。(ch=39。)) return ch39。+10。 } 程序測試 首先,直接雙擊通信文件夾下的 debug 子文件夾下的通信 .exe 運行文件;其次,按以下步驟進行測試: 35 (1)登錄 輸入錯誤密碼,程序提示 “密碼、用戶名錯誤,請重試! ”如圖 416 所示。 圖 417 用戶名密碼正確 36 (2)串口和參數的設置 登陸成功后跳轉到主界面,通信之前要設置可用的串口號, 設置串口號時若沒有 選對串口號,應用程序會提示不可用的串口,直到設置了可用的串口號[24]。 如圖 418 所示。 即串口 3 的內容 “”發(fā)送到了串口 4 中,串口 4 的內容 “”可以發(fā)送到串口 3的接收區(qū),并在編輯框中得到顯示。如圖 420 所示。如圖 421 所示: 圖 421 系統(tǒng)提示框 39 本章小結 本章介紹了 Windows 編程下的 MFC 和串行通信控件 MSComm,詳細的描述了利用 MFC 和串行通信控件 MSComm 實現兩臺 PC 機間的數據交換的設計概述、模塊功能、代碼實現等。 40 第 5章 結論 通過 RS232 標準協議 接口 ,用 WINDOWS 編程下的 MFC 應用程序,基于C++語言的串行通信, 基本 實現了兩臺 PC 機間的數據交換。 了解了串行通信接口,即 RS232 標準以及接口, 學習了串行通信的基本原理,串行通信的通信參數,例如波特率、數據位、停止位和奇偶校驗位等。 學習了一些數據庫的相關知識,利用了數據庫中最簡單、最方便的 Microsoft Office Ac
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1