018_STM32程序移植之_串口接收中文

在这里插入图片描述
在这里插入图片描述
(五)从上面两点来看,一个中文占据两个数据,也就是说当我们发送“你好”给单片机时候实际中断了四次,接收到的数据分别为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[2]);
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[4] = {0xc4,0xe3,0xba,0xc3};
    char str[100];
                  /*输入数组  长度  返回保存地址*/
    char *str4 = Chinese(table,4,str);
    printf("%s\r\n",str4);
}

int convert_data(int table[2])        /*接收的两个数据转换成为一个数据*/
{
    return (table[1] << 8)|table[0];
}

char *Chinese(int table[],char length,char str[])        /*将数据放进去得到字符出来*/
{
    int i = 0;
    int data1[1];
    char data2[100];
    data1[0] = (table[i + 1] << 8)|table[i];            
    sprintf(data2,"%s",data1);
    strcpy(str,data2);                                /*先取第一个中文先*/
    for(i = 2;i < length; i = i + 2)
    {
        data1[0] = (table[i + 1] << 8)|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
在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值