问题描述:

在ubuntu中用Qt开发的串口助手,在接收单片机(STM32 F103)发来的中文时,出现乱码情况。

接收中文乱码

问题已解决,感谢Qt交流qq群中的各位大佬。

解决思路:

可以检查一下两个串口通信的波特率是否一致。如果发送的是字符串,用fromUtf8函数将收到的字节流转化为字符串才能显示;如果发送的是数值,要根据数据包协议将接收到的字节流解析成具体数值,然后转换为字符串来显示。——培培哥

1. 单片机端的代码

Keil5开发环境

重要的事情说三遍:

keil 是gbk编码!

keil 是gbk编码!

keil 是gbk编码!

2. ubuntu下Qt中的代码

首先, readAll()函数返回QByteArray类型的数据

//从接收缓冲区中读取数据
QByteArray buffer = serial.readAll();

那么,我们要做的就是把QByteArray类型的数据——>GBK编码的字符串

//从接收缓冲区中读取数据
QByteArray buffer = serial.readAll();    // readAll()函数返回QByteArray类型的数据
QTextCodec *tc = QTextCodec::codecForName("GBK");
QString str = tc->toUnicode(buffer);

通过编写上面这段代码,我们要明白的是:GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换

Qt编码知识

Qt常见的两种编码是:UTF-8和GBKUTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。GBK是GB2312的扩展,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名。GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:GBK、GB2312--Unicode--UTF8UTF8--Unicode--GBK、GB2312 在简体中文windows系统下,ANSI编码代表GBK/GB2312编码,ANSI通常使用0x80~0xFF范围的2个字节来表示1个中文字符。0x00~0x7F之间的字符,依旧是1个字节代表1个字符。Unicode(UTF-16)编码则所有字符都用2个字节表示。

参考:

https://blog.csdn.net/gllg1314/article/details/46989953

https://blog.csdn.net/weixin_42837024/article/details/81630720

https://blog.csdn.net/iamplane/article/details/78218913

https://blog.csdn.net/hejinjing_tom_com/article/details/77780565

3. 测试结果

目前是可以显示中文了,但是仍偶尔会出现小部分的乱码,需要进一步测试是否会引起其他问题!

小部分乱码

4. 好文总结

(1)https://blog.csdn.net/ouening/article/details/89469468 (显示中文)

(2)linux qt串口助手 - 搜索结果 - 知乎 (显示中文)

(3)https://blog.csdn.net/weixin_42837024/article/details/81630720 (编码转换)

(4)https://blog.csdn.net/gllg1314/article/details/46989953 (编码转换)

(5)QT 制作串口调试小助手----(小白篇)

(6)https://download.csdn.net/download/xuebupt/10810096 (CSDN例子)

(7)https://download.csdn.net/download/qq_39736982/10543886 (CSDN例子)

(8) https://blog.csdn.net/iamplane/article/details/78218913 (Qt编码方式)

(9) https://blog.csdn.net/hejinjing_tom_com/article/details/77780565 (编码转换)

