当前位置:网站首页>QT serial port UI design and solution to display Chinese garbled code
QT serial port UI design and solution to display Chinese garbled code
2022-07-03 16:25:00 【Red guest white hat】
QT A serial port ui Design and solve the display of Chinese garbled code
【1】UTF-8 and GBK
*UTF-8:Unicode TransformationFormat-8bit, Allow to contain BOM, But it usually doesn't contain BOM.
Is used to solve the international character of a multi byte encoding , It uses English 8 position ( A byte ), Use of Chinese 24 by ( Three bytes ) Encoding .
UTF-8 Contains characters needed in all countries of the world , It's international code , Strong commonality .
UTF-8 Coded text can be supported in various countries UTF8 The character set is displayed on the browser .
If it is UTF8 code , In foreigners' English IE It can also show Chinese on , They don't have to download IE Chinese language support package for .
*GBK It's a national standard GB2312 On this basis, it is compatible after expansion GB2312 Standards for .
GBK The text encoding of is expressed in double bytes , That is to say, regardless of 、 English characters are represented by double bytes , In order to distinguish Chinese , Set the highest bit to 1.
GBK Contains all Chinese characters , It's the country code , Versatility is better than UTF8 Bad , however UTF8 The database occupied is more than GBD Big .
GBK yes GB2312 An extension of , In addition to compatibility GB2312 Outside , It can also display traditional Chinese , There are also Kanas in Japanese .
*GBK、GB2312 And so on UTF8 Between must pass through Unicode Code can be converted to each other : GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
* In simplified Chinese windows Under the system ,ANSI Code representative GBK/GB2312 code ,ANSI Usually use 0x80~0xFF Scope 2 In bytes 1 Chinese characters .
0x00~0x7F Characters between , Is still 1 One byte stands for 1 Characters .Unicode(UTF-16) Encoding is used for all characters 2 Byte representation .
【2】SerialTool.pro
【3】mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QSerialPort>// Serial header file
#include<QTextCodec>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void InitUI();
private:
Ui::MainWindow *ui;
QTextCodec *codec;
};
#endif // MAINWINDOW_H
【4】mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("Serial Tool");
//codec = QTextCodec::codecForName("UTF-8");
codec = QTextCodec::codecForName("GBK");//System( Simplified Chinese windows By default, the system refers to GBK code )
QTextCodec::setCodecForLocale(codec);
InitUI();// Initialize serial port
}
MainWindow::~MainWindow()
{
delete ui;
}
// Initialize control
void MainWindow::InitUI()
{
// Port name
for(int i=0;i<10;i++)
{
ui->CB_portname->addItem(QString("COM%1").arg(i));// To add text 【 Additional form 】
}
// Baud rate 【 Additional form 】
ui->CB_btl->addItem(QString("1200") ,QSerialPort::Baud1200);
ui->CB_btl->addItem(QString("2400") ,QSerialPort::Baud2400);
ui->CB_btl->addItem(QString("4800") ,QSerialPort::Baud4800);
ui->CB_btl->addItem(QString("9600") ,QSerialPort::Baud9600);
ui->CB_btl->addItem(QString("19200") ,QSerialPort::Baud19200);
ui->CB_btl->addItem(QString("115200") ,QSerialPort::Baud115200);
// Data bits
ui->CB_databit->addItem(QString("5"),QSerialPort::Data5);
ui->CB_databit->addItem(QString("6"),QSerialPort::Data6);
ui->CB_databit->addItem(QString("7"),QSerialPort::Data7);
ui->CB_databit->addItem(QString("8"),QSerialPort::Data8);
// Parity bit
ui->CB_jioubit->addItem(codec->toUnicode(" nothing "),QSerialPort::NoParity);
ui->CB_jioubit->addItem(codec->toUnicode(" p. "),QSerialPort::EvenParity);
ui->CB_jioubit->addItem(codec->toUnicode(" accidentally "),QSerialPort::OddParity);
// Stop bit
ui->CB_stopbit->addItem(QString("1"),QSerialPort::OneStop);
ui->CB_stopbit->addItem(QString("1.5"),QSerialPort::OneAndHalfStop);
ui->CB_stopbit->addItem(QString("2"),QSerialPort::TwoStop);
// flow control
ui->CB_flowctrl->addItem("None",QSerialPort::NoFlowControl);// nothing
ui->CB_flowctrl->addItem("RTS/CTS",QSerialPort::HardwareControl);// Hardware control
ui->CB_flowctrl->addItem("XON/XOFF",QSerialPort::SoftwareControl);// Software control
}
【5】mainwindow.ui
【6】 Running effect
Love YOU
边栏推荐
- TCP擁塞控制詳解 | 3. 設計空間
- Détails du contrôle de la congestion TCP | 3. Espace de conception
- First!! Is lancet hungry? Official documents
- Embedded development: seven reasons to avoid open source software
- Pyinstaller is not an internal or external command, nor is it a runnable program or batch file
- 8个酷炫可视化图表,快速写出老板爱看的可视化分析报告
- Q2 encryption market investment and financing report in 2022: gamefi becomes an investment keyword
- "Remake Apple product UI with Android" (3) - elegant statistical chart
- App mobile terminal test [3] ADB command
- The accept attribute of the El upload upload component restricts the file type (detailed explanation of the case)
猜你喜欢
【Proteus仿真】74HC595+74LS154驱动显示16X16点阵
拼夕夕二面:说说布隆过滤器与布谷鸟过滤器?应用场景?我懵了。。
MongoDB 的安装和基本操作
Basis of target detection (IOU)
记一次jar包冲突解决过程
How to use AAB to APK and APK to AAB of Google play apps on the shelves
Explore Cassandra's decentralized distributed architecture
Remote file contains actual operation
Function introduction of JMeter thread group
Salary 3000, monthly income 40000 by "video editing": people who can make money never rely on hard work!
随机推荐
[solved] access denied for user 'root' @ 'localhost' (using password: yes)
Basis of target detection (IOU)
One article takes you to understand machine learning
六月 致 -.-- -..- -
Explore Cassandra's decentralized distributed architecture
Cocos Creator 2. X automatic packaging (build + compile)
LeetCode1491. Average value of wages after removing the minimum wage and the maximum wage
Low level version of drawing interface (explain each step in detail)
用通达信炒股开户安全吗?
记一次jar包冲突解决过程
Cocos Creator 2.x 自动打包(构建 + 编译)
Golang 匿名函数使用
利用MySQL中的乐观锁和悲观锁实现分布式锁
Using optimistic lock and pessimistic lock in MySQL to realize distributed lock
如何在本机搭建SVN服务器
Break through 1million, sword finger 2million!
"Remake Apple product UI with Android" (2) -- silky Appstore card transition animation
[combinatorics] combinatorial identities (sum of variable terms 3 combinatorial identities | sum of variable terms 4 combinatorial identities | binomial theorem + derivation to prove combinatorial ide
Pychart error updating package list: connect timed out
Myopia: take off or match glasses? These problems must be understood clearly first