首页 > 其他分享 >Arduino串口输出函数print()和write()的联系和区别

Arduino串口输出函数print()和write()的联系和区别

时间:2025-01-02 12:52:55浏览次数:1  
标签:输出 打印输出 Arduino write 123 串口 print Serial

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
     print()可以指定输出进制,默认ASCII文本输出 3、当参数时浮点型数值时,write()不能工作,print()根据第二个参数显示小数位数,默认两位。详见附件

  

附录:官方文档

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()将返回写入的字节数,但是否使用(或读出)这个数字是可设定的

 

标签:输出,打印输出,Arduino,write,123,串口,print,Serial
From: https://www.cnblogs.com/sharer/p/18647407

相关文章

  • 01xArduino程序基础
    Arduino程序基础使用C++编程,基本参考C++语法。每一句结尾用分号,注释用//,全大写单词是特有字符,不要乱用。函数用{}套起来。voidsetup(){//putyoursetupcodehere,torunonce://这里的代码在开始的时候运行一次codedoingsomething;//每一行代码......
  • 使用Arduino, Python, Lua等来做单片机开发等同于走绝路!
    一,首先问一下:你们知道Arduino,Python,Lua等做单片机开发到底是什么原理?这边给出一个Lua的:  https://www.cnblogs.com/yangfengwu/p/9315841.html实际上就是说Arduino,Python,Lua做开发是调用的别人使用C语言封装的函数!现在思考下:1,别人能100%的把单片机的所有功能......
  • 串口 RS-485/RS-422 . RS-232 区别/比较/接线图
    串口RS-485/RS-422.RS-232区别/比较/接线图  一、串口接线RS-232:RXD,TXD连线TXD,RXDRS-485: A,B连线A,BRS-422:RX-A,RX-B,TX-A,TX-B 连线 TX-A,TX-B,RX-A,RX-B RS-232 :RXD,TXD连线TXD,RXDRS-485 : A,B连线A,BRS-422......
  • WinForm通过反射调用dll中的串口传参数并获取返回值
    现有一dll文件MyDll.dll,里边封装了一窗口FormA,现通过FormB调用MyDll.dll中的FormA窗口,传入参数并获取到FormA的返回值(通过FormA中的按钮触发,通过FormB中的委托方法实现返回值)1.MyDll.dll文件中的FormA方法定义委托方法和该委托的事件publicdelegatevoidfrm......
  • 串口DMA配置错误笔记 —— 已解决
    一、DMA发送        1、配置问题        2、发送问题二、DMA接收        1、配置问题        2、接收问题一、DMA发送1、配置问题    使用DMA发送时需要将DMA配置成内存到寄存器搬运,关闭寄存器的地址增长,如果要搬运的多个字......
  • StreamWriter出现下面错误“正由另一进程使用,因此该进程无法访问该文件”
    原文链接1:https://blog.csdn.net/bingtingabc/article/details/3280190原文链接2:https://blog.csdn.net/youdaodao/article/details/84756175?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-847561......
  • STM32 学习笔记(八)USART串口
    该系列为笔者在学习STM32过程(主线是江科大的视频)中的记录与发散思考。初学难免有所纰漏、错误,还望大家不吝指正,感谢~1.通信接口与串口通信1.1通信接口概述通信接口是用于设备间传输数据的硬件接口。常见的通信接口包括并行接口和串行接口。双工:全双工可以同时接收、发......
  • rfc2217虚拟串口
    记录烧录esp8266的配置.${IDF_PAH}\components\esptool_py\esptool\esptool.py DEFAULT_TIMEOUT=3                  #timeoutformostflashoperationsSTART_FLASH_TIMEOUT=20             #timeoutforstartingflash(mayperfo......
  • HAL库教程:串口+定时器接收不定长数据适用Modbus
    串口接收到的两组数据之间,通常会有一定的时间间隔。我们可以通过判断这个间隔来实现无结束符和无固定长度的串口数据接收功能。当串口在设定的时间内没有接收到新的数据时,认为一组数据已经接收完毕。在一些通信协议中,可能会指定数据之间的间隔时间。例如,Modbus协议要求两组数......
  • UE4.27, 揣摩源码, 序列化 (二) FBitReader, FBitWriter
    2. 继续看bit序列化,这个设计是网络传输的关键一环//FBitReader, FBitWriter这两个类仅被网络相关的事务使用//Thisclassisexclusivelyusedbythenetcode2.1.SVO和array的正反序列化相同,内部都存在着,对类型是TAarry<uint8>的字节单位的内存的处理......