Ардуино. Функции Serial.readBytes() и Serial.readBytesUntil().
0.0/5 оценка (0 голосов)

Ардуино. Функции Serial.readBytes() и Serial.readBytesUntil().
  • Serial.readBytes() считывает несколько байтов из полученного буфера в массив символов (также называемый буфером).

Функция readBytes () завершается двумя событиями: либо когда считывает указанное количество байтов, либо по истечении времени ожидания. 

  • Serial.readBytesUntil() считывает буфер до тех пор, пока не получит завершающий символ.

Функция readBytesUntil () ожидает завершающего символа, указанного количества байтов или  завершения времени ожидания.

 

Arduino Serial Read Bytes Function – Serial.readBytes()

  • Функция Arduino Serial.readBytes () считывает несколько байтов из полученного буфера в массив символов (также называемый буфером).
  • Функция readBytes считывает указанное количество байтов в указанной переменной из последовательного буфера.
  • Функция возвращает целочисленное значение, которое указывает, сколько байт успешно прочитано в переменной.
  • Функция readBytes () ожидает "тайм-аут". По умолчанию он составляет одну секунду.
  • Функция readBytes () завершается двумя событиями: либо когда считывает указанное количество байтов, либо по истечении времени ожидания.

Функция Serial.find () после теста очищает буфер последовательного приема.

Arduino readBytes

Синтаксис функции Serial.readBytes function

char readData[10];//The character array is used as buffer to read into.
int x = Serial.readBytes(readData,10);//10 is the length of data to read.

Функция требует двух вещей: имя переменной для чтения и количество байтов для чтения.

Переменная x будет содержать прочитанные байты, а readData будет содержать полученную строку.

Функция Serial.readBytes () используется для проверки того, получено ли целевое слово или строка.

Как работает функция Serial.readBytes ()

Функция непрерывно считывает полученные данные из буфера и, если получено целевое число символов, возвращается с номером символа. Если число прочитанных символов меньше указанного числа, а время ожидания истекло, то будет возвращено количество символов, которое меньше целевой длины.

Если целевое число или длина не будут получены в течении одной секунды (тайм-аут), то оно вернется с меньшим количеством символов.

Внимание: время ожидания по умолчанию - одна секунда. Его можно изменить с помощью функции Serial.setTimeout ().

Пример Arduino readBytes

В этом небольшом коде мы отправим некоторые данные с последовательного монитора и вернем обратно те же данные с количеством прочитанных байтов.

Example 1 – Код функции Serial.readBytes () для обратной связи с ПК (последовательный монитор).

 
void setup()
{
    Serial.begin(9600); // Скорость передачи 9600 
}
void loop()
{
    char readData[10]="0000000000";//Массив символов используется в качестве буфера для чтения.

    int x = Serial.readBytes(readData,10);//Требуются две вещи: имя переменной для чтения 
                                          //и количество байтов для чтения.

    Serial.println(x);//отображать количество символов, полученных в переменной readData.

    Serial.println(readData);//отправить обратно 10 байтов данных.

    delay(500);
}  

В приведенном ниже примере мы сначала отправили три байта «123», а затем отправили 6 символов «123456». В противном случае он покажет цифры «0» и те же самые предыдущие данные.

Примечание: если вы отправите менее 10 символов, в буферной переменной также будут показаны некоторые предыдущие данные.

Arduino Example for Serial read bytes function Serial.readBytes()
Рис.1 - Пример Arduino для функции Serial read bytes.

 

Arduino Serial Read Bytes Until Function – readBytesUntil 

  • Функция Arduino Serial.readBytesUntil считывает буфер до тех пор, пока не получит завершающий символ.
  • Если заданное количество символов получено в буфере, то функция return или complete возвращается.
  • Функция readBytesUntil () ожидает завершающего символа, указанного количества байтов или  завершения времени ожидания.
  • функция readBytesUntil() ожидает одну секунду или тайм-аут.
  • Завершающий символ можно рассматривать как символ конца команды.

Как только функция получит завершающий символ, она вернется с числом, зависящим от того, сколько символов было получено до завершения символа.

Синтаксис функции Serial.readBytesUntil

char readData [10]; // Массив символов используется в качестве буфера для чтения.
int x = Serial.readBytesUntil («\ n», readData, 10); // 10 - длина данных для чтения.

Как работает функция readBytesUntil

Функция постоянно читает полученные данные и сохраняет их в предоставленной переменной.

Условия завершения функции

  • Время ожидания завершилось. По умолчанию время ожидания составляет одну секунду.
  • До истечения времени ожидания функция получала указанное количество символов (10 символов).
  • Перед двумя вышеуказанными событиями функция получила завершающий символ (символ новой строки «\ n»).

Во всех трех случаях функция Serial.readBytesUntil () возвращает количество символов, прочитанных в буфере.

void setup() {
Serial.begin(9600); // Установите скорость передачи 9600 
}
void loop() 
{
char readData[10]="0000000000"; //Массив символов используется в качестве буфера для чтения.
int x = Serial.readBytesUntil("\n",readData,10); //Требуются две вещи: имя переменной для чтения и количество байтов для чтения.
Serial.println(x); //отображать количество символов, полученных в переменной readData.
Serial.println(readData); //возврат 10 байтов данных. 
delay(500);
}

В приведенном ниже примере мы сначала отправили три байта «abc», а затем 6 символов «123456». В противном случае он покажет цифры «0» и те же самые предыдущие данные.
Функция выполняется через каждые 500 мс.

Arduino Serial Read Bytes Until readBytesUntil() Function Example