进阶之路(基础篇)-019Serial串口函数说明

更新时间:2023-05-23 14:43:09 阅读: 评论:0

进阶之路(基础篇)-019Serial串⼝函数说明送呈
本⽂总结了Arduino常⽤串⼝操作函数,函数说明部分来源于,⽰例与实验部分为⾃编。本⽂是对Arduino串⼝操作函数的较全⾯总结,可作为⼯具贴查找使⽤。
函数:if(Serial)
描述:
  指⽰指定的串⾏端⼝是否已就绪。
  在32u4基础板,if(Serial)指⽰USB CDC串⾏连接状态是否打开。对于所有其它情况下,如果在Leonardo板上始终返回true(真)。
  这是介绍Arduino 1.0.1。
语法:
  所有板⼦:if(Serial)
  如果是Arduino Leonardo:if(Seriall)
  如果是Arduino Mega:if (Serial1) ,if (Serial2) ,if (Serial3)
参数:⽆
返回值:
  布尔值(boolean):如果指定的串⾏端⼝可⽤,则返回true。只有在查询Leonardo的USB CDC串⾏连接准备就绪之前,此操作才会返回fal。
范例:
1void tup() {
2//Initialize rial and wait for port to open:
3  Serial.begin(9600);
4while (!Serial) {
5    ; // wait for rial port to connect. Needed for native USB
6  }
7 }
8
9void loop() {
10//proceed normally
11 }
函数:available()
描述:获取可从串⾏端⼝读取的字节数(字符)。这是已经到达并存储在串⾏接收缓冲区(其中包含64个字节)的数据个数。 available()从Stream实⽤程序类继承。
语法:
Serial.available()
只有:Arduino Mega
Serial1.available()
Serial2.available()
Serial3.available()
参数:⽆
返回值:串⼝被使⽤的字节数
通⽤范例:
1int incomingByte = 0;        // for incoming rial data
2void tup(){
3    Serial.begin(9600);    // opens rial port, ts data rate to 9600 bps
4 }
5void loop(){
6// nd data only when you receive data:
7if (Serial.available() > 0) {
8// read the incoming byte:
9    incomingByte = ad();
10// say what you got:
11    Serial.print("I received: ");
12    Serial.println(incomingByte, DEC);
13    }
14 }
  Arduino Mega 范例:
1void tup(){
2    Serial.begin(9600);
3    Seriall.begin(9600);
4 }
5void loop(){
6// read from port 0, nd to port 1:
7if(Serial.available()){
8int inByte = ad();
9        Serial1.print(inByte,BYTE);
10    }
11// read from port 1, nd to port 0:
12if(Serial1.available()){
13int inByte = ad();
14        Serial.print(inByte,BYTE);
15    }
16 }
函数:availableForWrite()
描述:获取可⽤于在串⾏缓冲区中写⼊的字节数(字符),⽽不会阻塞写⼊操作。
语法:
  Serial.availableForWrite()
  只有:Arduino Mega
    Serial1.availableForWrite()
    Serial2.availableForWrite()
    Serial3.availableForWrite()
参数:⽆
返回值:可写⼊的字节数
资本论的作者范例:⽆
函数:begin()
描述:
  设置串⾏数据传输的每秒位数(波特率)的数据速率。对于与计算机进⾏通信,请使⽤以下费率之⼀: 
300,600,1200,2400,4800,2600,800,400400,19200,2800800,3400400,57600或115200.然⽽,您可以指定其他费率 - 例如通过引脚0和1与需要特定波特率的组件进⾏通信。
  可选的第⼆个参数配置数据,奇偶校验位和停⽌位。默认值为8位数据位,⽆奇偶校验位,1位停⽌位。
语法:
  Serial.begin(speed)
  Serial.begin(speed, config)
  只有Arduino Mega:
  Serial1.begin(speed)
  Serial2.begin(speed)
  Serial3.begin(speed)
  Serial1.begin(speed, config)
  Serial2.begin(speed, config)
  Serial3.begin(speed, config)
