VC6.0MFC串口通信编写全过程

上传人:大米 文档编号:505622215 上传时间:2022-09-06 格式:DOC 页数:17 大小:504.50KB
返回 下载 相关 举报
VC6.0MFC串口通信编写全过程_第1页
第1页 / 共17页
VC6.0MFC串口通信编写全过程_第2页
第2页 / 共17页
VC6.0MFC串口通信编写全过程_第3页
第3页 / 共17页
VC6.0MFC串口通信编写全过程_第4页
第4页 / 共17页
VC6.0MFC串口通信编写全过程_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《VC6.0MFC串口通信编写全过程》由会员分享,可在线阅读,更多相关《VC6.0MFC串口通信编写全过程(17页珍藏版)》请在金锄头文库上搜索。

1、其于MFC的串口调试助手编辑过程一、新建打开VC6.0文件一 新建一匸程一 MFC AppWiaid(exe) 位置(选择保存 工程位置1工程名称(输入工程名XXXX) 确定 T选择基本对话框f 下一 步 一下一步 f 下一步一选择(CXXXXDlgl成 f 确定 一在生成的基 本对话框内将不需要按钮及提示框(自动生成的“确定”“取消”及提示框)删除或修 改使用,至此基本框架完成如下图:基本框架此控件(标志) 是下面步 骤添加进 来的串丨I 控件二、往生成的基本框架中添加控件1、因为控件列表框内没有串II通信用到的通信控件,所以要先添加到控件列表框内再 将控件添加到基本框内使用,步骤如下:菜单

2、栏一匸程一 添加到工程一 Components and controls. RegisteredActiveX Controls 选择 Microsoft Cominuiucations Control, version 6.0 ”一Insert 确定OK 关闭此子窗口完成添加操作标志如上图所示。2、将刚才添加添加到控件列表框内的串I I控件添加到基本框架内点击控件列表框内的串II控件,此时光标变为“十”形,在基本框架内随意划取一矩 形区域,即可以添加串II控件,不需要修改此控件的人小及位置,因为程编译运行后 此控件是看不到的,步骤结果如下图:3、继续往基本框架内添加用于编辑发送数据的输入编辑

3、框及输出编辑框,同理选择控 件列表框内的“编辑框控件”,以相同的操作即可添加两个编辑窗11及一个按纽控件如 下图所示:选择其中任 意一个作为 输入编辑框 及输出编辑这两个窗11需要修改人小及位置,因为程序运行后将会显示而串11通信控件则不显示, 上图是运行后的效果。4、对以上四个控件编程步骤如下:a、右击串丨1通信控件 一 建立类向导 一 lember vaiiables Control IDS中选 择 IDC_MSCOMM1 add variable. Member variable name 中输入控件变量名 m_ctrlComm (变量名可以随意选取,但程序中应与所取变量名一致)f 0L

4、确 定b、右击编辑框、属性.常规、ID:中输入ID号,此编辑框用于接收显示数据的其ID 号为IDC_EDIT_RXDATA (可以随意选取,但程序中应与所取ID号一致),再在此窗 II的样式中勾选多行,同时将“自动水平滚动(T)”勾选去掉,再勾选“垂直滚动 (V)”,此勾选操作是用于垂直多行显示的,按回车后即可输入;同理右击另一编辑框 输入ED号为IDC_EDIT_TXDATA此编辑框用于编辑发送数据的,同样也选上用于垂直 多行显示,发送框可以不用垂直多行显示;再为按钮控件添加ED号,为 IDC_BUTTON_MANUALSEND,并将标题中的“Buttonl”改为“发送”,功能是按一 次就把

5、发送编辑框中的内容发送一次。C、为以上两个编辑框添加变量,与串门通信控件一样添加,为IDC_EDIT_RXDATA添 力口 CString 型变量 m_stRXD8ta ;为 IDC_EDIT_TXDATA 添加 CString 型变量 m_strTXDatao说明:m_stRXD8t8和m_stTXD8ta分别用来放入接收和发送的字符 数据。D、添加串I I爭件消息处理函数OnComm()打开ClassWizardMessage Maps,选择 IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm,(好 记而己)OK。这个函数是用来处理串I I消息爭件的,如

6、每当串丨I接收到数据,就会产生一个串II接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OiiComm()函数加入相应的处理代码就能实现自已想要的功能了。在函数中加入如下代码:提示1:此句以下 才是我们要添加的语句代码段1:void CSconmiTestDlg: :OnConunQ/ TODO: Add vour control notification handler code hereVARIANT vanancmp;/定义_个 VARIANT 类对彖COleSafeAiray safeairay_inp;/定义一个 COleSafeAirav 对象LONG lenj

7、c;BYTE rxdata2048;设置 BYTE 数组 AN 8mtteilhat is not signed.CStiiiig strtemp;if (nvctilConun.GetCoiiuiiEvent()=2)/$件值为2表示接收缓冲区内有数据/以下你可以根据自己的通信协议加入处理代码 variaiit_mp=m_ctrlCoiniii.GetIiiput();读 缓冲区 safeanay_mp=vaiiant_mp;/AARIANT 型变量转换为 ColeSafeAiiav 型变量 len=safeariay_inp. GetOneDunS ize();for(k=0;klen;k

8、+)safearraymp.GetElement(&kj-xdata+k)换为 BYTE 型数组 提示2:此三句是 下面用于是否是十 六进制发送的,暂 时可以不用理会for(k=0;klen;k+)/数组转换为 Cstring 型变量BYTE bt=*(char*)(ixdata+k);if(m_ctdH亡xSendGetCheck()如果是HEX显示则转为16进制/ strtemp.Foimat(H%02x役bt); /将16进制数送入临时变量strtemp存放 / elsestrtempFonnatC,%c,bt);/将字符送入临时变量stnemp存放m_sti RXData+=strte

9、mp;/加入接收编辑框对应字符串UpdateData(FALSE);/更新编辑框内容(主要是接收编辑框中的)到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串I I,但运行程序不 应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开VC6对照着做一步写一 行的,运行试试。没错吧?那么做下一步:E、打开串丨1和设置串II参数 你可以在你需要的时候打开串II,例如在程序中做一个 开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的 CSCommlestDIg:OnInitDialog()打开串口,加入如下代码:代码段2:BOOL CSConunTestDlg: :OiiIiii

10、tDialog()CDialog: :OiiIiutDialogQ;/Add HAbout.M menu item to system m亡mi./ LDM_ABOUTBOX must be in the system coimnand range.ASSERT(IDM_ABOUTBOX & OxFFFO) = EDM.ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu (MF.SEPARAT OR);pSysMenu-AppendMenu(MF_STRING. IDM_ABOUTBOX, stiAboutMenu);提示3:此句以下丄 是我们要添加的语 句提Z

11、5 4:此5 句是我们下 面要用到的 暂时可以不 用理会/ Set the icon for tliis dialog The framework does tliis automatically / when the applicatioiVs main window is not a dialog Setlcon(m_lilcon, TRUE);/ Set big iconSetlcon(m_lilcon5 FALSE); / Set small icon / TODO: Add extra initialization herem_ComboBox.SetCurSel(0)y/打开软件时

12、串I 1选择框默认显示COM1 m_BaudRate_M.SetCurSel(O)y/打开软件时波特率选择框默认显示9600 m_Date_Select_M.SetCuiSel(O);/打开软件时数据位选择框默认显示8 m_StopBit_M. SetCurSel(O)y/JT开软件时停止位选择框默认显示1 m_.PaiityCheck_M.SetCuiSel(O)/打开软件时奇偶校验选择框默认显示无校验N下面if语句用于打开默认串11严*/if(m_ctilCoiniii.GetPonOpen()m_ctilConmi.SetPoitOpen(FALSE);/关闭串 I Im_ctrlCon

13、iin.SetConmiPoil( 1);/打开软件时默认使用 COMI 串 I I iq! m_ctrlC onun.GetPoitOpen()m_ctilConmi.SetPoitOpen(TRUE);/打开串 I IelseAfxMessageBoxCcaimot open serial port); /*/m_ctilConun.SetSettmgs(9600.n,S, 1 );/打开软件时端I丨设置默认为波特率9600,无校 验位,8位数据,1位停止位m_ctilConun.SetInputMode(l); /I:表示以二进制方式检取数据 m_ctilConun.SetRTluesh

14、old( 1); 参数1表示每当串I I接收缓冲区中有多于或等于1个 字符时将引发一个接收数据的OnComm事件m_ctilConun.SetlnputLen(O); /设置当前接收区数据长度为0m_cti lConun. Getlnput();/先预读缓冲区以清除残留数据return TRUE; / leturn TRUE unless you set the focus to a controlF、发送数据,先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开 ClassWizard-Message Maps,选择 IDC_BUTTON_MANUALSEND,双击 BN_CLICKED 添加OnButtonManualsend()函数,并在函数中添加如下代码:代码段3:void CSCommTestDlg:OnButtonManualsend()/ TODO: Add your control notification handler code hereUpdateData(TRUE); 读取编辑框内容

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号