Serial.print()函数与Serial.write()函数的区别

Arduino 的Serial.print()函数与Serial.write()函数的区别

1. 在发送数值类型数据时的区别

首先你需要理解这两句话:
Serial.print() 发送的是字符,
Serial.write() 发送的字节.
例 1.发送十进制的数据 int i=97;分别用Serial.print()函数与Serial.write()函数发送:
在程序演示之前,我先推算一下运算过程:
用Serial.print() 发送的过程 【int 97 ——转化为两个字符型数据char 9、和char 7——(以char 9为例)Serial.print() 发送字符9的ascii码(00111001)—— 串口监视器接收到ascii码,则会显示对应的字符即9.——字符char 7过程相同,即结果为97】
用Serial.write() 发送的过程 【int 97 ——Serial.write() 发送97的ascii码(10010111)——串口监视器接收到ascii码,则会显示对应的字符即a,以十六进制显示的话为(0x61)】

int i = 97 ;
void setup() 
{ 
 Serial.begin( 9600 );
Serial.print( i );
delay( 10 );
Serial.write( i );
}
void loop()
{
}

结果为 97 a
例 2.发送十六进制的数据 int i=0x7A;分别用Serial.print()函数与Serial.write()函数发送:
在程序演示之前,我先推算一下运算过程:
用Serial.print() 发送的过程 【int 0x7A ——转化十进制122——转化为三个字符型数据char 1、char 2和char 2——接下来的转化与例一相同——结果为122、如果以十六进制显示的话为( 31 32 32)】
用Serial.write() 发送的过程 【int 0x7A ——Serial.write() 发送7A的ascii码(01111010)——串口监视器接收到ascii码,则会显示对应的字符即z,以十六进制显示的话为(0x7A)】

int  i =  0x7A ;
void setup() 
{ 
 Serial.begin( 9600 );
Serial.print( i  );
delay(10);
Serial.write( i );
}
void loop()
{
}

以十六进制显示
正常显示

发送字符型数据时没有区别

  • 32
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值