面向对象实训报告.docx
- 文档编号:15818542
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:13
- 大小:145.28KB
面向对象实训报告.docx
《面向对象实训报告.docx》由会员分享,可在线阅读,更多相关《面向对象实训报告.docx(13页珍藏版)》请在冰点文库上搜索。
面向对象实训报告
面向对象实训报告
学号xxxxxxxx
姓名xxxx
指导教师:
年月日
串行通信上位机程序
一:
基本任务
设计一个基于对话框的计算器串行通信上位机程序,实现常用串行通信。
二:
性能、指标、要求:
1.性能:
基于VC++6.0的MFC编辑框架的串口通信,要求要求独立设计计算器所需的所有按钮,能够实现波特率可变,能够实现串口端口可选,能够实现发送与接收数据的实时显示等基本功能。
2.指标:
通过基于VC++6.0的MFC编辑框架,按照实训要求设计出简单的能完成串口通行所需的按钮功能,能够实现波特率可变,串口端口可选,能实现发送与接收数据的实时显示的基本功能。
3.要求:
(1)按照题目要求独立设计计算器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。
(2)能够实现波特率可变。
(3)能够实现串口端口可选。
(4)能够实现发送与接收数据的实时显示。
三:
方案设计:
1.方案论证:
通过Mscomm控件实现串口间的通信,Mscomm控件提供了一些修改属性的函数,可以对波特率,串口属性进行修改。
并能与AccessPort.exe进行数据发送和接收。
2.工作原理:
(1)目的:
通过设计的基于对话框的计算器串口通信上位机程序,实现常用
串口通信,能够完成发送和接收,及波特率可变,串口端口可选。
(2)波特率的可变和串口端口的可选的分析:
通过VC++6.0的MFC中的组合框来设计波特率及串口端口的可选,在程序中用switch语句来实现这两个功能的操作。
波特率的数据为:
2400,4800,9600,115200;串口的端口的数据为:
COM1,COM2,COM3,COM4.设计好它们的属性,在程序中就可以对它们进行操作了。
(3)发送及接收的文本框的分析:
自己设计的串口通信,在发送的文本框中写入内容,通过发送按钮可以把这些内容发送到AccessPort.exe中,并能显示发送的内容。
在AccessPort.exe中写入数据并发送,能够在自己设计的串口中的接收文本框中接收到数据。
(4)发送按钮的分析:
按下发送按钮,就能把自己设计的串口接收文本框的内容发送到AccessPort.exe中,在AccessPort.exe中,能显示接收到的内容。
(5)打开串口按钮的分析:
按下打开串口按钮,就能打开相应的串口端口。
(6)整体步骤:
四:
软件设计:
按下列图所示建立一个基于对话框的MFC程序
点击完成,得到下面的对话框:
这样就得到了下图所示的界面
右键点击class1的对话框界面,在弹出的菜单中选择属性,打开下面的属性对话框:
建立下图所示的对话框控件:
各控件属性如下:
第一个文本框:
第二个文本框:
串口的属性:
波特率的属性:
五:
制作与调试过程
1.打开串口按钮的程序:
voidCClass1Dlg:
:
OnBtnPortopen()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
intnIndex,nIndex2;
intcom;
nIndex=m_combox1.GetCurSel();//获得串口下拉列表当前值
nIndex2=m_combox2.GetCurSel();//获得波特率下拉列表当前值
switch(nIndex)//串口的选择
{
case0:
com=1;
break;
case1:
com=2;
break;
case2:
com=3;
break;
case3:
com=4;
break;
}
m_msComm.SetCommPort(com);//获取串口
m_msComm.SetInBufferSize(1024);//设置输入缓冲区的大小
m_msComm.SetOutBufferSize(512);//设置输出缓冲区的大小
if(!
m_msComm.GetPortOpen())//判断串口是否打开
{
m_msComm.SetPortOpen(TRUE);
}
switch(nIndex)//波特率的选择
{
case0:
m_msComm.SetSettings("2400,N,8,1");
break;
case1:
m_msComm.SetSettings("4800,N,8,1");
break;
case2:
m_msComm.SetSettings("9600,N,8,1");
break;
case3:
m_msComm.SetSettings("115200,N,8,1");
break;
}
m_msComm.SetInputMode
(1);//设置二进制的输入方式
m_msComm.SetRThreshold
(1);//判断缓冲区是否有数据,>1有数据
m_msComm.SetInputLen(0);//发送缓冲区清空
}
2.发送按钮的程序:
voidCClass1Dlg:
:
OnBtnSend()//发送数据
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);//更新编辑框的内容
m_msComm.SetOutput(COleVariant(m_strTx));
}
2.控件的程序:
voidCClass1Dlg:
:
OnCommMscomm()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
VARIANTvariant_inp;
COleSafeArraysafearray_inp;
longlen;
longi;
charrxData;
if(2==m_msComm.GetCommEvent())
{
variant_inp=m_msComm.GetInput();//获得接受到的数据,存在variant_inp变量中
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();//获得接受数据的长度
for(i=0;i { safearray_inp.GetElement(&i,&rxData); m_strRx+=rxData; } UpdateData(FALSE); } } 六: 实训心得体会 这些实训培养我们的综合运用所学知识,来发现和提出分析以及解决实际问题,这是一个锻炼实践能力的重要环节,是对我们所学习的C++应用于实践程序设计中,来实现各种不同的功能,同时也是老师对我们实际学习能力的具体训练以及考察我们动手编程能力的过程。 因为第一次接触基于VC++6.0的MFC编辑框架的串口通信,刚接到题目的时候,第一感觉就是愣住了,完全不知道怎么用基于VC++6.0的MFC来设计串口通信,老师在课堂上演示了一遍,可是太快了,完全记不了,老师对我们说,这是你们第一次接触,因为想培养你们的自学能力,最开始不知道如何下手,在课后我找了关于MFC,串口通信等资料查阅,按照资料书的描述及实例,了解VC++6.0的MFC的操作步骤,了解程序设计的总体过程及其工作原理。 然后参考别人程序,再来设计自己的功能。 在查阅资料的过程中不断的提升自己的知识,心里忍不住有一种愉快的心情,在编程中,难免遇到几处卡住的地方,而且自己纠结了半天,但经过老师的指导,最终把问题解决了,在此谢过我的指导老师。 经过本次实训,我基本懂得了VC++6.0的MFC的操作步骤及其设计,还灵活运用自己所掌握的知识,同时通过自己动手,思考,来发现自己的不足,并及时改正。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)