




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、RS232串口通信實(shí)驗(yàn)報(bào)告學(xué)院:電子信息學(xué)院班級(jí):08031102姓名:張澤宇 康啟萌 余建軍學(xué)號(hào):2011301966 2011301950 2011301961時(shí)間:2014年11月13日學(xué)校:西北工業(yè)大學(xué)一實(shí)驗(yàn)題目:設(shè)計(jì)一個(gè)簡單的基于串口通信的信息發(fā)送和接受界面二實(shí)驗(yàn)?zāi)康模?.熟悉并掌握RS232串口標(biāo)準(zhǔn)及原理。2.實(shí)現(xiàn)PC機(jī)通過RS232串口進(jìn)行數(shù)據(jù)的收發(fā)。3.熟悉VC語言編寫程序的環(huán)境,掌握基本的VC語言編程技巧。三實(shí)驗(yàn)內(nèi)容程序代碼:P/ PC1PC2Dlg.cpp : implementation file/#include "stdafx.h"#include
2、 "PC1PC2.h"#include "PC1PC2Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ Cla
3、ssWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDl
4、g)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CPC1PC2Dlg dialogCPC1PC2Dlg:CPC1PC2Dlg(CWnd* pParent /*=NU
5、LL*/): CDialog(CPC1PC2Dlg:IDD, pParent)/AFX_DATA_INIT(CPC1PC2Dlg)m_send = _T("");m_receive = _T("");m_bt = _T("");/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CPC1PC2Dlg:DoDat
6、aExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CPC1PC2Dlg)DDX_Control(pDX, IDC_MSCOMM1, m_Comm);DDX_Text(pDX, IDC_EDIT1, m_send);DDX_Text(pDX, IDC_EDIT2, m_receive);DDX_CBString(pDX, IDC_COMBO1, m_bt);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CPC1PC2Dlg, CDialog)/AFX_MSG_MAP(CPC1PC2Dlg)
7、ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CPC1PC2Dlg message handlersBOOL CPC1PC2Dlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About.&qu
8、ot; menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.
9、IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Se
10、t small icon/ TODO: Add extra initialization herem_Comm.SetCommPort(1); /選擇COM1m_Comm.SetInputMode(1); /輸入方式為二進(jìn)制方式m_Comm.SetRThreshold(1); /參數(shù)1表示每當(dāng)串口接收緩沖區(qū)中有多于或等于1個(gè)字符時(shí)將引發(fā)一個(gè)接收數(shù)據(jù)的OnComm事件/CString str;/str="9600,n,8,1"/m_Comm.SetSettings(str); m_Comm.SetPortOpen(TRUE);/打開串口return TRUE; / retur
11、n TRUE unless you set the focus to a controlvoid CPC1PC2Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the i
12、con. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CPC1PC2Dlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIco
13、n = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor t
14、o display while the user drags/ the minimized window.HCURSOR CPC1PC2Dlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;/把字符通過串口發(fā)送出去void CPC1PC2Dlg:OnButton1() / TODO: Add your control notification handler code hereUpdateData(TRUE); /讀編輯框內(nèi)容if(strlen(m_send)=0) MessageBox("發(fā)送的數(shù)據(jù)不能為空!","提示&qu
15、ot;,MB_OK);elsem_Comm.SetOutput(COleVariant(m_send);Sleep(100);BEGIN_EVENTSINK_MAP(CPC1PC2Dlg, CDialog) /AFX_EVENTSINK_MAP(CPC1PC2Dlg)ON_EVENT(CPC1PC2Dlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnCommMscomm1, VTS_NONE)/AFX_EVENTSINK_MAPEND_EVENTSINK_MAP()void CPC1PC2Dlg:OnOnCommMscomm1() / TODO: Add your co
16、ntrol notification handler code hereVARIANT data;COleSafeArray data2;CByteArray datatemp; CString strtemp,buffer;LONG len,i;BYTE Inbyte2048,temp;UpdateData(TRUE); /讀編輯框內(nèi)容if(m_Comm.GetCommEvent()=2) /事件值為2表示接收緩沖區(qū)內(nèi)有字符 data=m_Comm.GetInput(); /讀緩沖區(qū) data2=data; /VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量 len=data2.G
17、etOneDimSize(); /得到有效數(shù)據(jù)長度if(len>0) for(i=0;i<len;i+) data2.GetElement(&i,Inbyte+i);/轉(zhuǎn)換為BYTE型數(shù)組 for(i=0;i<len;i+) /將數(shù)組轉(zhuǎn)換為Cstring型變量 temp=*(char*)(Inbyte+i); /字符型 strtemp.Format("%c",temp); /將字符送入臨時(shí)變量strtemp存放 buffer+=strtemp; /將字符串送入臨時(shí)變量buffer中存放m_receive=m_receive+buffer+"
18、; "UpdateData(FALSE); /更新編輯框內(nèi)容/MessageBox("gegnxin","提示",MB_OK);void CPC1PC2Dlg:OnButtonSet() / TODO: Add your control notification handler code hereUpdateData(TRUE);CString str;str.Format("%s,n,8,1",m_bt);m_Comm.SetSettings(str); void CPC1PC2Dlg:OnButton2() / TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT2)->SetWindowText(_T("");四實(shí)驗(yàn)過程:(1)將9針RS232串口通信線與PC機(jī)串口連接,并用跳線將RS232串口通信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 園林綠化工程綠化施工團(tuán)隊(duì)協(xié)作與溝通考核試卷
- 制冷空調(diào)設(shè)備銷售與市場(chǎng)分析考核試卷
- 農(nóng)業(yè)會(huì)計(jì)培訓(xùn)課件
- 收車合同范本
- 合伙注冊(cè)公司合同范本
- 勞動(dòng)合同范本簽字
- 佳利租賃合同范本
- 酒店前廳服務(wù)操作流程制度
- 云計(jì)算數(shù)據(jù)中心建設(shè)合同
- 培訓(xùn)課件的獲取方法
- 2025年黑龍江農(nóng)業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測(cè)試題庫及答案1套
- 華潤電力六合馬鞍120兆瓦漁(農(nóng))光互補(bǔ)光伏發(fā)電項(xiàng)目110千伏送出工程報(bào)告表
- 2025年電工特種作業(yè)人員上崗操作證考試全真模擬試題庫及答案(共七套)
- 有創(chuàng)動(dòng)脈血壓監(jiān)測(cè)
- 全國導(dǎo)游基礎(chǔ)知識(shí)-全國導(dǎo)游基礎(chǔ)知識(shí)章節(jié)練習(xí)
- 【安排表】2024-2025學(xué)年下學(xué)期學(xué)校升旗儀式安排表 主題班會(huì)安排表
- 2025年度老舊小區(qū)改造施工委托合同范本
- 2025年安徽中醫(yī)藥高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫含答案解析
- 第七章 力 達(dá)標(biāo)測(cè)試卷(含答案)2024-2025學(xué)年度人教版物理八年級(jí)下冊(cè)
- 2024年濟(jì)南護(hù)理職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2025廣東省國家稅務(wù)局系統(tǒng)事業(yè)單位招聘400人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論