VC编写串口调试助手(含VC6工程源文件)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

纯业余者用VC(MFC)编写串口调试助手

1.序

毕业到现在,转眼就做射频开发10年了,一直从事直放站、干放等通信边缘行业,从低噪放、锁相源、选频、功放到整机,射频就那么点东西,而且越来越集成化,软件无线电是必然趋势。做射频从业面会越来越窄,我知道所有人都会说,当你成为专家的时候,一切就都不是问题,可有几个真正的专家,再者说,射频需要经验的积累,只有实际项目做的越多越广,经验也就积累得越多,并不是一朝一夕能达到的。

前不久突然觉得,我的射频模块控制要是也是自己来编程控制多好啊!那就得学单片机编程,学习上位机编程了,可我都不会啊,要不就先来整整上位机,windows方面的。大学唯一学的编程语言是C语言,可根本不能理解用C做什么,还都还给老师10多年了,这怎么办?从BASIC,C/C++,JAVA,PASCAL搜索了一圈,还是选C++吧,毕竟是C 语言发展而来,用VC环境,身边有可以请教的人。在网上转悠了很久,发现《windows

程序设计》是必看,《MFC Windows程序设计》是学MFC最经典的书籍。OMG,这些书啊,都是上千页的,白天都在上班,哪有时间看哦,只有先下载下来作为参考资料了。

扯远了啊。这也不行那也不行,怎么办呢?干脆硬着头皮上吧,找几个实例照搬,再修修改改加深理解吧。

第一个目标,自己编写个串口调试助手,掌握串口通信编程,这样上位机的编写就有希望了。

好了,目标定下来了。网上下载了个串口调试助手,确定基本功能:

1.自动寻找串口,并自动添加到下拉框中共选择;

2.有波特率、数据位、停止位、校验位的选择设置;

3.串口打开控制按钮;

4.发送、清除按钮;

5.接收是自动实现的;

6.有定时自动发送功能;

7.有传送文件功能;

8.有状态栏显示,指示串口状态,设置参数和发送接收显示。

下面就一步步实现,本人纯业余,只是记录下来这个学习过程,请勿拍砖。

开发平台Visual C++6.0英文版,电脑是i7-2670Q四核8G内存1G独显的笔记本,装的win7 64位旗舰版,因此VC6兼容不是太好,有些小毛病,不过不影响编写。

2.创建MFC项目

File -> New -> Projects选择MFC AppWizard(exe),项目名称commassist 选择OK

选中Dialog based,点击Next> 。

默认选项,点击Next> ,

继续默认选项,点击Next> ,如果选中As a statically linked library,生产的EXE可直接在没装VC的机器上运行。可以在项目中进行更改。

选择第二个CCommassistDlg,点击Finish

点击OK。项目创建完毕,进入项目。

删除界面上确定和取消按钮以及静态文字。

3.创建界面

保存后便可以开始创建界面了。参考界面

仿照设计的界面,具体添加按钮或编辑框等的布局步骤就不用细说了。

4.图标修改

在资源视图中选择Icon右键InsertIcon加入打开和关闭的Icon图标或自行绘制,如下图

IDR_MAINFRAME原为MFC提供的图标,这里我直接改成自己的,生成EXE后将会显示这个图标。下面将帮助页面图标也改为自绘图标。

在打开按钮旁边加入自绘的打开和关闭图标:先加入工具条中的Picture,然后选中右键看属性,并如图将Image选为默认的IDI_ICON_CLOSE。如下图

5.基本设置

下面对各个按钮及编辑框设置进行描述

右键串口对应的Combo Box,ID设置为IDC_COMLIST,Type设置为Drop List,Sort不选择(我系统是WIN7 64位,不选中反而自动排序,至于XP得试试看了,以下的选择相同)。右键波特率对应的Combo Box,ID设置为IDC_BAUD,Type及Sort同上。

右键数据位对应的Combo Box,ID设置为IDC_BDATA,Type及Sort同上。

右键停止位对应的Combo Box,ID设置为IDC_BSTOP,Type及Sort同上。

右键校验位对应的Combo Box,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。

接收区的十六进制显示的Check Box复选框ID设置为IDC_CHECK_HEXRX。

发送区的十六进制发送的Check Box复选框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文件,定义为comm.cpp和comm.h。在comm.cpp中编写串口创建、打开、关闭以及串口监听线程(用于自动接收)的代码,同时加入进制转换或显示的函数,这些在comm.h文件中申明,在主对话框中包含comm.h即可。

想修改按钮样式,在网上搜了一圈,结果不轻松,最后确定创建新类来实现。

6.2. 创建自定义按钮类:

View -> Class Wizard选择Add Class -> New,名字MyButton,基类选择CButton。

在头文件MyButton.h 中加入以下变量和函数定义:

private:

int m_Style; //按钮形状(0-正常,1-当前,2-按下,3-锁定)

bool b_InRect; //鼠标进入标志

CString m_strText; //按钮文字

COLORREF m_ForeColor;//文本颜色

COLORREF m_MouseInColor;//鼠标进入时文本颜色

COLORREF m_BackColor;//背景颜色

COLORREF m_LockForeColor; //锁定按钮的文字颜色

CRect m_ButRect; //按钮尺寸

CFont* p_Font; //字体

void DrawButton(CDC *pDC); //画正常按钮

// 接口函数

public:

MyButton();

void SetText(CString str); //设置文字

void SetForeColor(COLORREF color); //设置文本颜色

void SetBkColor(COLORREF color); //设置背景颜色

void SetTextFont(int FontHight,LPCTSTR FontName); //设置字体

相关文档
最新文档