2 a274767172 a274767172 于 2016.04.06 19:48 提问

MFC 在vs,debug下运行,容易中断。跟串口数据有关。

MFC在DEBUG下运行,程序读取的串口数据容易发生错误,如漏掉某些字符等。

这样,在串口数据提取时,容易提取到错误信息。

比如:
发送: $msm,1,2,3
接收: $msm,12s,3

提取第二个参数,如:int a = 第二个参数,
在后续的操作:DATA[a] = xxx时

由于a数据不正确,使得数组溢出,程序中断。

上述是在DEBUG下出现的问题。
但是,如果直接运行编译后的exe文件,上述状况则没有发生。

程序中对串口的操作方式是:
串口数据存入char[]缓存区,再转换为CString型进行数据处理。后续处理都采用CString型。

现在的问题是,不知道为什么在BEBUG下,程序容易崩溃,直接运行,则没有崩溃的情况。

1个回答

VisualEleven
VisualEleven   Ds   Rxr 2016.04.14 17:35

你不会先判断一下a的值是否合法吗?如果不合法就不执行后面的操作即可。

a274767172
a274767172 本来以为是其他问题,后来确实是接受a会出错。就是这样改了,谢了。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC串口通信设置及发送、中断接收程序
前一段做了个串口通信小软件,就是现实利用上位机软件通过串口通信对下位机(单片机)通信,校时LED点阵万年历,省去按键调节的麻烦,
vs2010 MFC串口调试踩坑集合
1.link失败错误LNK1123查看计算机中是否有多个cvtres.exe,保留版本较高的一个,另一个重命名2.LPCSTR与char*转换出现问题property属性页->General->Character set改成多字节字符集3.关于ON_MESSAGEON_MESSAGE是MFC里面的一个自定义消息映射宏,它的作用是绑定一个自定义的消息和该消息的响应函数。 用户自定义消息通常定义在WM_
关于使用VS实现MFC串口通信
本人小白,由于项目需要,研究了几天关于MFC串口通信,以下是这几天的心得。 串口通信主要有以下几种方法实现: **1、使用微软的官方ActiveX控件MSCOMM. 2、使用第三方串口通信类 CnComm. 3、自己写串口通信类.**第一种方法是最常使用的,网上的实例、源码也很多。对其实现过程不再赘述。源码参见VS2013下MFC使用MSCOMM实现串口通信编程 但是在运行程序后会发现,发
VS2015串口通信编程(MFC)笔记
3. 选用MSCOMM控件方式进行串口通信 (1). 只能打开不大于COM16的串口;该控件不能在其他线程中直接被调用,但可以将其操作封装到函数中被间接使用。 (2). 接收:MSCOMM控件中断事件,用于接收下位机消息。 (3). 发送:另外创建一个子线程用于控制发送流程。 m_pThread = AfxBeginThread(UpgradeThread, (LPVOID)(this), THREAD_PRIORITY_BELOW_NORMAL, 256 * 1024);//stack size = 25
VS2010 MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错
VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc、CFileView等类,一进去就编译运行(就是最初自动生成的项目),编译通过,可运行时直接弹出错误框: Debug Assertion Failed!
串口调试+VS2015
/*"Serial_Vs.h"*/ #include<iostream> #include<TCHAR.H> #include<windows.h> #include<string.h> /* #include "opencv2/objdetect.hpp" #include "opencv2/videoio.hpp" #include "opencv2/highgui.hpp" #i
vs2010用mfc 自动获取串口列表并且实现收发数据
代码可以在vs2010下编译通过,还包含注册文件mscomm32.ocx,可以实现自动获取串口列表并且完成数据的收发
VS2010 MFC做了一个简单的串口通信上位机,那么问题来了:生成的exe不能再同学的电脑上运行
RT, 已经使用了静态库,Debug下运行库选择了MTD,Release下选择了MT,但是Debug生成的exe同学拿去打开的话会有图示错误 "Debug Assertion Failed! File:f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp line:925 For information on how your
keil C51使用串口时程序跑死的问题
在使用STC51单片机的串口时,有时候会进入一种很奇怪的情况,就是程序进入了一下子跑死了,初始化代码如下: void UsartConfiguration(unsigned int bps) { SCON = 0X50; //设置为工作方式1 10位异步收发器 TL2 = RCAP2L = bps; //set auto reload value TH2 = RCAP2H = bps>
写MFC程序ASSERT(IsWindow(pTemp->m_hWnd))报错
<br />这两天搞一个协议转发服务,没想到被一个问题难住:调试时报如下错误<br />Debug Assertion Failed<br />f:/sp/vctools/vc7libs/ship/atlmfc/src/mfc/occcont.cpp(950)<br />950行代码是:ASSERT(IsWindow(pTemp->m_hWnd)); <br />硬盘压根没F盘,竟然错到了f盘去了,一开始在谷歌使用了错误的关键词搜索,扫出一大堆英文网站,看了半天没看明白,以为是运行时库的问题,我使用的是vs