参数:
speed:以秒为单位(波特) - long
config: 设置数据,奇偶校验位和停⽌位。有效值为:
1    speed:以秒为单位(波特) - long
2    config: 设置数据,奇偶校验位和停⽌位。有效值为:
3    SERIAL_5N1
4    SERIAL_6N1
5    SERIAL_7N1
6    SERIAL_8N1 (默认值)
7    SERIAL_5N2
8    SERIAL_6N2
9    SERIAL_7N2
10    SERIAL_8N2
11    SERIAL_5E1
12    SERIAL_6E1
13    SERIAL_7E1
14    SERIAL_8E1
汽车电子技术专业
15    SERIAL_5E2
16    SERIAL_6E2
17    SERIAL_7E2
18    SERIAL_8E2
19    SERIAL_5O1
20    SERIAL_6O1
21    SERIAL_7O1
22    SERIAL_8O1
23    SERIAL_5O2
24    SERIAL_6O2
25    SERIAL_7O2
26    SERIAL_8O2
返回值:没有
通⽤范例:
1void tup(){
2    Serial.begin(9600); // opens rial port, ts data rate to 9600 bps
3 }
4void loop(){}
Arduino Mega范例:
1// Arduino Mega using all four of its Serial ports
2// (Serial, Serial1, Serial2, Serial3),
3// with different baud rates:
4void tup(){
5    Serial.begin(9600);
6    Serial1.begin(38400);
7    Serial2.begin(19200);
8    Serial3.begin(4800);
9    Serial.println("Hello Computer");
10    Serial1.println("Hello Serial 1");
11    Serial2.println("Hello Serial 2");
12    Serial3.println("Hello Serial 3");
13 }
14void loop() {}
函数:end()
描述:禁⽤串⾏通信,允许RX和TX引脚⽤于⼀般输⼊和输出。要重新启⽤串⾏通信,请调⽤Serial.begin()。
语法:
  d()
  只有Arduino Mega:二胡技巧训练秘诀
  d()
  d()
  d()
参数:⽆
返回值:⽆
函数:Serial.find()
描述:Serial.find() 从串⾏缓冲器读取数据,直到找到给定长度的⽬标字符串。如果找到⽬标字符串,该函数返回true,如果超时,返回fal。
语法:Serial.find(target)
参数:target:要搜索的字符串(char)
返回值:(boolean)布尔
函数:Serial.findUntil()
描述:
  Serial.findUntil()从串⾏缓冲区读取数据,直到找到给定长度或终⽌符字符串的⽬标字符串。
  如果找到⽬标字符串,该函数返回true,如果超时,返回fal。
  Serial.findUntil()从Stream实⽤程序类继承。
语法:
  Serial.findUntil(target, terminal)
参数:
  target:要搜索的字符串(char)
  terminal :终端字符串在搜索(char)
返回值:boolean(布尔)
函数:flush()
描述:
  等待输出串⾏数据的传输完成。(在Arduino 1.0之前,这相反地删除了任何缓冲的输⼊串⾏数据。)
  flush()从Stream实⽤程序类继承。
语法:
  Serial.flush()
  只有Arduino Mega:政策性金融机构
  Serial1.flush()
  Serial2.flush()
  Serial3.flush()
参数:⽆
返回值:没有
函数:parFloat()
描述:
  Serial.parFloat()从串⾏缓冲区返回第⼀个有效的浮点数。不是数字(或减号)的字符被跳过。parFloat()由不是浮点数的第⼀个字符终⽌。
  Serial.parFloat()从Stream实⽤程序类继承。
语法:Serial.parFloat()
参数:⽆
返回值:flolt
函数:parInt()
描述:
  查找输⼊串⾏流中的下⼀个有效整数。parInt()从Stream实⽤程序类继承。
尤其是:
  不是数字或减号的初始字符被跳过;
  当没有字符被读取可配置的超时值或读取⾮数字时,解析停⽌;
  如果在超时(见Serial.tTimeout())时没有读取有效数字,则返回0;
语法:
  Serial.parInt()
  Serial.parInt(char skipChar)
  只有Arduino Mega:
  Serial1.parInt()
  Serial2.parInt()
  Serial3.parInt()
参数:skipChar:⽤于在搜索中跳过指⽰的字符。例如⽤于跳过数千个分频器。
返回值:long(下⼀个有效整数)
函数:peek()
描述:返回输⼊串⾏数据的下⼀个字节(字符),⽽不从内部串⾏缓冲区中删除它。也就是说,对peek()的连续调⽤将返回相同的字符,下⼀次调⽤read()也是如此。peek()从Stream实⽤程序类继承。
语法:
  Serial.peek()
  只有Arduino Mega:
  Serial1.peek()
  Serial2.peek()
  Serial3.peek()
