我从网络上收到的数据,我把它从一串BYTE转换后存到了一个CString aaa里面,并且用AfxMessageBox弹出来显示,例如:收到+81.59547564,在Debug的时候一切正常,CString aaa里面是+81.59547564,且AfxMessageBox弹出+81.59547564
但是,程序实际运行的时候AfxMessageBox弹出空对话框,关闭后紧接着弹出547564,关闭后紧接着弹出+81.59,程序里我明明只调用了一次AfxMessageBox阿,而且怎还自动分段了,还是倒过来的-_-

解决方案 »

  1.   

    搜索MessageBox ,如果只有1个,看看有没有循环,或者你使用别人的类里头有没有MessageBox
      

  2.   

    预测:我想应该是你没有收全整个数据就开始显示了吧
    网络收取数据不一定是一次收到,也许分了几次
    当你输出buffer中的内容时需要先确认这一次的数据全部收到了
    再显示的。
      

  3.   

    看现象肯定你正常运行时数据不是一次收全的,把你想显示的数据分报送到才出现你的问题,
    在Debug下好用说明收数据和速度有关,可以Sleep一下试试。
      

  4.   

    没收全就显示怎么会倒着显示?
    我同意Caps77的看法,仔细查查是不是真的只使用了一次MessageBox.
      

  5.   

    用的是MSComm类来收串口数据,明天偶把代码回来贴,大概的内容如下
    显示
    BEGIN_EVENTSINK_MAP(CMyDialog,CDialog)
    ON_EVENT(CMyDialog,ID_COMM_CTRL,1,OnCommMsg,VTS_NONE)
    END_EVENTSINK_MAP()
    然后在对话框初始化中开串口
    m_Com.Create(NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,10,10),this,ID_COMM_CTRL);
    ......
    m_Com.SetInputMode(1);
    m_Com.SetRThreshold(1);
    m_Com.SetSettings("9600,n,8,1");
    ......
    然后事件处理
    CMyDialog::OnCommMsg()
    {
       CString recv;
       用m_Com.getinput()取了数据,转换并存到recv里
       最后跳出对话框
       AfxMessageBox(recv);
    }
    然后如果串口有收到数据就出现上面我说的那种现象了-_-
    不存在AfxMessageBox循环多遍阿,OnCommMsg根本没有循环
    如果说数据分段收到的话为什么最后的内容先跳出来?-_-