(一)在平时数据传输中很少用到接收中文的情况,但是最近需要用到就花了半天时间来弄弄

(二)接收原理,从现在接收情况分析:一个中文占两个数据的空间,也就是两个十六进制可以转化成为一个中文

(三)示例情况,用Hex Editor来看看中文 “你好”,可以看到四个十六进制数据:0xc4,0xe3,0xba,0xc3

(四)我们的目的还是单片机通过串口来进行数据的接收,用CH340短接T和R看看发送“你好”也是会接收到十六进制0xc4,0xe3,0xba,0xc3

(五)从上面两点来看,一个中文占据两个数据,也就是说当我们发送“你好”给单片机时候实际中断了四次,接收到的数据分别为0xc4,0xe3,0xba,0xc3

   那么我们就可以通过接收到的数据来将数据转化成为中文了,搜索GB2312表可以知道对应的“你” = 0xe3c4;;  "好" = 0xc3ba

   也就是两位对应一个中文嘛,那么如何将0xc4,0xe3合成0xe3c4;;将0xba,0xc3合成0xc3ba,然后将数据转化成为字符形式就可使转化成为中文了

(六)通过C语言的方法来进行上面四个数据转化成为中文,我用的是VS中的C++来编译的,哪里都可以定义数组那些,如果出错请自行修改将定义放到前面来。

 #include <stdio.h>
#include <string.h>
using namespace std;
char *Chinese(int table[],char length,char str[]); /*将数据放进去得到字符出来*/
int convert_data(int table[]);
void main(void)
{
/*GB2312,你的代码是0xe3c4,好的代码是0xc3ba,具体的可以使用软件Hex Editor来看看*/
int test1[] = {0xe3c4}; /*你*/
printf("%s\r\n",test1);
int test2[] = {0xc3ba}; /*好*/
printf("%s\r\n",test2); /*单片机发送或者接收到“你好”,会得到下面四个数据,将下面四个数据转换成中文“你好”*/
int table[] = {0xc4,0xe3,0xba,0xc3};
char str[];
/*输入数组 长度 返回保存地址*/
char *str4 = Chinese(table,,str);
printf("%s\r\n",str4);
} int convert_data(int table[]) /*接收的两个数据转换成为一个数据*/
{
return (table[] << )|table[];
} char *Chinese(int table[],char length,char str[]) /*将数据放进去得到字符出来*/
{
int i = ;
int data1[];
char data2[];
data1[] = (table[i + ] << )|table[i];
sprintf(data2,"%s",data1);
strcpy(str,data2); /*先取第一个中文先*/
for(i = ;i < length; i = i + )
{
data1[] = (table[i + ] << )|table[i]; /*将0xc4,0xe3弄成0xe3c4,将0xba,0xc3换成0xc3ba*/
sprintf(data2,"%s",data1);
strcat(str,data2);
} return str;
}

编译运行的结果

(七)STM32串口接收中文

(1)资料下载:https://download.csdn.net/download/xiaoguoge11/10804315

(2)视频演示:https://v.qq.com/x/page/g0800sirmx3.html

(3)更多资料下载,关注公众号:luxiaoguogege

018_STM32程序移植之_串口接收中文的更多相关文章

  1. 011_STM32程序移植之_内部flash开机次数管理

    011_STM32程序移植之_内部flash开机次数管理 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 ...

  2. 012_STM32程序移植之_内部flash开机次数管理lib库建立

    012_STM32程序移植之_内部flash开机次数管理lib库建立 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH ...

  3. 009_STM32程序移植之_内部falsh

    flash  模拟  EEPROM  实验 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC---- ...

  4. 016_STM32程序移植之_舵机

    STM32程序移植之舵机PWM测试 接线图如下: STM32引脚 舵机引脚 功能 GND GND 正极电源 具体看舵机的额定电压 PA6 PWM引脚 STM32引脚 CH340引脚 GND GND 3 ...

  5. 007_STM32程序移植之_多通道ADC转换

    1. 测试环境:STM32C8T6 2. 测试:使用DMA进行多通道ADC转换 3. 描述:用 ADC 连续采集 12 路模拟信号,并由 DMA 传输到内存.ADC 配置为扫描 并且连续转换模式,AD ...

  6. 基于Verilog的串口接收程序

    一.模块框图及基本思路 detect_module:检测输入引脚的下降沿,以此判断一帧数据的开始 rx_bps_module:波特率时钟产生模块 rx_control_module:串口接收的核心控制 ...

  7. 第011课_串口(UART)的使用

    from: 第011课_串口(UART)的使用 第001节_辅线1_硬件知识_UART硬件介绍 1. 串口的硬件介绍 UART的全称是 Universal Asynchronous Receiver ...

  8. Simulink S-Function的使用(以串口接收MPU6050六轴陀螺仪参数为实例)

    S-Function 允许使用自定义C/C++函数作为传递函数,具有可移植性.也可以同样利用MATLAB函数进行相同的运算,看开发者熟悉程度而定. 项目流程 由系统串口接收数据包. 通过S-Funct ...

  9. STM32串口接收不定长数据原理与源程序(转)

    今天说一下STM32单片机的接收不定长度字节数据的方法.由于STM32单片机带IDLE中断,所以利用这个中断,可以接收不定长字节的数据,由于STM32属于ARM单片机,所以这篇文章的方法也适合其他的A ...

随机推荐

  1. C++Primer 5th Chap6 Functions

    局部静态变量,关键字static修饰,即使函数结束执行也不受影响,生存期直到程序终止. java中static的单一存储空间的概念与其或有异曲同工之妙. 函数的形参可以无名,但有名可以使其意义更加清晰 ...

  2. k8s系列0--Kubernetes基础知识

    Kubernetes介绍 参考:Kubernetes核心组件解析 Pod是k8s的最小调度单元 每个pod有独立的IP,但是pod的IP是不可靠的,重新调度pod就会改变IP,service概念就是为 ...

  3. Educational Codeforces Round 65 (Rated for Div. 2)

    A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...

  4. JS基础_this

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. Linux 命令集锦

    linux 一切从根开始,一切皆文件~ 让我们从一些命令开始了解吧 基本命令 man  command:manual:查看命令帮助手册 ls:list:查看当前文件夹下的内容 -a 查看所有内容,包含 ...

  6. 2、JDK8中的HashMap实现原理及源码分析

    本篇提纲.png 本篇所述源码基于JDK1.8.0_121 在写上一篇线性表的文章的时候,笔者看的是Android源码中support24中的Java代码,当时发现这个ArrayList和Linked ...

  7. ajax检查用户名重复

    1.获取ajax对象 new XMLHttpRequest(); IE6-8: new ActiveXOject("Microsoft.XMLHTTP"); 兼容判断:if(XML ...

  8. 巧用flex(一)

    在开发中我们经常遇到一个页面头部内容固定顶部,中间内容可滚动的需求,一般的逻辑就是把头部内容通过position以及z-index固定位置,提高层级,然后中间内容设置距离顶部一定距离,这样的效果是侧边 ...

  9. web中间件

    0x00 Web中间件概述 通俗来说,中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通.Apache的Tomcat.IBM公司的WebSphere.BEA公司的WebLogic ...

  10. 【Hibernate】检索方式

    一.概述 二.HQL 2.1 简介 2.2 查询所有记录 2.3 查询使用别名 2.4 排序 2.5 分页查询 2.6 单个对象查询 2.7 参数绑定 2.8 投影操作 2.9 模糊查询 2.10 S ...