举例说明串口发送数据——字符串发送与十六进制发送的区别
来源:互联网 发布:阿里云备案寄几张资料 编辑:程序博客网 时间:2024/06/05 10:56
在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。关于两者的区别,需要从计算机存储数据的格式说起。
在计算机中,数据是以二进制的形式存储的,例如十进制 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
仔细对照接收结果就很容易明白字符串发送和十六进制发送的区别了。下面用Arduino语言举例说明
文件sendtype.ino:
- #include <Wire.h>
- uint8_t buffer[] = "A852010100000000A91A";
- char val,i;
- void setup() {
- Serial.begin(9600);
- Wire.begin();
- }
- void loop(){
- val=Serial.read();
- if(val=='c')
- {
- for(i=0;i<20;i++)
- Serial.print(buffer[i]);
- //Serial.println("");
- }
- else if(val=='b')
- {
- Serial.write(buffer,20);
- //Serial.println("");
- }
- }
- 我用Arduino板MEGA 2560测试,结果如下
手动发送b,以十六进制形式发送Serial.write(buffer,20);下图是HEX显示
手动发送c.以字符形式发送Serial.print(buffer[i]);右图是HEX显示
通过上面的例子进一步说明,以什么形式发送数据完全取决于发送函数的处理,最终串口发出的都是一串二进制码。串口实验一定要注意波特率一致,特别是接蓝牙模块时,一般蓝牙模块出厂波特率都是9600,其它波特率需要发AT指令修改。
- 举例说明串口发送数据——字符串发送与十六进制发送的区别
- 举例说明串口发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 串口(调试助手)发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 串口发送数据——字符串发送与十六进制发送的区别
- 【串口通信】字符串发送与十六进制发送的区别
- 十六进制发送与字符发送的区别
- TCP模拟串口十六进制数据的发送与接收
- 十六进制串口发送
- QT 串口以十六进制发送数据
- Stm32串口发送字符串数据
- QT实现串口的十六进制发送
- python串口发送十六进制数
- STM32F10x的串口数据发送
- Java串口编程:串口数据的发送与监听读取
- FFmpeg rmvb demuxer中COOK 音频解析
- 补丁(patch)的制作与应用
- opencv 中的问题
- 万物萌新绿跑出我速度 PUMA 2014春夏“炫绿奔驰”系列生机上台
- eclipse编辑环境的美化——eclipse color theme的使用
- 举例说明串口发送数据——字符串发送与十六进制发送的区别
- js时间操作扩展总结
- python各种类型转换-int,str,char,float,ord,hex,oct等
- eclipse 项目 有个红叉 解决方法
- Python:用numpy扩充数组元素之repeat和tile
- 协同过滤推荐算法
- QByteArray与QString之间的转换
- repo的用法
- 黑马程序员--Java基础--08集合