vc++mfc串口通信Word下载.docx

上传人:b****6 文档编号:17714944 上传时间:2022-12-08 格式:DOCX 页数:15 大小:74.89KB
下载 相关 举报
vc++mfc串口通信Word下载.docx_第1页
第1页 / 共15页
vc++mfc串口通信Word下载.docx_第2页
第2页 / 共15页
vc++mfc串口通信Word下载.docx_第3页
第3页 / 共15页
vc++mfc串口通信Word下载.docx_第4页
第4页 / 共15页
vc++mfc串口通信Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

vc++mfc串口通信Word下载.docx

《vc++mfc串口通信Word下载.docx》由会员分享,可在线阅读,更多相关《vc++mfc串口通信Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

vc++mfc串口通信Word下载.docx

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

IDD)

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

DoDataExchange(CDataExchange*pDX)

CDialog:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

//CSerilDlgdialog

CSerilDlg:

CSerilDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CSerilDlg:

IDD,pParent)

//{{AFX_DATA_INIT(CSerilDlg)

m_strRXData=_T("

"

);

m_strTXData=_T("

m_TestFlag=_T("

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->

LoadIcon(IDR_MAINFRAME);

voidCSerilDlg:

//{{AFX_DATA_MAP(CSerilDlg)

DDX_Control(pDX,IDC_OPENSERIL,m_Opensril);

DDX_Control(pDX,IDC_COM,m_serilcom);

DDX_Text(pDX,IDC_EDIT_RXDATA,m_strRXData);

DDX_Text(pDX,IDC_EDIT_TXDATA,m_strTXData);

DDX_Control(pDX,IDC_MSCOMM1,m_ctrlComm);

DDX_Text(pDX,IDC_TESTFLAG,m_TestFlag);

BEGIN_MESSAGE_MAP(CSerilDlg,CDialog)

//{{AFX_MSG_MAP(CSerilDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_CLEAR,OnClear)

ON_BN_CLICKED(IDC_CLEARSEND,OnClearsend)

ON_CBN_CLOSEUP(IDC_COM,OnCloseupCom)

ON_BN_CLICKED(IDC_FASONG,OnFasong)

ON_BN_CLICKED(IDC_OPENSERIL,OnOpenseril)

//CSerilDlgmessagehandlers

BOOLCSerilDlg:

OnInitDialog()

OnInitDialog();

//Add"

About..."

menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&

0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<

0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->

AppendMenu(MF_SEPARATOR);

AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'

smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);

//Setbigicon

SetIcon(m_hIcon,FALSE);

//Setsmallicon

//TODO:

Addextrainitializationhere

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

OnSysCommand(UINTnID,LPARAMlParam)

if((nID&

0xFFF0)==IDM_ABOUTBOX)

CAboutDlgdlgAbout;

dlgAbout.DoModal();

else

CDialog:

OnSysCommand(nID,lParam);

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

OnPaint()

if(IsIconic())

CPaintDCdc(this);

//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&

rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

OnPaint();

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCSerilDlg:

OnQueryDragIcon()

return(HCURSOR)m_hIcon;

BEGIN_EVENTSINK_MAP(CSerilDlg,CDialog)

//{{AFX_EVENTSINK_MAP(CSerilDlg)

ON_EVENT(CSerilDlg,IDC_MSCOMM1,1/*OnComm*/,OnComm,VTS_NONE)

//}}AFX_EVENTSINK_MAP

END_EVENTSINK_MAP()

OnComm()

Addyourcontrolnotificationhandlercodehere

VARIANTvariant_inp;

COleSafeArraysafearray_inp;

LONGlen,k;

BYTErxdata[20480],rxtemp[20480]={0},top[20480],down[20480],jm[20480],jm1[20480];

//设置BYTE数组An8-bitintegerthatisnotsigned.

CStringstrtemp,test,test1;

if(m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符

{//CStringrw="

rw"

;

////////以下你可以根据自己的通信协议加入处理代码

variant_inp=m_ctrlComm.GetInput();

//读缓冲区

safearray_inp=variant_inp;

//VARIANT型变量转换为ColeSafeArray型变量

len=safearray_inp.GetOneDimSize();

//得到有效数据长度

for(k=0;

k<

len;

k++)

safearray_inp.GetElement(&

k,rxdata+k);

//转换为BYTE型数组

}

if(rxdata[0]=='

r'

&

rxdata[1]=='

e'

rxdata[2]=='

c'

rxdata[3]=='

i'

rxdata[4]=='

v'

rxdata[5]=='

m_TestFlag="

已被成功接收"

else

m_ctrlComm.SetOutput(COleVariant("

recive"

));

for(k=0;

k<

5;

top[k]=rxdata[k];

for(k=0;

4;

down[k]=rxdata[len-4+k];

if(top[0]=='

b'

&

top[1]=='

top[2]=='

g'

top[3]=='

top[4]=='

n'

down[0]=='

o'

down[1]=='

down[2]=='

down[3]=='

for(k=0;

len-9;

rxtemp[k]=rxdata[k+5];

jm1[k]=(rxtemp[k]-len+9);

len-9;

k++)//将数组转换为Cstring型变量

BYTEbt=*(char*)(jm1+k);

//字符型

strtemp.Format("

%c"

bt);

//将字符送入临时变量strtemp存放

m_strRXData+=strtemp;

}

UpdateData(FALSE);

//更新编辑框内容(主要是接收编辑框中的)

OnFasong()

longsiz,k;

CStringSendAll,sendal;

UpdateData(TRUE);

//读取编辑框内容

siz=strlen(m_strTXData);

charcha[20480];

charcha1[20480];

charcha2[20480];

strcpy(cha,m_strTXData);

for(k=0;

siz;

cha1[k]=cha[k]+siz;

CStringstr(cha1,siz);

SendAll="

begin"

+str+"

over"

m_ctrlComm.SetOutput(COleVariant(SendAll));

//发送数据

数据已发送"

OnOpenseril()

m_ctrlComm.SetCommPort(comseril);

//选择com口

if(m_ctrlComm.GetPortOpen())

{

m_ctrlComm.SetPortOpen(FALSE);

//关闭串口

//AfxMessageBox("

cannotopenserialport"

AfxMessageBox("

串口已关闭"

else

m_ctrlComm.SetPortOpen(TRUE);

//打开串口

串口打开成功"

SetDlgItemText(IDC_OPENSERIL,"

关闭串口"

//显示串口已经关闭

m_ctrlComm.SetSettings("

115200,n,8,1"

//波特率9600,无校验,8个数据位,1个停止位

m_ctrlComm.SetInputMode

(1);

//1:

表示以二进制方式检取数据

m_ctrlComm.SetRThreshold

(1);

//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

m_ctrlComm.SetInputLen(0);

//设置当前接收区数据长度为0

m_ctrlComm.GetInput();

//先预读缓冲区以清除残留数据

//m_TestFlag="

未测试"

OnCloseupCom()

comseril=m_serilcom.GetCurSel();

OnClear()

m_strRXData="

//更新编辑框内容

OnClearsend()

m_strTXData="

}、

Seril.h内代码

//serilDlg.h:

headerfile

//

//{{AFX_INCLUDES()

mscomm.h"

//}}AFX_INCLUDES

#if!

defined(AFX_SERILDLG_H__1B7176B4_DDC7_45B3_B636_2597E461F275__INCLUDED_)

#defineAFX_SERILDLG_H__1B7176B4_DDC7_45B3_B636_2597E461F275__INCLUDED_

#if_MSC_VER>

1000

#pragmaonce

#endif//_MSC_VER>

classCSerilDlg:

//Construction

CSerilDlg(CWnd*pParent=NULL);

//standardconstructor

//{{AFX_DATA(CSerilDlg)

enum{IDD=IDD_SERIL_DIALOG};

CButtonm_Opensril;

CComboBoxm_serilcom;

CStringm_strRXData;

CStringm_strTXData;

CMSCommm_ctrlComm;

CStringm_TestFlag;

//{{AFX_VIRTUAL(CSerilDlg)

HICONm_hIcon;

//Generatedmessagemapfunctions

//{{AFX_MSG(CSerilDlg)

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnClear();

afx_msgvoidOnClearsend();

afx_msgvoidOnCloseupCom();

afx_msgvoidOnFasong();

afx_msgvoidOnComm();

afx_msgvoidOnOpenseril();

DECLARE_EVENTSINK_MAP()

//{{AFX_INSERT_LOCATION}}

//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.

#endif//!

defined(AFX_SERILDLG_H__1B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1