create显示中文乱码 qt_Ubuntu下Qt串口助手接收中文乱码问题相关推荐

  1. STM32在Keil中使用串口助手打印中文字符出现乱码问题

    问题 问题如下,中文字符显示乱码,但数字正常. 原因 通常这种在串口助手打印出现乱码情况: 无非是波特率设置错误,不对应.就像一个滴水的水龙头,水滴进一个循环开合的容器,双方速率不能很好匹配,一定会出 ...

  2. QT串口助手-ZUA课设

    QT串口助手 成品展示 QT全部程序构成 zua.pro serial.h main.cpp serial.cpp serial.ui Keil全部程序构成 main.c stm32f10x_conf ...

  3. 使用qt在windows的vs下写串口助手

    这是一篇总结性的文章,主要记录一下自己在写串口助手时遇到的问题和解决方案. 1 如果你和我一样,刚开始接触qt,那写一个可用的串口助手,可以按照下面这些文章的顺序开始. 1 图解Qt安装(Window ...

  4. qt 串口发送char 数组乱码_串口的波特相差多大会误码

    遇到波特率收到乱码的情况. 如下图所示,MCU一直发送0x55,但是PC接收错误. UART的波特率为115200bps,在12MHz 主频条件下,用电脑PC曾经能够正常接收数据. --------- ...

  5. Linux下QT串口通过无线模块收发十六进制数据

    前段时间写了一个关于WiMi-Net简要的收发码以及CRC校验的博客(http://blog.csdn.net/u011348999/article/details/16803829) 然后一直说把Q ...

  6. QT串口助手(串口的查找和打开)

    文章目录 前言 一.查找存在的串口将串口添加进选择框 二.打开串口功能的实现 总结 前言 本篇文章将正式的带大家实现串口的查找添加,和打开串口的功能. 一.查找存在的串口将串口添加进选择框 创建一个Q ...

  7. 上位机开发C#语言:模拟STC串口助手接收单片机发送数据

    题目概述: 设计一个模拟STC串口助手,通过串口进行接收或发送数据. STC串口助手: 编程: using System; using System.Collections.Generic; usin ...

  8. android串口发送二进位,stm32107串口发送数据的数据用串口助手接收发现数据不对...

    下面是我用的STM32单片机串口5的初始化 然后再主函数里面一直发送数据 串口助手的相关配置和串口的配置一样 但是接收的数据和自己发送的数据不一致下面是串口5的初始化(单片机用的是CP2102芯片转U ...

  9. 解决Ubuntu18.04下Qt中无法输入中文的问题

    问题描述:我的中文输入法是搜狗的,但在qt中写代码时一直无法切换成中文,重启无效! 原因:安装的qt中缺少中文输入环境 解决办法: 进入到/usr/lib/x86_64-linux-gnu/qt5/p ...

最新文章

  1. 超级的全中文语音数据集合
  2. 【数字信号处理】相关函数应用 ( TDOA 时差估计实例 | 调制波特率 | 带宽 | 码元数量 | 信息量 )
  3. 从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构
  4. iOS-Senior20-Map定位
  5. Windows 7系统快捷键汇总
  6. python自动化办公教程百度云-用Python自动办公,做职场高手,16章完整版百度云盘...
  7. opencv学习第6课官方练习实现 Create a Paint application with adjustable colors and brush radius using trackbars
  8. Apache部署多个WordPress网站
  9. windows终止处理程序( __try __finally) 简单解析
  10. win10易升_易升win10失败怎么办
  11. ensembl-vep/VEP 注释软件安装及测试 超简单版(conda vep、百度网盘数据库)
  12. 十分好用PDF转换成PPT转换器
  13. mybaties中resultMap和resultType的区别
  14. BGP和BGP机房各为什么?优势在哪?
  15. [VS2010]逸雨清风 校园网视频,网吧视频(光音网视)下载器 V0.26
  16. MEMOS 技术支持
  17. 什么是 CSDN ?
  18. 2020-08-09 我来邀请码
  19. linux usb 网络摄像头,树莓派|Linux有问必答:如何在树莓派上安装USB网络摄像头...
  20. 浅谈二维和三维图像数据

热门文章

  1. 判断表达式是否正确闭合,返回未闭合元素的下标。
  2. 访问控制列表(二)配置命令
  3. Rsync+Inotify操作文档
  4. php中::双冒号有什么作用
  5. Facebook如何重新设计HHVM JIT编译器的性能
  6. 玩转linux——Screen管理远程会话,再也不怕关闭SSH就中断会话了
  7. win2008r2 or centos6 硬盘挂载
  8. pat乙级相当于什么水平_英语四六级/专四/专八相当于美国人什么水平?
  9. python解不定积分_python快速求解不定积分和定积分
  10. 曾辉机器人_武汉一高校大学生研发深度学习机器人 会打太极、跳舞