📜  Arduino Serial.available()

📅  最后修改于: 2020-12-27 03:12:59             🧑  作者: Mango

Serial.available()

Arduino中的Serial.available()函数从串行端口获取可读取的已存储字节。它是已存储并到达串行缓冲区的数据。 Arduino中的串行缓冲区包含64个字节。

Serial.available()函数继承自称为stream的实用程序类。仅在依赖流的函数被调用时才调用流。流类被视为二进制和基于字符的流的基类。

让我们看一个例子。

考虑下面的代码。

int arrivingdatabyte = 0; // initializing the incoming serial byte
void setup( )
{
Serial.begin(9600); // 9600 is the data rate in bps (bits per second).
}
void loop( ) // loop function that executes repeatedly
{
if(Serial.available( ) > 0) //  It will only send data when the received data is greater than 0.
{
arrivingdatabyte = Serial.read( );  // It will read the incoming or arriving data byte
Serial.print("data byte received:");
Serial.println(arrivingdatabyte, DEC); // here, DEC means Decimal
}
}

对于Arduino Mega,可用的端口为:

Serial1.available()

Serial2.available()

Serial3.available()

让我们通过一个例子来了解Mega的概念。

在此示例中,将读取数据并将数据从一个端口发送到另一个端口。

它将从端口0读取数据,然后将数据发送到端口1。

考虑下面的代码。

void setup( )
{
Serial.begin(4800);
Serial1.begin(4800);
}
// two if conditions will be used.
//In first, if the data is available in the port 0, it will send to the port 1. In second, if the data is available in the port 1, it will send to the port 0.
void loop( )
{
// Now,the data will be read from port 0 and will be sent to the port 1.
if( Serial.available( ) )
{
int incomingdatabyte = Serial.read( );
Serial1.print('incomingdatabyte, byte');
}
// Now,the data will be read from port 1 and will be sent to the port 0.
if( Serial1.available( ) )
{
int incomingdatabyte = Serial1.read( );
Serial.print('incomingdatabyte, byte');
}
}

我们还可以通过编译检查代码中的错误。为此,单击验证按钮。

Arduino屏幕如下图所示:

完成编译将表示代码已成功编译。

注意:在Arduino开发板的帮助下,我们无法将串行设备连接到计算机。