MFC串口调试工具教程

本教程详细介绍了如何在Windows XP环境下,利用VC++6.0开发基于MFC的串口调试软件。从新建MFCAppWizard(exe)项目开始,逐步讲解添加控件、设置控件变量、引入CserialPort类、实现串口通信功能以及处理串口接收数据的函数,直至完成串口打开、关闭和数据发送功能。同时,提到了常见问题及解决办法。
摘要由CSDN通过智能技术生成

MFC串口调试软件教程

一、测试环境:Windows XP,VC++6.0

二、步骤

Step1:打开VC++6.0集成开发环境,新建基于对话框(Dialog based)的MFCAppWizard(exe)应用程序。其它设置默认即可。


Step2:在主对话框中添加需要的控件。如图1,在箭头所指窗口(控件)拖动空间到主对话框。这里串口调试软件只需要红框内所示的控件即可,其他可以根据需要自行添加。右键点击控件 ->选择属性可以自行设置控件显示的文本,例如图1中的“打开”按钮、“端口号”静态文本等。另外,为了增强变量的可读性,建议将每个控件的ID改成有意义的名字。例如,将发送按钮的控件ID改为“IDC_BUTTON_SEND”。



Step3:接下来需要为个别控件添加变量,以便于在程序中读取控件状态或者获得对控件的控制。例如,对“端口号”右边的组合下拉框(Combo)添加变量。右键点击组合框(Combo) ->选择建立类向导,则会出现如图2所示界面。按照图2中1->2->3步骤操作。点击确定出现图3界面。按照图3中1->2步骤操作,确定则成功添加control类型的变量m_ctrlComboComPort。



接下来,依次为接收数据和发送数据旁的编辑框添加Cstring类型的变量m_strEditReceiveMsg和m_strEditSendMsg

Step4:为了将CserialPort类添加到工程中,需要添加“SerialPort.h”和”SerialPort.cpp”文件。将文件添加到工程所在的文件夹中,然后,点击菜单栏上的工程 ->添加到工程 ->文件,选择这两个文件。添加结果如图4所示。

 

Step5:在对话框头文件(这里是“RBT_GZZDlg.h”)添加头文件声明(#include “CserialPort.h”)和类对象声明(CserialPort m_SerialPort)以及变量名声明(BOOLm_bSSerialPortOpened串口打开标志位)。如图5所示。


 Step6:在对话框头文件(本工程是“RBT_GZZDlg.h”)添加串口字符接受消息(WM_COM_RXCHAR)的响应函数声明afx_msg LONG OnCom(WPARAM ch, LPARAM port),并在对话框CPP(本工程是“RBT_GZZDlg.cpp”)文件中进行WM_COM_RXCHAR消息映射和函数的实现代码。如图6所示。


Step7:接下来对“打开”按钮、“关闭”按钮和“发送“按钮添加响应函数。双击”打开“按钮,出现生成函数提示框,点击确定进入函数(本工程是void CRBT_GZZDlg::OnButtonOpen())。该函数主要是实现获取串口号、设置串口通信的参数功能。

类似操作添加void CRBT_GZZDlg::OnButtonClose()和voidCRBT_GZZDlg::OnButtonSend()函数。关闭函数主要就是关闭串口;发送函数先获取编辑框内的数据,然后以字符串或者十六进制格式发送数据,具体由编程决定。本工程发送十六进制,所以添加了Str2Hex函数和HexChar函数对数据进行处理。

如图7、8所示为本工程添加的函数。



需要注意的是”打开“按钮响应函数中从组合框获取串口号(intnPort=m_ctrlComboComPort.GetCurel()+1),所以需要在对话框CPP文件中的初始化函数(BOOL CEx2Dlg::OnInitDialog())中添加如图9所示初始化函数。


Step8:编译 -> 执行。如图10所示,开始执行后,点击”打开“按钮,串口开始接收数据。

 

三、常见问题

1.无法添加控件(cannot add new member)

   解决方法:先把工程关闭,然后删除*.clw文件,重新打开工程,打开ClassWizard(CTRL+W可以打开),输入先前删除的文件的文件名(*.clw)。点击添加按钮(ADD),然后确定。这样便可以添加控件了。

(参考网址:http://m.2cto.com/kf/201212/173233.html)

2.编译没有问题,无法执行(Could not execute:Bad executable format(Win32 error 193))。如图11所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值