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

问题描述

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 += "rn";
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);//将垂直滚动条滚动到最后一
}

}

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

解决方案

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

时间: 2024-11-08 19:09:17

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

数据发送-C#中串口通信发送20字节的数据

问题描述 C#中串口通信发送20字节的数据 20字节数据是指160位二进制数吗?转换成整型怎么定义,最大也只有64位?还是指一个一个的数据,总共有20个? 解决方案 用byte[]发送.当然也可以用int[],一共需要5个int或者20个byte serialPort1.Write(字节数组)

c#上位机与单片机通信,上位机接收不到单片机返回的数据

问题描述 c#上位机与单片机通信,上位机接收不到单片机返回的数据 我遇到的问题是: 1上位机给单片机发送数据,单片机能接收到,但是单片机返回的数据上位机收不到 2我不用单片机,直接把数据线上的TX.RX短接,再用上位机发送数据,这时 上位机显示区就能显示上位机发送的数据: 3我用串口调试助手调试单片机程序,调试助手能正常接收单片机返回的数据: 以上3个问题,很是矛盾,不知道哪里出问题了,请高手帮助一下! 解决方案 asc码接收,十六进制接收不行,上位机编码 解决方案二: 曾经写过的一个,接收函数

显示-stm32与上位机通过网口通信,网口读不出数据?

问题描述 stm32与上位机通过网口通信,网口读不出数据? 使用w5500evb与上位机通信,w5500evb是一个网络芯片,它的MCU是stm32f103系列的,要实现将传感器采集到的数据值通过网口显示在上位机的网络调试助手上,现在我可以通过串口将数据显示在串口调试助手上(说明传感器工作正常),但是通过网口传数据时,在上位机的网络调试助手不显示,请教大神,这是什么原因呢?(网络通信是正常的,我用上位机的网络调试助手给下位机发送数据123,下位机收到之后会自动将123发送给上位机,而且在网络调试

【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据

原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内容. 5.2 Sending HTML Form Data 5.2 发送HTML表单数据 本文引自:http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1 By Mike Wasson|

嵌入式开发-iic中主机读取一个字节的时候,从机怎么知道什么时候给主机发送数据呢

问题描述 iic中主机读取一个字节的时候,从机怎么知道什么时候给主机发送数据呢 开发-iic中主机读取一个字节的时候,从机怎么知道什么时候给主机发送数据呢-iic多字节传输协议">如果是主机发送数据的话,我们可以控制SCL和SDA,在SCL为高电平期间,可以是SDA为稳定状态,但是主机接收时,要从机发送数据,从机怎么知道什么时候可以发送呢比如图中的程序,从机发送数据只能是在SCL_L和SCL_H之间了,从机是怎么知道的呢 解决方案 你可以看一下AT24C256这样的iic EEPROM芯片

lcd显示-STM32下lcd12864一个字节显示程序

问题描述 STM32下lcd12864一个字节显示程序 lcd地址每行是8个字,16个字节,显示数据时首地址只能是字的整数倍,比如我只想在第二个字节处写下一个字母,但地址就定位不到第二个字节处,只能是1,3,5--字节处,也就是每个字的首地址,求大神指点怎么定位到每一个字节的首地址处 解决方案 http://wenku.baidu.com/link?url=wviwTAPWlFSel0d7WZcfvVdRhg3GHpUI1VS2a7f618l-NqjKx9kTBrMJoaZA7dcKvJKR-S

byte 接收数据 断点-控制器给C#上位机窗口程序发送数据的字节接收问题

问题描述 控制器给C#上位机窗口程序发送数据的字节接收问题 现在的问题是:设置断点后,发现接收的字节长度不稳定,最少是4个,最多会达到上千个. 代码原先是这么写的: int lenth = serialPort1.BytesToRead; if (lenth != 0) { Byte[] receiveByte = new Byte[length]; serialPort1.Read(receiveByte, 0, length) --------------------- ----接收的字节转

请问大家使用C# SOCKET 每隔一毫秒发送一个包(1024字节)速率是多少

问题描述 我thread.sleep(3)跟thread.sleep(1)一样的速率,发送的只有60K/S,做视频传输的,所以需要每隔2毫秒3毫秒发送一个包,有没有同包遇到类似的问题? 解决方案 解决方案二:首先去掉所有Thread.Sleep的代码看看最大的传输速度可不可以大于60KB另外和机器配置网卡都有关系解决方案三:这关键得看你的网卡CPU网速这些呀,而不是看代码代码都一样做视频传输的,所以需要每隔2毫秒3毫一个1024?你视频处理有这么快???相当于秒2-3秒秒一个帧...解决方案四:

基于X86平台的PC机通过网络发送一个int(32位)整数的字节顺序

1.字节顺序 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端.大端两种字节顺序.小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处:大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处.计算机中读取数据的时候是从低地址到高地址,存储数据时候相反! 2.主机字节序到网络字节序 基于X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的.因而对int.uint16.uint32等多于1字节类型的数据,在这些嵌入式平台上应该变换其存储顺