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()
{
}