我现在在用单文档和MSComm控件实现串口编程,现在有个问题就是:我打算在View中直接把串口收到的数据显示出来,不知道把从串口收到的数据以什么样的格式存放比较好,用哪个函数把它显示出来? 谢谢指教

解决方案 »

  1.   

    串口收到的数据以什么样的格式存放都行,只要有足够的缓存,看数据源是什么数据,用mscomm控件是分二进制和文本两类的,二进制什么 数据都可收,如果不肯定数据源就用二进制view中显示数据,最简单地是在
    View::OnDraw(CDC* pDC)加一句:
    pDC->TextOut(1,1,"Hello ");或者在将菜单消息函数做在View中
    菜单函数代码:
    CDC *dc=GetDC();
    dc->TextOut(1,20,"hello Menu");
      

  2.   

    如果你的View是:class CxxxxView : public CEditView
    那么可以在:void CxxxxView::OnInitialUpdate()中调用如下的自定义函数:
    void CxxxxView::ShowArray(CStringArray& strArray)//准备好的字串
    {
    CWaitCursor wait;//如果函数运行时间长
    //Clean old 
    GetEditCtrl().SetSel(0,-1);
    GetEditCtrl().Clear();
    //Get total
    int rows=strArray.GetSize();
    if(rows==0) return;
    //
    CString prompt;
    int nStartChar,nEndChar;
    //From start
    GetEditCtrl().SetSel(0,0);
    for(int i=0;i<rows;i++)
    {// Fill all
    prompt=strArray.ElementAt(i);
    GetEditCtrl().GetSel(nStartChar,nEndChar);
    GetEditCtrl().SetSel(nEndChar,nEndChar);
    GetEditCtrl().ReplaceSel(prompt);
    }
    // Otherwise you will be asked to save ...
    SetModify(FALSE);//ours
    // do not use :
    // GetEditCtrl().SetModify(FALSE);
    }
    //
    其中:void SetModify(BOOL bModified) { m_bModified = bModified; }在类定义中.
     
      

  3.   

    谢谢各位,其实这里的显示不是最终目的,而只是一个中间过程,这些数据都是有各种不同用途的,如地址,数据,命令等,现在只是想让它分行显示, TextOut并不能完成这么复杂的功能呀
      

  4.   

    读来的数据可用CString存储,用TextOut输出。
      

  5.   

    drawtext,第三个参数可以确定显示的位置,你要换行自己计算确定位置即可