![實(shí)驗(yàn)三-TTY發(fā)送程序文件_第1頁](http://file4.renrendoc.com/view/977993a9838e959d6c7a9021db070a7f/977993a9838e959d6c7a9021db070a7f1.gif)
![實(shí)驗(yàn)三-TTY發(fā)送程序文件_第2頁](http://file4.renrendoc.com/view/977993a9838e959d6c7a9021db070a7f/977993a9838e959d6c7a9021db070a7f2.gif)
![實(shí)驗(yàn)三-TTY發(fā)送程序文件_第3頁](http://file4.renrendoc.com/view/977993a9838e959d6c7a9021db070a7f/977993a9838e959d6c7a9021db070a7f3.gif)
![實(shí)驗(yàn)三-TTY發(fā)送程序文件_第4頁](http://file4.renrendoc.com/view/977993a9838e959d6c7a9021db070a7f/977993a9838e959d6c7a9021db070a7f4.gif)
![實(shí)驗(yàn)三-TTY發(fā)送程序文件_第5頁](http://file4.renrendoc.com/view/977993a9838e959d6c7a9021db070a7f/977993a9838e959d6c7a9021db070a7f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
..計(jì)算機(jī)控制工程實(shí)驗(yàn)三報(bào)告實(shí)驗(yàn)三TTY字符發(fā)送程序一、功能描述TTY發(fā)送程序,在用戶在主界面窗口中鍵入ASCII字符時(shí),字符將通過串口發(fā)送到"實(shí)驗(yàn)二"TTY接受程序。"串口號"、"波特率"以及"奇偶校驗(yàn)類型"可以設(shè)置。要求:1.采用WinAPI編程實(shí)現(xiàn)。2.基于VC++"單文檔應(yīng)用程序"模板實(shí)現(xiàn)。注意:基類選擇"CEditView"。二、實(shí)驗(yàn)環(huán)境1.MicrosoftVisualstudio2012;2.VSPD6.9虛擬串口軟件三、界面設(shè)計(jì)1.主界面設(shè)計(jì)以CeditView為基類創(chuàng)建視圖窗口。并編輯菜單屬性。2.設(shè)置對話框界面設(shè)計(jì)主要完成對"端口"、"波特率"、"校驗(yàn)類型"的設(shè)置。四、變量聲明1、在View類頭文件〔CMFCApplication3View.h中聲明如下成員變量及相應(yīng)頭文件。HANDLEhCom;//串口句柄OVERLAPPEDWol; //寫操作OVERLAPPED結(jié)構(gòu)變量BYTEmyWByte[300];//存放欲寫數(shù)據(jù)longdataWLen; //發(fā)送數(shù)據(jù)的長度SetupDlgmySetupDlg; //聲明設(shè)置對話框?qū)嵗齃PCSTRmyCom;//串口名稱BYTEmyParity;//奇偶校驗(yàn)類型DWORDmyfParity;//是否使用奇偶校驗(yàn)DWORDmyBaudRate;//通信波特率boolblnOpened;//串口已經(jīng)打開標(biāo)志intm_delay;//延遲發(fā)送時(shí)間同時(shí)包含#include"SetupDlg.h"頭文件2、利用"ClassWizard"創(chuàng)建設(shè)置對話框控件成員變量五、打開串口CStringstrDis; hCom=CreateFile<myCom,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL>;if<hCom!=INVALID_HANDLE_VALUE> { SetupComm<hCom,1024,512>;DCBmyDCB; GetCommState<hCom,&myDCB>; myDCB.BaudRate=myBaudRate; myDCB.fBinary=true; myDCB.fParity=myfParity; myDCB.ByteSize=8; myDCB.Parity=myParity; myDCB.StopBits=ONESTOPBIT; SetCommState<hCom,&myDCB>; AfxMessageBox<"串口打開成功">; blnOpened=true; }else { AfxMessageBox<"串口打開失敗">; blnOpened=false; }六、關(guān)閉串口在主界面"關(guān)閉串口"菜單項(xiàng),在事件處理代碼中添加:if<<blnOpened>&&<hCom!=NULL>> { CloseHandle<hCom>; AfxMessageBox<"串口已經(jīng)關(guān)閉">; blnOpened=false; }else { AfxMessageBox<"串口未打開">; }七、設(shè)置串口在主界面"設(shè)置"菜單項(xiàng)事件處理函數(shù)中打開"設(shè)置"對話框,對通信參數(shù)進(jìn)行設(shè)置。voidCMFCApplication3View::OnSetupcom<>{CStringstrStatus;if<mySetupDlg.DoModal<>==IDOK> {switch<mySetupDlg.m_Com> {case0: { strStatus="COM1"; myCom="COM1";break; }case1: { strStatus="COM2"; myCom="COM2";break; }case2: { strStatus="COM3"; myCom="COM3";break; }case3: { strStatus="COM4"; myCom="COM4";break; }case4: { strStatus="COM5"; myCom="COM5";break; }case5: { strStatus="COM6"; myCom="COM6";break; } } strStatus+=",";switch<mySetupDlg.m_BaudRate> {case0: { strStatus+="19200"; myBaudRate=CBR_19200;break; }case1: { strStatus+="9600"; myBaudRate=CBR_9600;break; }case2: { strStatus+="4800"; myBaudRate=CBR_4800;break; }case3: { strStatus+="2400"; myBaudRate=CBR_2400;break; }default:break; } strStatus+=",";switch<mySetupDlg.m_Parity> {case0: { myfParity=false; myParity=NOPARITY; strStatus+="N";break; }case1: { myfParity=true; myParity=ODDPARITY; strStatus+="O";break; }case2: { myfParity=true; myParity=EVENPARITY; strStatus+="E";break; }default:break; } strStatus+=",8,1";CMainFrame*m_pGetFrame=<CMainFrame*>AfxGetApp<>->m_pMainWnd; strStatus="TTY發(fā)送程序-"+strStatus; m_pGetFrame->SetWindowText<strStatus>; }}八、發(fā)送字符在View類"OnChar"事件中發(fā)送鍵入字符。voidCMFCApplication3View::OnChar<UINTnChar,UINTnRepCnt,UINTnFlags>{//TODO:在此添加消息處理程序代碼和/或調(diào)用默認(rèn) myWByte[0]=nChar; dataWLen=1; Wol.Internal=0; Wol.InternalHigh=0; Wol.Offset=0; Wol.OffsetHigh=0; Wol.hEvent=CreateEvent<NULL,TRUE,FALSE,NULL>; WriteFile<hCom,&myWByte,dataWLen,NULL,&Wol>; Beep<1000,10>;CEditView::OnChar<nChar,nRepCnt,nFlags>;}九、命令的有效性處理"設(shè)置"、"打開串口"、"關(guān)閉串口"、"退出"命令有效性處理。以"設(shè)置"為例子說明:voidCMFCApplication3View::OnUpdateSetupcom<CCmdUI*pCmdUI>{//TODO:在此添加命令更新用戶界面處理程序代碼if<!blnOpened> {pCmdUI->Enable<true>; }else {pCmdUI->Enable<false>; }}十、定時(shí)器的設(shè)置添加定時(shí)器菜單按鈕改變自動發(fā)送的定時(shí)時(shí)間:通過類向?qū)砑邮录幚砗瘮?shù):voidCMFCApplication3View::OnDelay<>{//TODO:在此添加命令處理程序代碼 m_delay=rand<>%1000;//隨機(jī)產(chǎn)生一秒以內(nèi)的定時(shí)時(shí)間}添加自動發(fā)送按鈕:添加事件處理程序:voidCMFCApplication3View::OnAutosend<>{//TODO:在此添加命令處理程序代碼 KillTimer<1>;//關(guān)閉之前的定時(shí)器 SetTimer<1,m_delay,NULL>;//以m_delay的定時(shí)時(shí)間打開定時(shí)器}添加WM_TIMER消息響應(yīng)函數(shù):voidCMFCApplication3View::OnTimer<UINT_PTRnIDEvent>{//TODO:在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 Wol.Internal=0; Wol.InternalHigh=0; Wol.Offset=0; Wol.OffsetHigh=0; dataWLen=1;staticinti=0; myWByte[0]=48+i;if<i<10>//自動發(fā)送0-9到接收端 { Wol.hEvent=CreateEve
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教學(xué)儀器知識產(chǎn)權(quán)保護(hù)合同
- 全新轎車購買合同范本
- 2025年度金融貸款居間風(fēng)險(xiǎn)控制合同
- 全國授權(quán)合同范本
- 養(yǎng)鵝合同范例
- 切割支撐合同范本
- 業(yè)主和裝修工長合同范例
- 2025年度花卉市場渠道建設(shè)與拓展合同
- 自愿租賃房屋意向合同范本
- n 1賠償合同范本
- 2024年事業(yè)單位租車服務(wù)滿意度調(diào)查及改進(jìn)協(xié)議3篇
- 婦產(chǎn)科醫(yī)生個(gè)人年終述職報(bào)告課件
- 2025年全國低壓電工作業(yè)證理論考試題庫(含答案)
- JGJ-T188-2009施工現(xiàn)場臨時(shí)建筑物技術(shù)規(guī)范
- 教師資格考試高級中學(xué)美術(shù)學(xué)科知識與教學(xué)能力試題與參考答案(2024年)
- 2025年人教版高考生物一輪復(fù)習(xí):綜合PCR的基因工程問題
- 鋼筋焊接工藝性試驗(yàn)方案
- 2024年福建省新高考生物試卷真題(含答案解析)
- GB/T 44273-2024水力發(fā)電工程運(yùn)行管理規(guī)范
- 醫(yī)院突發(fā)性事件、護(hù)理重點(diǎn)環(huán)節(jié)、醫(yī)院病區(qū)等應(yīng)急預(yù)案
- 2024年政工職稱考試題庫(含答案)
評論
0/150
提交評論