Arduino串口输出函数print()和write()的联系和区别
write()传送的是ASCII的十进制的值(如65),而print()传送的是ASCII的文本(如A)
1、当参数是字符串时,两者效果相同。
因为write()先把字符文本转换成ASCII值,然后转译成ASCII文本,故与print()的效果相同
例如:print("abc")和write("abc")都输出:abc
print("123")和write("123')都输出:123
2、当二者参数都是int型数值时
print()直接输出int数值,如print(123)输出:123
write()会把数字转化成二进制,然后截取最后8bit组成1Byte输出
如write(123)输出"{",同时write(379)也输出"{",这是因为十进制123和379的对应二进制最后八位相同
十进制 |
二进制 |
123 | 0 0111 1011 |
379 | 1 0111 1011 |
附录:官方文档
write()
写入二级制数据到串口。发送的数据以一个字节或者一系列的字节为单位。如果写入的数字为字符,需使用print()命令进行代替。
语法
Serial.write(val)
Serial.write(str)
Serial.write(buf, len)
Arduino Mega还支持:Serial1,Serial2,Serial3 (替代Serial)
参数
val: 以单个字节形式发的值
str: 以一串字节的形式发送的字符串
buf: 以一串字节的形式发送的数组
len: 数组的长度
返回结果
byte
write() 将返回写入的字节数,但是否使用这个数字是可选的
print()
说明
以人们可读的ASCII文本形式打印数据到串口输出。此命令可以采取多种形式。每个数字的打印输出使用的是ASCII字符。浮点型同样打印输出的是ASCII字符,保留到小数点后两位。Bytes型则打印输出单个字符。字符和字符串原样打印输出。Serial.print()打印输出数据不换行,Serial.println()打印输出数据自动换行处理。例如
-
Serial.print(78)输出为“78”
-
Serial.print(1.23456)输出为“1.23”
-
Serial.print(“N”)输出为“N”
-
Serial.print(“Hello world.”)输出为“Hello world.”
也可以自己定义输出为几进制(格式);可以是BIN(二进制,或以2为基数),OCT(八进制,或以8为基数),DEC(十进制,或以10为基数),HEX(十六进制,或以16为基数)。对于浮点型数字,可以指定输出的小数数位。例如
-
Serial.print(78,BIN)输出为“1001110”
-
Serial.print(78,OCT)输出为“116”
-
Serial.print(78,DEC)输出为“78”
-
Serial.print(78,HEX)输出为“4E”
-
Serial.println(1.23456,0)输出为“1”
-
Serial.println(1.23456,2)输出为“1.23”
-
Serial.println(1.23456,4)输出为“1.2346”
你可以通过基于闪存的字符串来进行打印输出,将数据放入F()中,再放入Serial.print()。例如 Serial.print(F(“Hello world”)) 若要发送一个字节,则使用 Serial.write()。
语法
Serial.print(val)
Serial.print(val,格式)
参数
val:打印输出的值 - 任何数据类型
格式:指定进制(整数数据类型)或小数位数(浮点类型)
返回
字节 print()将返回写入的字节数,但是否使用(或读出)这个数字是可设定的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)