精华内容
下载资源
问答
  • 串口助手接收数据乱码
    千次阅读
    2020-05-13 15:39:18

    关于STM32 USART DMA数据发送,串口助手接收显示乱码问题总结

    串口助手打印出现乱码原因:

    1. 串口助手波特率与程序波特率不一致;
    2. 硬件共地;
    3. 发送变量在赋值之前一定要清空,发送完之前一定不要再次填充数据;

    关于第3点做一下说明
    e.g

    void IMU_DataPrintf(void)
    {
        static u32 tick;
    	static char data_buffer[100];
    	memset(data_buffer, 0x00, sizeof(char) * 100);//清零
    
    	if(HAL_GetTick() - tick > 1)//1ms发送一次
    	{
    		tick  = 	HAL_GetTick() ;
    		sprintf(data_buffer,"\nGx:%d,Gy:%d,Gz:%d", imu_test.gyro_x, imu_test.gyro_y, imu_test.gyro_z);
    		
    		Comm_SendData((uint8_t *)data_buffer, strlen(data_buffer));	//发送接口
    	}	
    }
    

    将IMU_DataPrintf()函数放在主循环里面跑,串口助手接收到的数据是乱码;
    原因:主循环里程序跑得很快,data_buffer里面的数据还没发送完,马上就会执行memset(data_buffer, 0x00, sizeof(char) * 100);导致data_buffer被改变;

    将代码改为

    void IMU_DataPrintf(void)
    {
        static u32 tick;
    	static char data_buffer[100];
    	
    	if(HAL_GetTick() - tick > 1)//1ms发送一次
    	{
    		tick  = 	HAL_GetTick() ;
    		memset(data_buffer, 0x00, sizeof(char) * 100);//清零
    		sprintf(data_buffer,"\nGx:%d,Gy:%d,Gz:%d", imu_test.gyro_x, imu_test.gyro_y, imu_test.gyro_z);
    		
    		Comm_SendData((uint8_t *)data_buffer, strlen(data_buffer));	//发送接口
    	}	
    }
    

    注意:data_buffer最好是静态的;

    更多相关内容
  • 串口助手乱码

    千次阅读 2020-08-12 17:53:12
    开发板A的uart串口,用串口助手和电脑连接总是显示乱码: 最开始用U转串线连接板子和电脑——可能电平不匹配导致的乱码; 之后换了两块USB转TTL电平模块,串口助手都是乱码; 我怀疑是程序的问题 发送0x55、0xff到...

    问题描述

    开发板A的uart串口,用串口助手和电脑连接总是显示乱码:
    最开始用U转串线连接板子和电脑——可能电平不匹配导致的乱码;
    之后换了两块USB转TTL电平模块,串口助手都是乱码;
    我怀疑是程序的问题
    发送0x55、0xff到uart,用示波器测试都是正常的信号;
    难道我拿到的USB转TTL模块都有问题?????

    解决思路(感谢xy)

    用开发板A作为发送端,用开发板B(提前测验过,可以正常使用)作为接收端,用uart通信,如果能正常通信,说明A的uart没有问题,两个U转T模块都有问题。如果B收集不到,或者说收集到的信号是错乱的,那就说明板子A上有问题(不论UART还是程序),USB转TTL模块可能没有问题。
    (其实用示波器检测电平信号正常,基本上可以说明A的uart可以正常通信)。

    具体做法

    接线图:
    在这里插入图片描述
    测试程序语句:
    板子A中的测试语句:
    ···
    uint8_t a[256];
    for( int i =0; i <= 255 ;i++)
    {
    a[i] = i ;
    }
    while (1)
    {
    HAL_UART_Transmit(&huart3, a, 256, 0xffff);
    HAL_Delay(1000);
    }
    ···
    板子B中的测试语句:
    ···
    static uint8_t buff[256];
    HAL_UART_Receive_IT(&huart1, buff, 256);//中断接收
    HAL_Delay(10);
    ···
    对应的程序分别烧入两个板子,debug看B中接收数组buff的值

    结果

    B接收到了A发来的256数组。
    这中间还有一个小问题,最开始接收到的数字是到了只有0-56,明明发送的数字是0-255,后来发现是发送时间太短了引起的这个问题。
    到此,基本证明串口没有问题,至于为什么串口助手不能通讯,大概就是各种usb线或者转换模块的问题了。

    展开全文
  • QT制作一个串口调试助手中文乱码问题
       最近在学习一下嵌入式QT,我学的是用C++开发的,学习下来还不错挺顺利的。
       动手做了一个串口调试助手,开发过程中遇到了一个问题,当接受的英文字符时正常显示,但接收中文汉字时就会乱码,当时我想到应该是编程中字符格式设置不对。
    

    一开始我的关于字符的代码是这样的:

    void Widget::readyRead_slot()
    {
        QString buf;
    
        buf=tcpSocket->readAll();
    
        ui->recvEdit->appendPlainText(buf);
    
    }
    
    void Widget::on_pushButton_3_clicked()
    {
        tcpSocket->write(ui->sendEdit->text().toLocal8Bit().data());
    }
    

    改完之后是这样:

    void Widget::readyRead_slot()
    {
        QByteArray buffer=tcpSocket->readAll();
        ui->recvEdit->appendPlainText(QString::fromLocal8Bit(buffer));//将QByterArray数据类型转换,
    }
    
    void Widget::on_pushButton_3_clicked()
    {
        tcpSocket->write(ui->sendEdit->text().toLocal8Bit().data());
    }
    

    将QByteArray数据类型转换,要能正确显示中文,需要使用QString::fromLocal8Bit。
    接下来我会继续更新我遇到的困难和解决方法,希望大家多多关注。

    展开全文
  • 硬件平台:STM32F030CC软件平台:RT-Thread-NANO V3.1.2问题:在移植FinSH控制台时,配置串口1为中断接收,但接收到的字符是乱码的。串口数据发送正常。串口1的配置代码:static void RccConfigure(void){/* Enable ...

    硬件平台:STM32F030CC

    软件平台:RT-Thread-NANO V3.1.2

    问题:在移植FinSH控制台时,配置串口1为中断接收,但接收到的字符是乱码的。串口数据发送正常。

    串口1的配置代码:static void RccConfigure(void)

    {

    /* Enable AHB Clock */

    RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB |

    RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_DMA1, ENABLE);

    /* Enable APB1 Clock */

    RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM14 |

    RCC_APB1Periph_USART2 | RCC_APB1Periph_PWR |

    RCC_APB1Periph_SPI2, ENABLE);

    /* Enable APB2 Clock */

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- serialB_low_gpio_init

    *** Descriptions----------- 串口GPIO的功能复用及初始化

    *** Input parameters------- none

    *** Output parameters------ none

    *** Return value----------- none

    *****************************************************************************************************************

    ****************************************************************************************************************/

    static void serialB_low_gpio_init(void)

    {

    GPIO_InitTypeDef GPIO_InitStructure = {0};

    /* gpio connect to usart a */

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    /* gpio initialize */

    GPIO_InitStructure.GPIO_Pin = SERIAL_B_TX_PIN;

    GPIO_Init(SERIAL_B_TX_PORT, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = SERIAL_B_RX_PIN;

    GPIO_Init(SERIAL_B_TX_PORT, &GPIO_InitStructure);

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- serialB_low_nvic_init

    *** Descriptions----------- 初始化串口DMA中断优先级

    *** Input parameters------- none

    *** Output parameters------ none

    *** Return value----------- none

    *****************************************************************************************************************

    ****************************************************************************************************************/

    static void serialB_low_nvic_init(void)

    {

    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_InitStructure.NVIC_IRQChannelPriority = 2;

    NVIC_Init(&NVIC_InitStructure);

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- serialB_low_uart_init

    *** Descriptions----------- 串口初始化

    *** Input parameters------- baudrate: 波特率

    *** |-- databit: 数据位

    *** |-- paritybit:校验位

    *** |-- stopbit: 停止位

    *** Output parameters------ none

    *** Return value----------- true成功,false失败

    *****************************************************************************************************************

    ****************************************************************************************************************/

    static int serialB_low_uart_init(SerialBaudRateTypedef baudrate, SerialDataBitTypedef databit,

    SerialParityBitTypedef paritybit, SerialStopBitTypedef stopbit)

    {

    USART_InitTypeDef USART_InitStructure;

    USART_DeInit(SERIAL_B_USART);

    USART_InitStructure.USART_BaudRate = baudrate;

    USART_InitStructure.USART_WordLength = databit;

    USART_InitStructure.USART_Parity = paritybit;

    USART_InitStructure.USART_StopBits = stopbit;

    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;

    USART_Init(SERIAL_B_USART, &USART_InitStructure);

    /* 串口接收中断使能 */

    USART_ITConfig(SERIAL_B_USART, USART_IT_RXNE, ENABLE);

    /* 使能串口 */

    USART_Cmd(SERIAL_B_USART, ENABLE);

    return true;

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- msh_configure

    *** Descriptions----------- 配置msh控制台串口

    *** Input parameters------- serial: 串口设备

    *** |-- cfg: 串口参数

    *** Output parameters------ none

    *** Return value----------- RT_EOK

    *****************************************************************************************************************

    ****************************************************************************************************************/

    rt_err_t msh_configure(struct rt_serial_device *serial, struct serial_configure *cfg)

    {

    serialB_low_gpio_init(); /* 串口GPIO的复用及初始化 */

    serialB_low_nvic_init(); /* 串口的中断优先级配置 */

    /* 串口参数配置、相关串口中断使能 */

    serialB_low_uart_init(SERIAL_BAUDRATE_115200, SERIAL_DATABIT_8, SERIAL_PARITYBIT_NONE, SERIAL_STOPBIT_1);

    return RT_EOK;

    }

    展开全文
  • 有没有小伙伴跟我一样用串口助手接收传感u器数据的时候显示乱码呢??(手动狗头doge)。。 只需一招 手动把晶振振荡器的频率改为 11.0592MHz
  • 串口助手:cutecom; 串口线:USB转RS232的两根一模一样的线,通过交叉短接235口,分别接在以上3台中的两台,发现主机3和另外两台通信不正常,收发数据不一致,而主机1和主机2之间同样的串口线跳线短接通信正常。;...
  • 本篇文章: 主要是C#串口助手,解决上一篇文章中的串口乱码问题。 功能一:编码转汉字,汉字转编码 功能二:C#实现串口助手【解决中文乱码问题】 .
  • switch (ch) { case "\x12" : //接收串口头 //清空接收数组 ReceiveData = string.Empty; break; case "\x14" : //接收串口尾 //在拥有此控件的基础窗口句柄的线程上执行委托Invoke(Delegate) //即在控件...
  • 在STM32printf重定向实验中,使用printf向串口输出信息时,输出数据会出现乱码现象或者数据缺失现象,如图: 理应输出122位数据,当波特率为115200时,输出为2位,并且乱码。 解决方法:将波特率调低,以9600为...
  • 1.主程序如下: int main(void) { u32 t=0; uart_init(115200); delay_init(84); while(1) { printf("t:%d\r\n",t);...2.本来是乱码的 因为默认的波特率为9600 改成115200就行了 正常显示 ...
  • 串口输出中文乱码

    万次阅读 2020-07-29 17:14:03
    最近在使用OpenMV,但是由于没有转接板和软排线来连接串口,不过手上有一块STM32F4的开发板,于是就想到将其作为一个转接,通过其接收OpenMV发送的数据,并将其转发到电脑上,结果串口助手一直输出乱码。 寻找问题...
  • 串口乱码疑云

    千次阅读 2019-12-27 11:03:59
    凡是用串口工具调试APP的人都有一个绕不过去的坑,那就是乱码坑!最简单的乱码坑是由于串口的波特率与传送信息模块的波特率不一致造成的,在串口工具上重新设置正确的波特率就马上见效出坑了。出现乱码最先检查的...
  • 串口助手XCOMv2.0显示乱码 但是波特率是对的,不知道是哪里的问题
  • 现象:(以下描述中,用vs 写的程序,简称为程序)用串口助手给程序发数据,如果数据为全英文,则结果正确,而如果数据中含有英文,则结果有时正确,有时错误。代码如下private void serialPort1_DataReceived(object ...
  • python在调用pyserial通信的时候,接收串口调试助手或者设备发送过来的HEX值,在特定位置会出现错误编码,接收到的不是十六进制数据,而是一些乱符号,' ', '!', '"', '#', '$', '%', '&amp;', '\'', '('...
  • 已结贴√问题点数:2回复次数:2 请高手指教 红外串口解码 返回的数据乱码刚做了个红外遥控解码,初学编程,写入C51程序如下,通过串口助手调试返回的遥控数据无规则,请哥哥姐姐们指点#include"reg52.h"#define uchar ...
  • 被这个问题卡了3天,代码很简单就是乱码出问题,烦恼! 后来查资料找到原因,晶振12MHz和11.0592Hz的问题。 如果你用的是12Mhz的单片机,定时器初值TH1一般要设置到E6(2400bps)、F3(4800bps)。 对应的在上位机...
  • 串口调试助手出现乱码

    万次阅读 2012-09-07 17:50:16
    首先用一个正确的程序试一下确保软件本身没有什么问题, ...自己今天下午调了一个串口发送字符串的程序,就是因为没有把波特率和VPB时钟频率匹配好,导致一直出现乱码 当 UART_BPS 设为9600,Fpclk 为(Fosc/4)*1
  • 问题描述:在进行串口实验时,我们想通过串口调试助手来输出中文信息, 但是我们经常会发现在串口调试助手上会输出乱码,跟我们预期的中文信息不符,见以下图片: 解决思路: 1、检查软件串口波特率设置和串口...
  • 今天自己做了一块STM32F103C8T6的最小系统,在打印数据时出现了单片机端有数据发出,但是在串口助手上无法显示。 问题描述: : APP 中接收数据代码: @Override public void run() { bytes = mmInStream.read...
  • <p># include <reg52.h> typedef unsigned int u16; typedef unsigned char u8; u8 flag,a,i; u8 table[]="I get"; void Init() ... </p>
  • 2021年10月在做一个项目是用到串口监控输出,用textbrowser打印,发现1、打印偶尔会发生乱码2、打印在textbrowser上时偶尔会发生打印串行 解决方案: 1、监控偶发乱发 通过其他的串口工具查看信息正常没有乱码,...
  • 【STM32】串口通信出现乱码(使用官方标准库)

    千次阅读 多人点赞 2020-09-26 16:18:00
    解决stm32串口通信出现乱码,sscom串口调试助手,官方标准库。
  • 查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开发板上的两个LED。1.软件界面2.主要功能:启动自动搜索本机串口,或者手动点击搜索键扫描串口自定义波特...
  • STM32踩坑:STM32串口发送乱码问题

    千次阅读 多人点赞 2020-10-16 09:36:05
    STM32串口发送乱码问题 小编是一个嵌入式初学者,才学没多久,将近两个月的样子,在学习过程中遇到了一些问题,在这里给大家分享一下解决方案。...2) 串口调试助手接收数据的波特率与串口初始化时的波特率不一致(这种
  • STM32 串口乱码

    千次阅读 2022-04-07 14:56:35
    同一个串口调试助手,用正点原子、STM32CubeMX生成的程序发送数据正常。排除串口调试助手问题。 串口配置函数问题?仔细检查过串口配置,GPIO配置,用STM32CubeMX与骄阳程序相互替换,问题仍然存在。 HAL库其它文件...
  • 下面是用Python写的测试代码 ...单元测试:Python串口发送中文,SSCOM串口助手接收,看在UTF-8、GB2312、GBK三种编码下SSCOM助手对于中文的支持程度。 """ import serial if __name__ == "__main__": try: p...
  • 由于项目需要使用到串口调试及测试,为了练手,使用 Qt 编写一个串口调试助手。本文按开发的过程进行简单介绍,同时也涉及部分用到的模块代码。详细代码参考源码仓库。# 工具特性## 具体功能- 具备串口收发功能。- ...
  • RS485接收数据后发送乱码

    千次阅读 2021-07-01 16:13:15
    最近调块板子上面有几路485,控制芯片STM32F407VE、转换芯片ADM2587,使用485转换器连接电脑,发现串口助手向板子发送数据后会收到乱码,经软硬件联合调试排除bug。 一、问题现象 1、485向上位机发送数据串口助手...
  • 上一章:QT5自制串口助手(3)设置与打开关闭串口 编写发送 和之前一样右击发送按钮。 这里我们先判断串口有没有打开,如果打开了转成utf-8编码发送,然后把发送内容显示出来,... 下一章:QT5自制串口助手(5)数据显示

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 823
精华内容 329
热门标签
关键字:

串口助手接收数据乱码