"); //-->
打开串口
参数:
speed :波特率
2.Serial.available()获取串口上可读取的数据的字节数。该数据是指已经到达并存储在接收缓存(共有64字节)中。available()继承自Stream实用类。
语法:
Serial.available()
参数:
无
返回值:
返回可读取的字节数
示例:
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
3.Serial.read()读串口数据,read()继承自Stream实用类。 语法:
Serial.read()
参数:
无
返回值:
串口上第一个可读取的字节(如果没有可读取的数据则返回-1)- int型。
示例:
int incomingByte = 0; // 用于存储从串口读到的数据 void setup() { Serial.begin(9600); // 打开串吕,设置速率为9600 bps} void loop() { // 只在收到数据时发送数据 if (Serial.available() > 0) { // 读取传入的字节 incomingByte = Serial.read(); // 指示你收到的数据 Serial.print("I received: "); Serial.println(incomingByte, DEC); } }4.Serial.flush()
刷新串口数据,等待串口数据完成输出。
5.Serial.print()往串口发数据,无换行 描述
以人类可读的ASCII码形式向串口发送数据,该函数有多种格式。整数的每一数位将以ASCII码形式发送。浮点数同样以ASCII码形式发送,默认保留小数点后两位。字节型数据将以单个字符形式发送。字符和字符串会以其相应的形式发送。例如:
Serial.print(78) 发送 "78"
Serial.print(1.23456) 发送 "1.23"
Serial.print('N') 发送 "N"
Serial.print("Hello world.") 发送 "Hello world."
可选的第二个参数用于指定数据的格式。允许的值为:BIN (binary二进制), OCT (octal八进制), DEC (decimal十进制), HEX (hexadecimal十六进制)。对于浮点数,该参数指定小数点的位数。例如:
Serial.print(78, BIN) gives "1001110"
Serial.print(78, OCT) gives "116"
Serial.print(78, DEC) gives "78"
Serial.print(78, HEX) gives "4E"
Serial.println(1.23456, 0) gives "1"
Serial.println(1.23456, 2) gives "1.23"
Serial.println(1.23456, 4) gives "1.2346"
你可以用F()把待发送的字符串包装到flash存储器。例如:
Serial.print(F(“Hello World”))
要发送单个字节数据,请使用Serial.write()。
添加 F() 相当于为字符串常量定义了PROGMEM属性,常量字符串仍然存储在FLASH中,但是程序运行时不会再将常量字符串从FLASH中copy到SRAM中,而是直接读取FLASH中的字符串,这样一来就节约了SRAM,但是代码运行速度就下降了。
语法:
Serial.print(val)
Serial.print(val, format)
参数:
val: 要发送的数据(任何数据类型)
format: 指定数字的基数(用于整型数)或者小数的位数(用于浮点数)。
返回值:
size_t (long): print()返回发送的字节数(可丢弃该返回值)。
示例:
/*
Uses a FOR loop for data and prints a number in various formats.
*/
int x = 0; // variable
void setup() {
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop() {
// print labels
Serial.print("NO FORMAT"); // prints a label
Serial.print("\t"); // prints a tab
Serial.print("DEC");
Serial.print("\t");
Serial.print("HEX");
Serial.print("\t");
Serial.print("OCT");
Serial.print("\t");
Serial.print("BIN");
Serial.print("\t");
for(x=0; x< 64; x++){ // only part of the ASCII chart, change to suit
// print it out in many formats:
Serial.print(x); // print as an ASCII-encoded decimal - same as "DEC"
Serial.print("\t"); // prints a tab
Serial.print(x, DEC); // print as an ASCII-encoded decimal
Serial.print("\t"); // prints a tab
Serial.print(x, HEX); // print as an ASCII-encoded hexadecimal
Serial.print("\t"); // prints a tab
Serial.print(x, OCT); // print as an ASCII-encoded octal
Serial.print("\t"); // prints a tab
Serial.println(x, BIN); // print as an ASCII-encoded binary
// then adds the carriage return with "println"
delay(200); // delay 200 milliseconds
}
Serial.println(""); // prints another carriage return
}
6.Serial.println()往串口发数据,类似Serial.print(),但有换行。
7.Serial.write()写二进制数据到串口,数据是一个字节一个字节地发送的,若以字符形式发送数字请使用print()代替。
语法:
Serial.write(val)
Serial.write(str)
Serial.write(buf, len)
参数:
val: 作为单个字节发送的数据
str: 由一系列字节组成的字符串
buf: 同一系列字节组成的数组
len: 要发送的数组的长度
返回:
write()会返回发送的字节数,所以读取该返回值是可选的。
示例:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.write(45); //以二进制形式发送数字45
int bytesSent = Serial.write(“hello”); //发送字符串“hello” 并返回该字符串的长度。
}
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。