static CString string_receive=_T("");LRESULT CSEVC_DDlg:: OnCommNotify(WPARAM wParam,LPARAM lParam)
{
    m_pOutbuffer=new char[4096];
    memset(m_pOutbuffer, 0, 4096);
    if((wParam&EV_RXCHAR)!=EV_RXCHAR)
    {
        SetEvent(m_hPostMsgEvent);
        return 0L;
    }
    else
    {
        int i;
        DWORD number=ReadComm(m_pOutbuffer,4096);
        for( i=0;i<(int)number;i++)
        {
            string_receive=string_receive+m_pOutbuffer[i];
            m_edit.ReplaceSel(string_receive);
            string_receive=_T("");
        }
        SetEvent(m_hPostMsgEvent);
    }
        delete []m_pOutbuffer;
        return 0L;
}
上面是一个自定义的消息,当串口接收到一个字符就触发这个消息,现在我已经能把接收到的消息显示在对话框中了,我想把数据送到一个变量中,要进行实时处理,应该如何做?

解决方案 »

  1.   

    TO:wyz_csdn(网语者)
       怎么实现啊?能给出代码吗?
      

  2.   

    我做的串口通讯是用的CMSComm(一个自带的activeX控件),比较方便!
    每接受一个字符或者发送一个字符都会出发一个事件OnCommMscomm(),用一个全局变量把这个接受来的字符保村起来即可以拉!
      

  3.   

    楼上的,string_receive就是全局变量啊!可是到最后里面却是空的啊!
      

  4.   

    哦,SORRY,没看清!
    for( i=0;i<(int)number;i++)
            {
                string_receive=string_receive+m_pOutbuffer[i];
                m_edit.ReplaceSel(string_receive);
                string_receive=_T("");
            }
    对于这段代码而言,你每次将接受到的STRING发送到界面上,然后马上把string_receive置空,当然什么也得不到拉!这里面的string_receive如果是局部变量,也是可以工作的阿,比如你可以再加一个全局的CString str_receive;
    CString str_receive=_T("");global param;
    function()
    {...
    CString string_receive=_T("");
    for( i=0;i<(int)number;i++)
            {
                string_receive=string_receive+m_pOutbuffer[i];
                m_edit.ReplaceSel(string_receive);
                str_receive+=string_receive;
                string_receive=_T("");
            }
    ...
    }
    我想这样所有得字符都会保留再str_receive里面吧
      

  5.   

    感谢maomao2332(),照你方法我的问题解决了!
    万分感谢!