标题:串口程序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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-283166-1-1.html




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

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