24小时热门版块排行榜    

CyRhmU.jpeg
查看: 459  |  回复: 3
当前主题已经存档。

li343

至尊木虫 (职业作家)

[交流] 【求助】Debug Assertion Failed! 串口数采程序求助【已完结】

一个串口数据采集程序,编译通过,运行出错,错误提示:   
      Debug   Assertion   Failed!   
      Program:.....
      File: olevar.cpp   
      Line:2553   

      For   information   on   how   your   program   can   cause   an   assertion   failure,see....   


出错程序代码如下:
CODE:
double CHuoqvjiaoduDlg::Val(CString a)
{
    int number=0;
    CString* p;
    int sum=0;

    for(p=&a;*p!='\0';p++)
    {
        if(*p>='0'&&*p<='9')
        {
            if(number==0)
            {
                sum=(atoi(*p)-48);
                number=1;
            }
            else
                sum=(sum*10+(atoi(*p)-48));
        }
        else
            break;
    }
    return sum;
}


double CHuoqvjiaoduDlg::readGAM60Value(CString mingling)
{
    int i,j,k;
    CString Buf("  ");
    CString InByte("");
    CString aa("");
    CByteArray OutB;
    double value;

    m_MSComm1.SetPortOpen(TRUE);
    m_MSComm1.SetInBufferCount(0);
    m_MSComm1.SetOutBufferCount(0);
    m_MSComm1.SetPortOpen(FALSE);
    Buf=mingling;
    Buf.TrimLeft();
    Buf.TrimRight();
    i = strlen(Buf);
    k = 0;
    OutB.RemoveAll();
    OutB.SetSize((i/2)+1);
    j=0;
    while(i>0)
    {
        OutB[j]=atoi(Buf.Mid(k,2));
        k = k + 2;
        i = i - 2;
        j = j + 1;
    }

    m_MSComm1.SetPortOpen(TRUE);
    m_MSComm1.SetInBufferCount(0);
    m_MSComm1.SetOutput(COleVariant(OutB));

    VARIANT   variant_inp;
    COleSafeArray   safearray_inp;
    LONG   len,z=0;
    BYTE   rxdata[2048];
    variant_inp=m_MSComm1.GetInput();
    safearray_inp=(COleSafeArray)variant_inp;
    len=safearray_inp.GetOneDimSize();
    for(z=0;z         safearray_inp.GetElement(&z,rxdata+z);
    for(z=0;z     {
        BYTE   bt=*(char*)(rxdata+z);
        InByte.Format("%c",bt);
    }

    m_MSComm1.SetPortOpen(FALSE);

    if((InByte.Mid(1,1)) == "+")
    {
        aa = InByte.Mid(2,10);
        value = Val(aa);
        value=value * 0.01;
    }

    if((InByte.Mid(2,1)) == "+")
    {
        aa = InByte.Mid(3,10);
        value = Val(aa);
        value=value * 0.01;
    }

    if((InByte.Mid(3,1)) == "+")
    {
        aa = InByte.Mid(4,10);
        value = Val(aa);
        value=value * 0.01;
    }

~~~~~~~~中间省略~~~~~~~~~~

    if((InByte.Mid(16,1)) == "+")
    {
        aa = InByte.Mid(17,10);
        value = Val(aa);
        value=value * 0.01;
    }
    return value;
}

[ Last edited by 余泽成 on 2009-11-26 at 20:24 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

7782663

铜虫 (正式写手)

★ ★
nono2009(金币+0,VIP+0):谢谢交流!但请勿发有灌水嫌疑的帖子。 10-30 06:55
nono2009(金币-2,VIP+0):既然定了规矩,罚款不能免。 10-30 07:06
我没找到啊 请另请高明把
2楼2009-10-30 02:24:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

jjdg(金币+0,VIP+0):谢谢参与讨论!lz如果将出错的line:2553给出来,应该会有用的多! 10-30 10:27
搂住贴出这些代码估计是看不出来的,Debug Assertion Failed是运行时错误,搂住还是好好调试下吧。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
3楼2009-10-30 08:53:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


jjdg(金币+1,VIP+0):感谢分享经验!欢迎常来! 10-30 10:38
引用回帖:
jjdg(金币+0,VIP+0):谢谢参与讨论!lz如果将出错的line:2553给出来,应该会有用的多! 10-30 10:27

那行不是搂住写的代码,应该是vc类库里的代码,貌似也没多少用处。
这种问题基本上只有调试,查看调用栈,抓到搂住自己代码里出错的调用,然后再查变量值为什么异常。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
4楼2009-10-30 10:33:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 li343 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见