VCMFC编写串口调试助手.docx
- 文档编号:1171156
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:7
- 大小:203.02KB
VCMFC编写串口调试助手.docx
《VCMFC编写串口调试助手.docx》由会员分享,可在线阅读,更多相关《VCMFC编写串口调试助手.docx(7页珍藏版)》请在冰豆网上搜索。
VCMFC编写串口调试助手
集团标准化工作小组[Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]
VCMFC编写串口调试助手
VC(MFC)编写串口调试助手
1.序
确定基本功能:
1.自动寻找串口,并自动添加到下拉框中共选择;
2.有波特率、数据位、停止位、校验位的选择设置;
3.串口打开控制按钮;
4.发送、清除按钮;
5.接收是自动实现的;
6.有定时自动发送功能;
7.有传送文件功能;
8.有状态栏显示,指示串口状态,设置参数和发送接收显示。
下面就一步步实现,本人纯业余,只是记录下来这个学习过程,请勿拍砖。
开发平台VisualC++英文版,电脑是i7-2670Q四核8G内存1G独显的笔记本,装的win764位旗舰版,因此VC6兼容不是太好,有些小毛病,不过不影响编写。
2.创建MFC项目
File->New->Projects选择MFCAppWizard(exe),项目名称commassist
选择OK
选中Dialogbased,点击Next>。
默认选项,点击Next>,
继续默认选项,点击Next>,如果选中Asastaticallylinkedlibrary,生产的EXE可直接在没装VC的机器上运行。
可以在项目中进行更改。
选择第二个CCommassistDlg,点击Finish
点击OK。
项目创建完毕,进入项目。
删除界面上确定和取消按钮以及静态文字。
3.创建界面
保存后便可以开始创建界面了。
参考界面
仿照设计的界面,具体添加按钮或编辑框等的布局步骤就不用细说了。
4.图标修改
在资源视图中选择Icon右键InsertIcon加入打开和关闭的Icon图标或自行绘制,如下图
IDR_MAINFRAME原为MFC提供的图标,这里我直接改成自己的,生成EXE后将会显示这个图标。
下面将帮助页面图标也改为自绘图标。
在打开按钮旁边加入自绘的打开和关闭图标:
先加入工具条中的Picture,然后选中右键看属性,并如图将Image选为默认的IDI_ICON_CLOSE。
如下图
5.基本设置
下面对各个按钮及编辑框设置进行描述
右键串口对应的ComboBox,ID设置为IDC_COMLIST,Type设置为DropList,Sort不选择(我系统是WIN764位,不选中反而自动排序,至于XP得试试看了,以下的选择相同)。
右键波特率对应的ComboBox,ID设置为IDC_BAUD,Type及Sort同上。
右键数据位对应的ComboBox,ID设置为IDC_BDATA,Type及Sort同上。
右键停止位对应的ComboBox,ID设置为IDC_BSTOP,Type及Sort同上。
右键校验位对应的ComboBox,ID设置为IDC_CAL,Type及Sort同上。
每个下拉框要点击右边的小箭头,然后将其拉长,不然显示不出内容。
接收EDIT框ID设置为IDC_EDIT_RX。
发送EDIT框ID设置为IDC_EDIT_TX。
自动发送时间间隔的EDIT框ID设置为IDC_EDIT_TIMER。
选择文件后面的EDIT框ID设置为IDC_EDIT_FILEPATH。
接收区的十六进制显示的CheckBox复选框ID设置为IDC_CHECK_HEXRX。
发送区的十六进制发送的CheckBox复选框ID设置为IDC_CHECK_HEXTX。
按钮“打开串口”ID设置为IDC_COMCONTROL。
按钮“清空显示区”ID设置为IDC_BTN_CLRRX。
按钮“手动发送”ID设置为IDC_BTN_HANDSEND。
按钮“清空发送区”ID设置为IDC_BTN_CLRTX。
按钮“自动发送”ID设置为IDC_BTN_AUTOSEND。
按钮“选择文件”ID设置为IDC_BTN_SELCTFILE。
按钮“发送文件”ID设置为IDC_BTN_SENDFILE。
6.开始写代码
6.1.基本思路:
因为串口通信部分代码我可能用在以后的单片机上位机上,因此考虑单独形成CPP和H文件,定义为和。
在中编写串口创建、打开、关闭以及串口监听线程(用于自动接收)的代码,同时加入进制转换或显示的函数,这些在文件中申明,在主对话框中包含即可。
想修改按钮样式,在网上搜了一圈,结果不轻松,最后确定创建新类来实现。
6.2.创建自定义按钮类:
View->ClassWizard选择AddClass->New,名字MyButton,基类选择CButton。
在头文件中加入以下变量和函数定义:
private:
intm_Style;xt)|*.txt||");
if()==IDOK)//打开文件对话框
m_strFilePath=();//得到文件路经
elsereturn;
(m_strFilePath,CFile:
:
modeRead|CFile:
:
typeBinary);//打开这个文件
()),());//读文件
();
if()>=2048)
{
AfxMessageBox("文件的长度超过2k字节!
",MB_ICONINFORMATION);
}
else
{
m_strOut+=m_strFile;//文件内容加入发送框变量内
UpdateData(false);//更新发送框内容
}
();
}
双击“发送文件”按钮,编辑代码如下:
voidCCommassistDlg:
:
OnBtnSendfile()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
COMSTATstate;
DWORDerrors;
CStringsTemp;
intiTemp;
ClearCommError(hCom,&errors,&state);//清除串口错误、得到当前状态
iTemp=();//写入串口的字符串长度,由EDIT控件内字符串数决定
iTemp+=iTemp;
OnBtnHandsend();//调用发送函数
GetDlgItem(IDC_EDIT_FILEPATH)->SetDlgItemText(IDC_EDIT_FILEPATH,"");
UpdateData(false);//更新发送框内容;
}
最后修改一下程序框的背景色或编辑框的文字颜色等,需要用到OnCtlColor函数,用ClassWizard添加函数
编辑代码如下:
HBRUSHCCommassistDlg:
:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
{
HBRUSHhbr=CDialog:
:
OnCtlColor(pDC,pWnd,nCtlColor);
//TODO:
ChangeanyattributesoftheDChere
if(nCtlColor==CTLCOLOR_DLG)//所有对话框
{
HBRUSHbrush=CreateSolidBrush(RGB(220,250,250));
returnbrush;
}
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(50,50,50));
//pDC->SetBkColor(RGB(128,128,128));//设置文本背景色
//pDC->SetTextColor(RGB(55,55,66));
pDC->SetBkMode(TRANSPARENT);//设置背景透明
}
switch(pWnd->GetDlgCtrlID())
{//针对ID为IDC_CTL1、IDC_CTL2和IDC_CTL3的控件进行同样的设置
caseIDC_EDIT_RX:
{
pDC->SetBkMode(TRANSPARENT);//背景色透明
pDC->SetTextColor(RGB(250,0,0));//设置字体颜色为红色
}
break;
caseIDC_EDIT_TX:
{
pDC->SetBkMode(TRANSPARENT);//背景色透明
pDC->SetTextColor(RGB(0,0,255));//设置字体颜色为红色
}
}
//TODO:
Returnadifferentbrushifthedefaultisnotdesired
returnhbr;
}
至此,大功告成。
6.3.运行效果果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VCMFC 编写 串口 调试 助手
![提示](https://static.bdocx.com/images/bang_tan.gif)