小弟现在做一个串口通讯的程序,在数据的接收和显示阶段遇到了COleVariant转CString的问题。
这是相关的程序:
COleVariant myVar;
COleSafeArray safearray_inp;
............
myVar.Attach(m_Com.GetInput());
//variant_inp = m_Com.GetInput();  
safearray_inp = myVar;
m_testReceive=(unsigned char*)safearray_inp.parray->pvData;
    然后在一个编辑框里显示m_testReceive的内容,但是我发现当我发送的数据小于8个字时,编辑框能正常显示,但是当发送的数据超过8个字时,比如是10个字,只能显示最后两个数据:如发送12345678ab,在编辑框里只能显示ab,当发送12345678abcdefghij时,只能显示ij。我不知道这是为什么,大家能不能帮帮我
    先谢谢了

解决方案 »

  1.   

    safearray_inp = myVar; 
    m_testReceive=(unsigned char*)safearray_inp.parray->pvData; 
    ====
    为啥要这么做呢?
    myVar.bstrVal不就是字符串了么
      

  2.   

    先谢谢你的回答
    我照着做了
    m_testReceive=myVar.bstrVal;但是还是不行啊
    当我发送的数据小于8个字时,编辑框能正常显示,但是当发送的数据超过8个字时,比如是10个字,只能显示最后两个数据:如发送12345678ab,在编辑框里只能显示ab,当发送12345678abcdefghij时,只能显示ij
      

  3.   

    用COleVariant 的 ChangeType 方法转成字符串 
      

  4.   

    试试看m_testReceive += myVar.bstrVal;不见得是缓冲区不足只是每处理一次都把前面的丢掉了