2 fr1995 fr1995 于 2016.04.29 21:25 提问

stm32不停地发送一个字节的数据,mfc编写的上位机接收到了但是显示乱码

用MFC写了一个串口接收的函数,为了测试,单片机stm32每隔一秒不停地发送同一个数,比如是0x32,想显示在接收框里面,但是每次显示都是乱码,如果以16进制显示就是8位16进制码。
设置断点调试了一下,发现bt是成功接收到了的,但是以cstring显示就乱码了,为什么呢?
图片说明

代码如下:
void C无人机地面控制终端Dlg::OnCommMscomm1()
{
// TODO: 在此处添加消息处理程序代码
VARIANT VARIANT_Input;
COleSafeArray SafeArray_Input;
LONG len, k;

BYTE RXData[1024];
CString strtemp ;
if (m_mscom.get_CommEvent() == 2)
{
VARIANT_Input = m_mscom.get_Input(); //读缓冲区
SafeArray_Input = VARIANT_Input; //VARIANT型变量转换为COleSafeArray型变量
len = SafeArray_Input.GetOneDimSize();
for (k = 0; k< len; k++)
SafeArray_Input.GetElement(&k, RXData + k); //转换为BYTE型数组
for (k = 0; k < len; k++)
{
char bt = (char)(RXData + k);
strtemp.Format(_T("%c", bt));
m_EditReceive += strtemp; // 接收到编辑框里面
}
m_EditReceive += "\r\n";
UpdateData(false);

    m_Edit.SetSel(-1, -1);
    this->SetDlgItemTextW(IDC_EDIT1, m_EditReceive);//将m_EditReceive内容显示到ID为IDC_EDIT1的编辑框的最后位置
    m_Edit.LineScroll(m_Edit.GetLineCount() - 1, 0);//将垂直滚动条滚动到最后一
}

}

查了好久了也不知道为什么,求问,不甚感激!

1个回答

Lov_NinGx
Lov_NinGx   2016.04.29 21:41

这个问题比较简单,但是操作起来有点难,问题出在Format,编码的问题。这个可以参考,http://bbs.csdn.net/topics/390337326

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!