当前位置:网站首页>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
边栏推荐
- NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线
- TCP拥塞控制详解 | 3. 设计空间
- Mongodb installation and basic operation
- Cocos Creator 2. X automatic packaging (build + compile)
- First!! Is lancet hungry? Official documents
- Why does the std:: string operation perform poorly- Why do std::string operations perform poorly?
- 面试之 top k问题
- 关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
- SDNU_ ACM_ ICPC_ 2022_ Winter_ Practice_ 4th [individual]
- Golang 匿名函数使用
猜你喜欢
Famous blackmail software stops operation and releases decryption keys. Most hospital IOT devices have security vulnerabilities | global network security hotspot on February 14
Slam learning notes - build a complete gazebo multi machine simulation slam from scratch (I)
Project -- high concurrency memory pool
MongoDB 的安装和基本操作
线程池执行定时任务
Initial test of scikit learn Library
App mobile terminal test [4] APK operation
为抵制 7-Zip,列出 “三宗罪” ?网友:“第3个才是重点吧?”
ASEMI整流桥UMB10F参数,UMB10F规格,UMB10F封装
【声明】关于检索SogK1997而找到诸多网页爬虫结果这件事
随机推荐
面试之 top k问题
Thinking about telecommuting under the background of normalization of epidemic | community essay solicitation
[combinatorics] combinatorial identities (sum of variable terms 3 combinatorial identities | sum of variable terms 4 combinatorial identities | binomial theorem + derivation to prove combinatorial ide
Visual SLAM algorithms: a survey from 2010 to 2016
关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
SDNU_ ACM_ ICPC_ 2022_ Winter_ Practice_ 4th [individual]
From "zero sum game" to "positive sum game", PAAS triggered the third wave of cloud computing
手机注册股票开户安全吗 开户需要钱吗
【Proteus仿真】8×8LED点阵屏仿电梯数字滚动显示
Hibernate的缓存机制/会话级缓存机制
Pandora IOT development board learning (HAL Library) - Experiment 5 external interrupt experiment (learning notes)
Eleven requirements for test management post
From the 18th line to the first line, the new story of the network security industry
在ntpdate同步时间的时候出现“the NTP socket is in use, exiting”
8个酷炫可视化图表,快速写出老板爱看的可视化分析报告
探索Cassandra的去中心化分布式架构
App mobile terminal test [4] APK operation
[web security] - [SQL injection] - error detection injection
【LeetCode】94. Middle order traversal of binary tree
[combinatorics] summary of combinatorial identities (eleven combinatorial identities | proof methods of combinatorial identities | summation methods)*