码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-11-22 00:09:00      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:就是   可以转化   技术   出错   span   har   class   编译   char   

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

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

(三)示例情况,用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++来编译的,哪里都可以定义数组那些,如果出错请自行修改将定义放到前面来。

技术分享图片
 1 #include <stdio.h>
 2 #include <string.h>
 3 using namespace std;
 4 char *Chinese(int table[],char length,char str[]);        /*将数据放进去得到字符出来*/
 5 int convert_data(int table[2]);
 6 void main(void)
 7 {
 8     /*GB2312,你的代码是0xe3c4,好的代码是0xc3ba,具体的可以使用软件Hex Editor来看看*/
 9     int test1[] = {0xe3c4};    /**/
10     printf("%s\r\n",test1);
11     int test2[] = {0xc3ba};    /**/
12     printf("%s\r\n",test2);
13 
14     /*单片机发送或者接收到“你好”,会得到下面四个数据,将下面四个数据转换成中文“你好”*/
15     int table[4] = {0xc4,0xe3,0xba,0xc3};
16     char str[100];
17                   /*输入数组  长度  返回保存地址*/
18     char *str4 = Chinese(table,4,str);
19     printf("%s\r\n",str4);
20 }
21 
22 int convert_data(int table[2])        /*接收的两个数据转换成为一个数据*/
23 {
24     return (table[1] << 8)|table[0];
25 }
26 
27 char *Chinese(int table[],char length,char str[])        /*将数据放进去得到字符出来*/
28 {
29     int i = 0;
30     int data1[1];
31     char data2[100];
32     data1[0] = (table[i + 1] << 8)|table[i];            
33     sprintf(data2,"%s",data1);
34     strcpy(str,data2);                                /*先取第一个中文先*/
35     for(i = 2;i < length; i = i + 2)
36     {
37         data1[0] = (table[i + 1] << 8)|table[i];    /*将0xc4,0xe3弄成0xe3c4,将0xba,0xc3换成0xc3ba*/
38         sprintf(data2,"%s",data1);
39         strcat(str,data2);
40     }
41 
42     return str;
43 }
View Code

 编译运行的结果

技术分享图片

 

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

标签:就是   可以转化   技术   出错   span   har   class   编译   char   

原文地址:https://www.cnblogs.com/luxiaoguogege/p/9998255.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!