| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1233 人关注过本帖
标题:串口程序debug版正常,release版读不出数据
只看楼主 加入收藏
purplesail
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-8-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
串口程序debug版正常,release版读不出数据
部分代码如下:
void CAisDlg::OnCommAisMscomm()
{
// TODO: 在此处添加消息处理程序代码
//m_Rxdata.Empty();
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len=0,k=0;
BYTE rxdata[20480];//设置BYTE数组
CString strtemp;
float rot=0;
if(m_cSerialCom.get_CommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
m_Rxdata.Empty();
variant_inp=m_cSerialCom.get_Input(); //读缓冲区
safearray_inp=variant_inp;  //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k <len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
}
for(k=0;k <len;k++)            //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k);    //字符型
strtemp.Format(_T("%c"),bt);    //将字符送入临时变量strtemp存放

m_Rxdata+=strtemp;
}

    在release下设计断点,发现len的值不正常,似乎缓冲区数据没有读出来,len=safearray_inp.GetOneDimSize(); 这条语句后,len的值没有改变,但是在debug版本下是正常的,可以读出数据。
    麻烦各位帮帮忙!!!多谢
搜索更多相关主题的帖子: 串口 
2009-08-19 08:13
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:6 
release下中断时,对于局部变量来说,的确不会看到正常的数据,这个不用管它,想知道它的正确数值,使用Log,比如打印到控制台上(printf_s)或是写到文件中,再看是否正常吧。
2009-08-19 18:07
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:6 
release下中断时,对于局部变量来说,的确不会看到正常的数据,这个是编译器的问题吗?

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009-08-24 00:04
最爱北极熊
Rank: 2
等 级:论坛游民
帖 子:2
专家分:11
注 册:2009-8-25
收藏
得分:6 
release版本,没有debug选项,看不了局部变量时常识啊
2009-08-25 19:36
快速回复:串口程序debug版正常,release版读不出数据
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014278 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved