none
C++ MFC显示从串口接收到的数据 RRS feed

  • 问题

  • MFC程序,从串口接收到一个16进制数据的字符串,经过什么样的转换能够以16进制的形式显示在MFC编辑框上?接收到的数据是十六进制字符串unsigned char型的,我想以十六进制的方式显示在MFC的EDIT编辑框上。如果我直接将字符串给CString,只有前三个和后三个显示是正确的,中间是乱码,而中间恰好是我需要的十六进制的数据。

    • 已编辑 GT_MDRG 2013年9月3日 8:06
    2013年9月3日 7:39

答案

  • BYTE byData[XXX] = {.....};
    CString strText(_T(""));

    for(size_t  i = 0; i != _countof(byData); ++i)
    {
       strText.AppendFormat(_T("0x%02X "), byData[i]));
    }
    SetDlgItemText(IDC_EDIT1, strText);


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 GT_MDRG 2013年9月7日 0:48
    2013年9月4日 2:55
    版主

全部回复

  • 直接 SetWindowText(your16string)
    2013年9月3日 7:50
  • BYTE byData[XXX] = {.....};
    CString strText(_T(""));

    for(size_t  i = 0; i != _countof(byData); ++i)
    {
       strText.AppendFormat(_T("0x%02X "), byData[i]));
    }
    SetDlgItemText(IDC_EDIT1, strText);


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 GT_MDRG 2013年9月7日 0:48
    2013年9月4日 2:55
    版主
  • GT_MDRG, 你好:

    虽然我不是很明白你陈述的“如果我直接将字符串给CString,只有前三个和后三个显示是正确的,中间是乱码,”具体是什么意思,但是我还是建议你考虑使用CWnd::UpdateData这个函数。具体的参考下面的链接:http://msdn.microsoft.com/zh-cn/library/t9fb9hww(v=vs.110).aspx .


    Sunny Cao
    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    2013年9月4日 8:31
    版主