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

正文內(nèi)容

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

2025-05-25 15:28本頁面
  

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