【串口通信】字符串发送与十六进制发送的区别
来源:互联网 发布:linux ioremap 失败 编辑:程序博客网 时间:2024/05/16 03:56
注意:由于char类型的取值范围为-128-+127,所以在接收十六进制发送的数据时为防止溢出,接收数据类型最好定义为unsigned char,其取值范围为0-255。
在计算机中,数据是以二进制的形式存储的,例如十进制 1(10进制)在计算机中用 0000 0001(2进制)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。
例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:
(1)字符串发送
串口以字符串发送数据,首先将字符串转化为二进制,格式如下:
0100 0001 0011 1000 0011 0101 0011 0010 0011 0000 00110001 0011 0000 0011 0001
A(0x41) 8 5 2 0 1 0 1
0011 0000 0011 0000 0011 0000 0011 0000 0100 0001 0011 1001 0011 0001 0100 0001
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
(3)数据转换
任何数据在计算机内部都是以二进制保存的,所以进制与数据的存储无关,只与输入输出有关。所以,对于进制转换,我们只关心字符串中的结果。
比如我想发送一个十六进制的字符数组,但是char 型和int 型的数据不必要转为0X类型,char型数据类型可同时存储字符或十进制数值,所以可统一用char[]存储,
然后即可发送。
/* UTC time */ //不必要将int型变量转为整型十六进制表示,可直接与0xff求与,只关心结果,转换过程在计算机内部处理 time_t tm; unsigned char buffer[10]; tm = time(NULL); printf("%d:%x\n",(int)tm,(unsigned int)tm); buffer[0] = ( tm & 0xFF ); buffer[1] = ( tm & 0xFF00 ) >> 8; buffer[2] = ( tm & 0xFF0000 ) >> 16; buffer[3] = ( tm & 0xFF000000 ) >> 24;
//虽然buf定义了几个十六进制元素,但填充后面的元素并不需要转换为十六进制来表示,直接赋值即可unsigned char buf[20] = {0xAB,0x3C,0x02};char *str = "asd2bc";buf[3] = str[0]; // abuf[4] = str[1]; // sbuf[5] = str[2]; // dbuf[6] = str[3]; // 2buf[7] = str[4]; // bbuf[8] = str[5]; // csend(fd,buf,ntypes); //TCP发送数据
- 【串口通信】字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 举例说明串口发送数据——字符串发送与十六进制发送的区别
- 举例说明串口发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 串口(调试助手)发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 十六进制发送与字符发送的区别
- TCP模拟串口十六进制数据的发送与接收
- 十六进制串口发送
- QT实现串口的十六进制发送
- vb mscomm1串口通信接收发送十六进制数据
- 串口通信程序中十六进制格式发送和接收实现
- 串口通信程序中十六进制格式发送和接收实现
- 串口通信程序中十六进制格式发送和接收实现
- 51单片机串口通信的发送与接收(转)
- linux下最常用命令
- java MD5加码
- 如何解决谷歌Chrome浏览器第三方扩展程序已停用
- 蓝桥杯PREV-6翻硬币(贪心)
- jQuery的CheckBox全选反选时,勾选失效的问题
- 【串口通信】字符串发送与十六进制发送的区别
- 关于这段时间翻译的一点感悟
- sql优化技巧
- 529. Minesweeper\74. Search a 2D Matrix
- OpenGL核心技术之法线贴图
- MySql数据库相关问题整理
- IDEA项目中实现伪分布的MapReduce作业的问题
- Android手势密码view笔记(一)
- REDIS安装以及日常使用