vs2010 MFC串口调试踩坑集合

来源:互联网 发布:网络考试系统开题报告 编辑:程序博客网 时间:2024/06/02 04:48

1.link失败错误LNK1123

查看计算机中是否有多个cvtres.exe,保留版本较高的一个,另一个重命名

2.LPCSTR与char*转换出现问题

property属性页->General->Character set改成多字节字符集

3.关于ON_MESSAGE

ON_MESSAGE是MFC里面的一个自定义消息映射宏,它的作用是绑定一个自定义的消息和该消息的响应函数。

用户自定义消息通常定义在WM_USER(0x0400)至0x7FFF范围内,用户定义的任何消息都不是正规的windows窗口消息WM_MESSAGE。用户自定义消息必须明确地在程序中用ON_MESSAGE宏来声明,从而绑定一个消息响应函数

1.定义消息:

在CCDlg类的头文件中加入如下代码:

#define WM_CUSTOMIZE WM_USER+1

头文件中加入Customize的声明:

afx_msg LRESULT Customize(WPARAM wParam, LPARAM lParam);

2.cpp文件中加入消息的注册

ON_MESSAGE(WM_CUSTOMIZE, Customize)

3.加入消息响应函数实现

在CCDlg类的实现文件中加入消息响应函数的实现部分,代码如下:

void CCDlg::Customize(WPARAM wParam, LPARAM lParam) { CString strTittle; strTittle.Format("自定义消息参数:x=%d,y=%d",wParam,lParam); SetWindowText(strTittle); }

4.串口控件

在2008以后的VS版本中不再集成这个控件,可以自行下载后使用,但只能用于win32.

5.关于控件的删除

在dialog中删除带有变量和响应的控件并不能删掉相关的程序,需要手动删除。这些内容一般包括h文件中的声明,c文件里的初始化和链接,有些还包括响应的函数。

可先删除h文件中相关的内容,然后通过编译找到其他错误的位置进行修改。

6.基于类的串口调试

基于类的串口调试相对控件较为复杂。大致的流程如下:

通过某个响应函数启动monitor,即调用SerialPort类对应的方法StartMonitoring()

m_Port.StartMonitoring();

此方法开启了串口线程(CommThread),串口开始读取数据。

在“BEGIN_MESSAGE_MAP”中将输入缓存区读入字符的事件与读取串口并处理信息的函数关联在一起,每当读入一个字符就执行该函数,即可实现串口的读取功能。

ON_MESSAGE(WM_COMM_RXCHAR, OnCommunication)

0 0