Processing:Библиотеки/Serial/Класс Serial/readBytesUntil()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску


Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



readBytesUntil()[1]

Класс

Serial

Обозначение

readBytesUntil()

Описание

Считывает байты из порта в буфер до заданного символа (включая сам символ). Если заданного символа нет, возвращает null. Версия без параметра dest возвращает массив байтов со всеми байтами, находящимися до байта inByte (включая его самого). Это не очень эффективно, но зато просто. Версия с параметром dest работает быстрее и менее требовательна к памяти. Она считывает данные, помещает их в заданный массив байтов (dest) и возвращает значение int, обозначающее количество считанных байтов. Если буфер недостаточно велик, функция вернет «-1», а в текстовой области будет напечатано сообщение об ошибке. Если в буфере ничего нет, функция вернет «0».

Синтаксис

serial.readBytesUntil(inByte)
serial.readBytesUntil(inByte, dest)

Параметры

serial  любая переменная типа Serial. Тип данных  Serial
inByte  символ, обозначающий конец считываемых данных. Тип данных  int
dest    массив, в который нужно сохранить данные. Тип данных  byte[]

Возвращаемое значение

Тип данных  byte[] или int.

Пример

// Скетч-пример от Тома Иго.

import processing.serial.*;

Serial myPort;  // последовательный порт

void setup() {
  // печатаем список всех доступных последовательных портов:
  printArray(Serial.list());
  // открываем используемый порт на нужной скорости:
  myPort = new Serial(this, Serial.list()[0], 9600);
  myPort.write(65);
}

void draw() {
  while (myPort.available() > 0) {
    int lf = 10;
    // увеличиваем размер массива до нужного количества байтов:
    byte[] inBuffer = new byte[7];
    myPort.readBytesUntil(lf, inBuffer);
    if (inBuffer != null) {
      String myString = new String(inBuffer);
      println(myString);
    }
  }
}

См.также

Внешние ссылки