用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);//将垂直滚动条滚动到最后一
}
查了好久了也不知道为什么,求问,不甚感激!