参数:⽆
返回值:输⼊串⾏数据的第⼀个字节可⽤(如果没有数据可⽤,则为-1) - int
函数:print()
国际工人运动描述:
  将数据作为⼈造可读的ASCII⽂本打印到串⾏端⼝。此命令可以有多种形式。使⽤每个数字的ASCII字符打印数字。浮点类似地打印为ASCII数字,默认为两位⼩数。字节作为单个字符发送。字符和字符串按原样发送。例如:
  Serial.print(78) gives "78"
  Serial.print(1.23456) gives "1.23"
  Serial.print('N') gives "N"
  Serial.print("Hello world.") gives "Hello world."
  可选的第⼆个参数指定要使⽤的基础(格式); 允许的值为BIN(⼆进制或基数2),OCT(⼋进制或基数8),DEC(⼗进制或⼗进制),⼗六进制或⼗六进制。对于浮点数,该参数指定要使⽤的⼩数位数。例如:
  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()。例如:
  Serial.print(F(“Hello World”))
  要发送⼀个字节,请使⽤Serial.write()。
语法:
  Serial.print(val)
  Serial.print(val, format)
参数:
  val:要打印的值 - 任何数据类型
  format:指定基数(⽤于整数数据类型)或⼩数位数(⽤于浮点类型)
返回值:size_t(long):print()返回写⼊的字节数,通过读取该数字是可选的
范例:
1/*
2Us a FOR loop for data and prints a number in various formats.
3*/
4int x = 0;    // variable
5void tup(){
6    Serial.begin(9600);      // open the rial port at 9600 bps:
7 }
8void loop(){
9// print labels
10    Serial.print("NO FORMAT");      // prints a label
11    Serial.print("\t");              // prints a tab
边城翠翠12    Serial.print("DEC");
13    Serial.print("\t");
14    Serial.print("HEX");
15    Serial.print("\t");
16    Serial.print("OCT");
17    Serial.print("\t");
18    Serial.print("BIN");
19    Serial.print("\t");
20for(x=0; x< 64; x++){    // only part of the ASCII chart, change to suit
21// print it out in many formats:
22        Serial.print(x);      // print as an ASCII-encoded decimal - same as "DEC"
23        Serial.print("\t");    // prints a tab
24        Serial.print(x, DEC);  // print as an ASCII-encoded decimal
25        Serial.print("\t");    // prints a tab
26        Serial.print(x, HEX);  // print as an ASCII-encoded hexadecimal
27        Serial.print("\t");    // prints a tab
28        Serial.print(x, OCT);  // print as an ASCII-encoded octal
29        Serial.print("\t");    // prints a tab
30        Serial.println(x, BIN);  // print as an ASCII-encoded binary
31//then adds the carriage return with "println"
32        delay(200);            // delay 200 milliconds
33    }
34    Serial.println("");      // prints another carriage return
35 }
从版本1.0开始,串⾏传输是异步的; 在发送任何字符之前,Serial.print()将返回。
函数:println()
描述:将数据作为⼈造可读的ASCII⽂本,后跟⼀个回车字符(ASCII 13或'\ r')和换⾏符(ASCII 10或'\ n')打印到串⾏端⼝。此命令采⽤与Serial.print()相同的形式。
语法:
  Serial.println(val)
  Serial.println(val, format)
参数:
  val:要打印的值 - 任何数据类型
  format:指定基数(⽤于整数数据类型)或⼩数位数(⽤于浮点类型)
返回值:size_t(long):print()返回写⼊的字节数,通过读取该数字是可选的
范例:
1/*
2  Analog input
3 reads an analog input on analog in 0, prints the value out.
4 created 24 March 2006
5 by Tom Igoe
6*/
7int analogValue = 0;    // variable to hold the analog value
8void tup(){
9// open the rial port at 9600 bps:
10    Serial.begin(9600);
11 }
12void loop() {
13// read the analog input on pin 0:
14    analogValue = analogRead(0);
15// print it out in many formats:
16    Serial.println(analogValue);      // print as an ASCII-encoded decimal
17    Serial.println(analogValue, DEC);  // print as an ASCII-encoded decimal
18    Serial.println(analogValue, HEX);  // print as an ASCII-encoded hexadecimal
19    Serial.println(analogValue, OCT);  // print as an ASCII-encoded octal
20    Serial.println(analogValue, BIN);  // print as an ASCII-encoded binary
21// delay 10 milliconds before the next reading:
22    delay(10);
23 }
函数:read()
描述:读取输⼊的串⾏数据。read()从Stream实⽤程序类继承。
语法:
  ad()
  只有Arduino Mega:
  ad()
  ad()
屠龙之技  ad()
参数:⽆
返回值:输⼊串⾏数据的第⼀个字节可⽤(如果没有数据可⽤,则为-1) - int
范例:
1int incomingByte = 0;  // for incoming rial data
2void tup(){
3    Serial.begin(9600);    // opens rial port, ts data rate to 9600 bps
4 }

本文发布于:2023-05-23 14:43:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/925198.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   字符   数字   字符串   读取   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图