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

正文內(nèi)容

畢業(yè)論文基于c的rs232通信協(xié)議模擬終端(已改無(wú)錯(cuò)字)

2022-10-10 10:50:19 本頁(yè)面
  

【正文】 數(shù),只需要利用 MSComm 控件就可實(shí)現(xiàn)串口編程。所以,本次 實(shí)現(xiàn)兩臺(tái) PC 間的通信使用的就是 MSComm控件。 程序的主要功能 實(shí)現(xiàn)兩臺(tái) PC 機(jī)之間的通信的應(yīng)用程序,主要實(shí)現(xiàn)了密碼登陸、參設(shè)設(shè)置、參數(shù)顯示、打開(kāi)串口、關(guān)閉串口、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收等功能。主要功能框圖如圖 41 所示。 圖 41 主要功能框圖 應(yīng)用程序 主要實(shí)現(xiàn)的功能如圖 41 所示 的主要功能框圖 ,此應(yīng)用程序的 總體程序流程圖如圖 42 所示。 主函數(shù) 密碼登錄 參數(shù)設(shè)置 打開(kāi)串口 關(guān)閉串口 接收數(shù)據(jù) 發(fā)送數(shù)據(jù) 16 圖 42 程序流程框圖 開(kāi)始 調(diào)用初始化程序 登錄驗(yàn)證是否正確 主界面 串口號(hào)是否可用 打開(kāi)串口 通信參數(shù)是否符合 輸入數(shù)據(jù)并發(fā)送 登錄界面 N Y 設(shè)置串口 N Y 數(shù)據(jù)發(fā)送完成 關(guān)閉串口 結(jié)束 設(shè)置參數(shù) N Y N Y 17 使用此應(yīng)用程序時(shí),需要有 正確的 用戶(hù)名和密碼才能登錄到此軟件的主界面, 登錄到主界面后,要想 實(shí)現(xiàn)兩臺(tái) PC 間的通信則 需要 選擇 可用的串口號(hào)并且傳輸參數(shù)要一致,其中包括 波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位等,只有設(shè)置對(duì)的參數(shù)才能實(shí)現(xiàn)數(shù)據(jù)交換的功能。在發(fā)送接收數(shù)據(jù)過(guò)程中需要打開(kāi)串口。通信結(jié)束后,關(guān)閉打開(kāi)的串口。能夠發(fā)送單個(gè)或多個(gè)數(shù)據(jù) 。 能夠接收和顯示多個(gè)數(shù)據(jù)。程序流程圖如圖 32 所示。 程序運(yùn)行平臺(tái) 在程序設(shè)計(jì)時(shí),原計(jì)劃使用 VS2020 軟 件,但是由于電腦、操作系統(tǒng)等各種原因,就改用 VC++ 這個(gè)軟件。 建立工程 要實(shí)現(xiàn)通信,首先應(yīng)先建立工程,即新建基于 Win32 的 MFC 應(yīng)用程序。首先打開(kāi) VC++ 軟件,建立基于對(duì)話(huà)框的 MFC 應(yīng)用程序。并將這個(gè)應(yīng)用程序命名為通信。然后在將基于對(duì)話(huà)框選中 (如圖 43) ,直接下一步即可,最后直到完成。 圖 43 建立基于對(duì)話(huà)框應(yīng)用程序過(guò)程圖 18 按照如上所示的方法步驟 ,建立 Win32 下的 MFC 應(yīng)用程序工程, 應(yīng)用程序工程名 為 “通信 ”,最后點(diǎn)擊完成按鈕,就會(huì)出現(xiàn) MFC 應(yīng)用程序初始界面如圖44 所示 。 圖 44 應(yīng)用程序最初界面 界面功能實(shí)現(xiàn) 界面 登錄 界面的設(shè)計(jì)除了應(yīng)用 MFC 中的控件和工具外,要想實(shí)現(xiàn)其用戶(hù)名和密碼的驗(yàn)證功能還利用了數(shù)據(jù)庫(kù)的知識(shí)。本次登陸界面使用的數(shù)據(jù)庫(kù)是微軟的Access 數(shù)據(jù)庫(kù)。 Access 數(shù)據(jù)庫(kù)是一個(gè)小型的數(shù)據(jù)庫(kù),使用起來(lái)非常的靈活、方便 。對(duì) Access 數(shù)據(jù)庫(kù)的連接與操作有很多種方法,例如在 ASP 中建立對(duì) Access數(shù)據(jù)庫(kù)的連接、使用 Recordset 對(duì)象 操作 Access 數(shù)據(jù)庫(kù)、使用 SQL 指令操作數(shù)據(jù)庫(kù)、使用 DSN 連接 Access 數(shù)據(jù)庫(kù)等。其中使用 DNS 連接 Access 數(shù)據(jù)庫(kù)方法中,在定義 DSN 的時(shí)候,就已經(jīng)指定好了數(shù)據(jù)源需要的 ODBC 驅(qū)動(dòng)程序,也指定好了數(shù)據(jù)庫(kù)文件的實(shí)際路徑和名字,我們?cè)诔绦蛑?,只需要引用預(yù)先定義的數(shù)據(jù)源名 DSN 即可。 19 首先,啟動(dòng) Microsoft Office Access,建立 Access 數(shù)據(jù)庫(kù),命名為 demo01,然后在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表,命名為 puser,在表 puser 中輸入序號(hào)( userid)、用戶(hù)名( username)和密碼( userpwd),將這個(gè)數(shù)據(jù)庫(kù)保存。最后為 Access 數(shù)據(jù)庫(kù) demo01 建立數(shù)據(jù)源,利用 ODBC 驅(qū)動(dòng)。數(shù)據(jù)庫(kù)和數(shù)據(jù)源建立完成后,開(kāi)始用 MFC 建立登陸界面。數(shù)據(jù)庫(kù)中用戶(hù)名和密碼如圖 45 所示。 圖 45 數(shù)據(jù)庫(kù)中用戶(hù)名和弱密碼 運(yùn)行應(yīng)用程序時(shí),若輸入了錯(cuò)誤的用戶(hù)名或密碼,則系統(tǒng)會(huì)提示輸入錯(cuò)誤。若輸入用戶(hù)名和密碼正確,即與 Access 數(shù)據(jù)庫(kù)表 login 內(nèi)容相一致,點(diǎn)擊登錄按鈕,出現(xiàn)提示正確,點(diǎn)擊確定按鈕應(yīng)用程序的界面會(huì)由登陸界面跳轉(zhuǎn)到主界面,開(kāi)始進(jìn)行數(shù)據(jù)交換。登陸界面如圖 46 所示。 圖 46 登錄界面 20 主界面是整個(gè)應(yīng)用程序的主體, 大致可劃分為三部分,有接收區(qū)、發(fā)送區(qū)和設(shè)置區(qū)。接收區(qū)由靜態(tài)文本框和編輯框組成;發(fā)送區(qū)同樣也是由靜態(tài)文本框和邊界框組成;設(shè)置區(qū)由組合框、按鈕和靜態(tài)文本框組成。完整的主界面如圖47 所示。 圖 47 主界面 完成兩臺(tái) PC 機(jī)間的串行通信(數(shù)據(jù)交換),必須保證兩個(gè)串口的 通信 參數(shù)一致,這樣就需要將兩個(gè)應(yīng)用程序的通信參數(shù)重新設(shè)置,通信參數(shù)包括波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位等。 相應(yīng)的 通信 參數(shù)設(shè)置完成后,點(diǎn)擊 【 確定 】按鈕 ,應(yīng)用程序 則會(huì)再次跳轉(zhuǎn)到主界面(數(shù)據(jù)收發(fā)界面),若想取消設(shè)置則點(diǎn)擊取消按鈕,參數(shù)設(shè)置界面關(guān)閉,回到主界面。界面的具體情況如圖 48 所示。 21 圖 48 設(shè)置界面 模塊分析 在登錄界面下,在編輯框中輸入用戶(hù)名和密碼,單擊 界面中的【登錄】按鈕,可以驗(yàn)證用戶(hù)名密碼輸入是否正確, 若正確登錄 ,程序提示 “登陸成功,歡迎使用! ”,然后登陸界面關(guān)閉顯示 主界面,若輸入錯(cuò)誤則 程序提示 “密碼用戶(hù)名錯(cuò)誤,請(qǐng)重新輸入! ”。 需 要重新輸入和驗(yàn)證,驗(yàn)證通過(guò)后才可以登錄。 實(shí)現(xiàn)該功能的程序流程圖如圖 49 所示, 實(shí)現(xiàn)該功能的 程序 代碼如下: 22 圖 49 用戶(hù)名密碼登錄模塊流程圖 void CMylogin::OnBnClickedOk() { // TODO: Add your control notification handler code here OnOK()。 } void CMylogin::OnOK() { TODO: Add extra validation here UpdateData(TRUE)。 //讀取編輯框內(nèi)容 開(kāi)始 輸入獲取信息 是否登錄 密碼用戶(hù)名是否一致 登錄成功,轉(zhuǎn)到主界面 結(jié)束 點(diǎn)擊退出按鈕 Y N Y N 23 CUserRecordset m_user。 try { if(()) ()。 (username=39。%s39。anduserpwd=39。%s39。,m_username,m_userpwd)。 (CRecordset::snapshot,NULL,CRecordset::none)。 if(())//密碼用戶(hù)名不一致 { ()。 AfxMessageBox(用戶(hù)名、密碼錯(cuò)誤,請(qǐng)重試! )。 return。 } else { ()。 AfxMessageBox(登錄成功,歡迎使用! )。 CDialog::OnOK()。 } } catch(CDBException* e) { eReportError()。 return。 } 序初始化 實(shí)現(xiàn)先顯示登陸界面后主界面,利用 MFC 中的模式對(duì)話(huà)框在初始化函數(shù)中來(lái)實(shí)現(xiàn), 若串口是打開(kāi)的則關(guān)閉串口, 同時(shí)串口參 數(shù)的設(shè)置也是在初始化函數(shù)中設(shè)置實(shí)現(xiàn) 的。 初始化的程序流程圖如圖 410 所示。具體 程序代碼如下面所示: 24 圖 410 初始化流程圖 BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog()。 …… // TODO: Add extra initialization here CMylogin my。 ()。//顯示登錄界面 if(()) //如果發(fā)現(xiàn)串口本來(lái)是打開(kāi)的,則關(guān)閉串口 (FALSE)。 (4)。 //選擇 COM4端口 開(kāi)始 顯示登陸界面 串口是否打開(kāi) 設(shè)置參數(shù) 結(jié)束 關(guān)閉串口 Y N 25 (1)。 //輸入方式為二進(jìn)制方式 (1024)。 //設(shè)置輸入緩沖區(qū) (512)。 //設(shè)置輸出緩沖區(qū) (9600,n,8,1)。//波特率,無(wú)校驗(yàn),個(gè)數(shù)據(jù)位,個(gè)停止位 return TRUE。 // return TRUE unless you set the focus to a control } 、打開(kāi)和關(guān)閉串口功能 圖 411 設(shè)置、打開(kāi)和關(guān)閉串口流程圖 串行通信是通過(guò)串口實(shí)現(xiàn)數(shù)據(jù)交換的,但是 PC 機(jī)上有不止一個(gè)串口,需要我們?cè)O(shè)置進(jìn)行串行通信 端口號(hào),并將串口打開(kāi),通信結(jié)束后將串口關(guān)閉 ]23[ 。程序流程圖如圖 411 所示,實(shí)現(xiàn)其功能代碼如下: 開(kāi)始 設(shè)置串口號(hào) 打開(kāi)串口 關(guān)閉串口 結(jié)束 26 void CMyDlg::OnOpen() { // TODO: Add your control notification handler code here if(()) (FALSE)。 CMyDlg md1。 UpdateData(true)。 = m_n。 (m_n+1)。 //設(shè)置串口號(hào) (1024)。 //接收緩沖區(qū) (1024)。//發(fā)送緩沖區(qū) (0)。//設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長(zhǎng)度為 ,表示全部讀取 (1)。//以二進(jìn)制方式讀寫(xiě)數(shù)據(jù) (1)。//接收緩沖 區(qū)有個(gè)及個(gè)以上字符時(shí),將引發(fā)接收數(shù)據(jù)的 OnCommMsm事件 if(!()) { (TRUE)。 //打開(kāi)串口 (1)。 //每當(dāng)接收緩沖區(qū)有個(gè)字符則接收串口數(shù)據(jù) (0)。 //設(shè)置當(dāng)前緩沖區(qū)長(zhǎng)度 ()。 //預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù) } else AfxMessageBox(打開(kāi)端口失敗 !,MB_ICONSTOP,0)。 } void CMyDlg::OnClose()//關(guān)閉串口 { // TODO: Add your control notification handler code here (FALSE)。 } 27 使用 MSComm 通信控件是 MFC 中進(jìn)行串口通訊最簡(jiǎn)單的。 MSComm 通信控件提供了一系列標(biāo)準(zhǔn)通信命令的接口,它允許建立串口連接,可以連接到其他通信設(shè)備(如 Modem).還可以發(fā)送命令、進(jìn)行數(shù)據(jù)交換以及監(jiān)視和響應(yīng)在通信過(guò)程中可能發(fā) 生的各種錯(cuò)誤和事件,從而可以用它創(chuàng)建全雙工 、事件驅(qū)動(dòng)的、高效實(shí)用的通信程序 ]9[ 。加入 MSComm 通信控件, 實(shí)現(xiàn)從緩沖區(qū)中讀取數(shù)據(jù),同時(shí)將數(shù)據(jù)給接收變量,更新接收區(qū)編輯框的內(nèi)容 。 實(shí)現(xiàn)此模塊的程序流程圖如圖 412 所示, 其 功能代碼如下: 圖 412 數(shù)據(jù)交換模塊流程圖 代碼如下: void CMyDlg::OnOnComm() { // TODO: Add your control notification handler code here 開(kāi)始 接收緩沖區(qū)內(nèi)是否有字符 將緩沖 區(qū)內(nèi)容給接收變量 結(jié)束 Y N 28 VARIANT variant_inp。 COleSafeArray safearray_inp。 long len,k。 byte rxdata[512]。 //設(shè)置 BYTE數(shù)組 CString strtemp。 if(()==2) //值為表示接收緩沖區(qū)內(nèi)有字符 { variant_inp=()。 //讀緩沖區(qū)消息 safearray_inp=variant_inp。 ///變量轉(zhuǎn)換 len=()。 //得到有
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1