VCMFC编写串口调试助手.docx
上传人:王子****青蛙 上传时间:2024-09-13 格式:DOCX 页数:18 大小:1.4MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

VCMFC编写串口调试助手.docx

VCMFC编写串口调试助手.docx

预览

免费试读已结束,剩余 8 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

序确定基本功能:1.自动寻找串口,并自动添加到下拉框中共选择;2.有波特率、数据位、停止位、校验位的选择设置;3.串口打开控制按钮;4.发送、清除按钮;5.接收是自动实现的;6.有定时自动发送功能;7.有传送文件功能;8.有状态栏显示,指示串口状态,设置参数和发送接收显示。下面就一步步实现,本人纯业余,只是记录下来这个学习过程,请勿拍砖。开发平台VisualC++6.0英文版,电脑是i7-2670Q四核8G内存1G独显的笔记本,装的win764位旗舰版,因此VC6兼容不是太好,有些小毛病,不过不影响编写。创建MFC项目File->New->Projects选择MFCAppWizard(exe),项目名称commassist选择OK选中Dialogbased,点击Next>。默认选项,点击Next>,继续默认选项,点击Next>,如果选中Asastaticallylinkedlibrary,生产的EXE可直接在没装VC的机器上运行。可以在项目中进行更改。选择第二个CCommassistDlg,点击Finish点击OK。项目创建完毕,进入项目。删除界面上确定和取消按钮以及静态文字。创建界面保存后便可以开始创建界面了。参考界面仿照设计的界面,具体添加按钮或编辑框等的布局步骤就不用细说了。图标修改在资源视图中选择Icon右键InsertIcon加入打开和关闭的Icon图标或自行绘制,如下图IDR_MAINFRAME原为MFC提供的图标,这里我直接改成自己的,生成EXE后将会显示这个图标。下面将帮助页面图标也改为自绘图标。在打开按钮旁边加入自绘的打开和关闭图标:先加入工具条中的Picture,然后选中右键看属性,并如图将Image选为默认的IDI_ICON_CLOSE。如下图基本设置下面对各个按钮及编辑框设置进行描述右键串口对应的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。开始写代码基本思路:因为串口通信部分代码我可能用在以后的单片机上位机上,因此考虑单独形成CPP和H文件,定义为comm.cpp和comm.h。在comm.cpp中编写串口创建、打开、关闭以及串口监听线程(用于自动接收)的代码,同时加入进制转换或显示的函数,这些在comm.h文件中申明,在主对话框中包含comm.h即可。想修改按钮样式,在网上搜了一圈,结果不轻松,最后确定创建新类来实现。创建自定义按钮类:View->ClassWizard选择AddClass->New,名字MyButton,基类选择CButton。在头文件MyButton.h中加入以下变量和函数定义:private:intm_Style;//按钮形状(0-正常,1-当前,2-按下,3-锁定)boolb_InRect;//鼠标进入标志CStringm_strText;//按钮文字COLORREFm_ForeColor;//文本颜色COLORREFm_MouseInColor;//鼠标进