arduino串口监视器中的乱码来源
我们常常会发现,用arduino向串口监视器发送的数值总是乱码。比如我们读取的模拟口的数值就会在数值小的时候为方块,数值大的时候则是乱七八糟的符号。这是什么原因呢?貌似怎么调整串口的设置都不能解决。
其实,这个问题关键在Serial.write()和Serial.print()的机制不同。
1、Serial.write()的机制
Serial.write():发送是实际数值,比如write(1),则系统发送1,但串口监视器在显示的时候会查找这个数值的对应ASCII码表,找到这个数值对应的ASCII符号后再将其显示,0-32代表的是控制字符或通讯专用字符,不对应数字或字母,因此才会显示一个方块,同理超过126的则会显示为乱七八糟的符号。
例如:
Serial.write(33);
监视器端会显示:
!
ASCII码表
2、Serial.print()的机制
与上面的write不同:
Serial.print():发送1时,实际发送的是1对应的ASCII码值(也就是49),即存在一个编码(encode)过程。串口监视器接收后显示的时候也会根据ASCII码表反编码(decode)回来,因此显示的仍然是1。同理,Serial.pirntln也一样。
例如:
Serial.print(33)
监视器端显示:
33
有关Serial.print可以带两个参数,一个数值参数,一个格式参数,如:
Serial.print(33,HEX)
Serial.print(33,OCT)
Serial.print(33,BIN)
则会在监视器端显示:
hex: 21, oct: 41, bin: 100001
3、有关数值的解析Serial.parseInt()
需要注意的点:
这里显示的1代表的是字符,如果我们的目的是输入数字1,最终读取为也是数字1,则须使用Serial.parseInt(),从字符串中解析出整数。
arduino串口监视器中的乱码来源相关推荐
- ESP8266 Arduino 串口监视器输出乱码原因
最近在学习ESP8266 Arduino的时候,发现串口输出乱码,原因是串口波特率不匹配,一般Arduino默认9600波特率,图示如下: 而ESP8266 波特率是115200,也有可能是其他波特率 ...
- arduino串口监视器显示nan_Arduino小白的学习记录:双色LED灯实验
一.介绍 双色发光二极管(LED)能够发出两种不同颜色的光,通常是红的和绿色的,而不是仅有一种颜色.它采用3mm或5mm环氧树脂封装.它有3个引脚,共阴极或者共阳极可用.双色LED具有两个LED端子或 ...
- arduino串口监视器显示nan_进阶教程1:Arduino串口通信与电脑控制LED
本专栏内容经修订后,已在豆瓣阅读集结成书出版: https://read.douban.com/ebook/106875966/read.douban.com 我是潘,曾经是个工程师.这是为 htt ...
- arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器
摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...
- arduino 串口监视器数据传到本地txt文件
python 一.准备 arduino 的串口监视器能够传输数据 python 运行程序出现报错 在arduino 烧入程序后不要打开串口,运行程序.(串口和程序只能开一个)关闭串口打开程序:打开程序 ...
- arduino 串口监视器乱码问题
我写了一个程序,之前一直是好好的,然后我做了微调,再次烧近板子里面就是这样子,先显示了时间戳timetamp,然后等个大概10s钟,就显示后面的乱码: 我其实没有调整太多,就是: 把一个函数里面的de ...
- [Arduino]串口监视器的乱码问题
1.尝试在初始化串口通信时,将波特率设置为9600 2.尝试在print前加delay()
- arduino串口监视器显示nan_【Arduino】初识Arduino
点击上方蓝字关注我们 Arduino是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于" ...
- MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据
MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据 [目录] - 1.无线通信模块设置 - 1.1 设置参数 - 1.2 调试步骤 - 2.按键与通信格式 - 2.1 P ...
最新文章
- Linux下使用system()函数一定要谨慎
- linux iptables导致httpd网页打不开
- Elasticsearch-Jest 配置ES集群源码解读
- 子模板继承父模板示例_模板设计模式示例
- 前端学习(642):字面量
- mysql 导入 sqlite_Mysql 数据导入SQlite
- javascript Blob
- 吴恩达神经网络和深度学习-学习笔记-29-卷积的基础知识
- linux命令kill_什么是Linux中的kill命令?
- background:	radial-gradient径向渐变
- 未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。
- 发送需要smtp认证的邮件
- 失态的三星正在把华为手机送上全球第一宝座
- 指纹识别综述(9): 指纹系统安全
- 如何通过织云Lite愉快地玩转TSW
- 金属管材光纤激光切管机提高电瓶车制造水平
- 追踪货拉拉:“亡羊补牢”进度缓慢,安全“地雷”何时能拆完?
- 讯飞sdk语音合成测试用例(linux版)
- Rancher 2.2 GA:企业进入应用跨多K8S集群、混合云部署新时代
- Python 详解计算 Median Absolute Deviation(绝对中位偏差)| 还可用于异常值检测
热门文章
- Oracle—deallocate unused释放高水位空间(二)
- 不刷卡,不扫码,微信推出刷掌支付;AI“黑箱”被打开?谷歌找到大模型能力涌现机制|极客头条
- 搜狗王小川说输入法的未来是自动问答,那么这个技术究竟发展得怎么样了?...
- 码农幸福指数:哪种编程语言最让人感到幸福?
- 开放式耳机漏音有多大?开放式耳机和封闭式耳机哪个音质好?
- java graphicsenvironment_如何确定GraphicsEnvironment是否存在
- CX2016SA16000D0HSSCC晶振满足汽车MCU多元化需求
- Win系统 - 为什么处理器选择英特尔,超线程又是什么?
- 系统管理Lesson 09: Managing Undo Data
- 【矩阵论】Hermite二次型(3)