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

串口发送数据——字符串发送与十六进制发送的区别

时间:2017-07-07 00:50:35      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:pop   rac   clear   表示   net   idt   cpp   .net   comment   

转自:http://blog.csdn.net/wityy/article/details/8234739
 串口发送数据——字符串发送与十六进制发送的区别
       
        在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。关于两者的区别,需要从计算机存储数据的格式说起。

        在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。

例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:

(1)字符串发送

         串口以字符串发送数据,首先将字符串转化为二进制,格式如下:

          0000 1010     0000 1000    0000 0110    0000 0010    0000 0000   0000 0001   0000 0000    0000 0001 

                A                   8                  5                      2                    0                1                    0                    1

 

          0000 0000     0000 0000   0000 0000    0000 0000     0000 1010    0000 1001    0000 0001    0000 1010

                          0                   0                     0                   0                    A                   9                   1                   A

         然后按照8位(串口设置数据位为8位)形式将数据发送出去。

         串口接收的数据格式如下:

              

 

编号

数据内容

编号

数据内容

0

A

8

0

1

8

9

0

2

5

10

0

3

2

11

0

4

0

12

A

5

1

13

9

6

0

14

1

7

1

15

A

 

 (2)十六进制发送数据

          串口以十六进制发送数据,首先将数据转化为:

          1010 1000     0110 0010    0000 0001     0000 0001    0000 0000    0000 0000     1010 1001     0001 1010

              0XA8            0X52               0X01             0X01              0X00           0X00                0XA9            0X1A 

         然后按照8位(串口设置数据位为8位)形式将数据发送出去。

         串口接收的数据格式如下:

 

编号

数据内容

编号

数据内容

0

A8

4

00

1

52

5

00

2

01

6

A9

3

01

7

1A

 

 

          仔细对照接收结果就很容易明白字符串发送和十六进制发送的区别了。

 

附转换:

  1. //转换每一个字符为正真的16进制数值  
  2.     char Widget::ConvertHexChar(char ch)    
  3.     {    
  4.         if((ch >= ‘0‘) && (ch <= ‘9‘))    
  5.             return ch-0x30;    
  6.         else if((ch >= ‘A‘) && (ch <= ‘F‘))    
  7.             return ch-‘A‘+10;    
  8.         else if((ch >= ‘a‘) && (ch <= ‘f‘))    
  9.             return ch-‘a‘+10;    
  10.         else return (-1);    
  11.     }    

串口发送数据——字符串发送与十六进制发送的区别

标签:pop   rac   clear   表示   net   idt   cpp   .net   comment   

原文地址:http://www.cnblogs.com/changbaishan/p/7129146.html

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