JavaScript:Библиотеки/p5.serialport

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

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



p5.serialport[1]

Это библиотека для p5.js, позволяющая наладить коммуникацию между вашим p5-скетчем и Arduino (или другим устройством, общающимся при помощи последовательной коммуникации).

Что она делает?

Библиотека p5.serialport делает примерно то же самое, что и библиотека Serial для Processing. JavaScript в браузере не может взаимодействовать с последовательным портом напрямую, и библиотека p5.serialport позволяет решить эту проблему. Библиотека p5.serialport представлена в двух вариантах: в виде обычного приложения (этот вариант проще и подойдет для человека с навыком любого уровня) и в виде WebSocket-сервера на базе Node.js (это вариант для продвинутых пользователей и тех, кому нужна более углубленная настройка).

Библиотека p5.serial в виде приложения

Сначала загрузите и запустите p5.serialcontrol. В него встроено приложение p5.serialserver с графическим интерфейсом для MacOS и Windows.

Запустив приложение, загрузите один из примеров в свой браузер, чтобы увидеть его в действии.

Примечание: Вам, скорее всего, нужно будет задать в примере последовательный порт, который использует ваша Arduino.

Библиотека p5.serial в виде WebSocket-сервера на базе Node.js

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

Клонируйте или загрузите этот репозиторий, установите зависимости при помощи «npm install» и запустите сервер при помощи «node startserver.js».

Вы также можете установить сервер глобально при помощи npm командой «sudo npm install -g p5.serialserver» и запустить его при помощи «p5serial» или локально командой «npm install p5.serialserver» и запустить его при помощи «node startserver.js».

Затем загрузите в браузер один из примеров, чтобы увидеть его в действии.

Примечание: Вам, скорее всего, нужно будет задать в примере последовательный порт, используемый вашей Arduino.

API

Документацию к API можно почитать по этой ссылке.

Основы:

var serial;

function setup() {
  // создаем экземпляр класса SerialPort:
  serial = new p5.SerialPort();

  // ищем все доступные порты:
  var portlist = serial.list();

  // допустим, Arduino уже аппаратно подключена;
  // тогда давайте теперь создадим программное подключение; 
  // поменяйте то, что в скобочках,
  // на название своего последовательного порта: 
  serial.open("/dev/cu.usbmodem1421");

  // функции обратного вызова, 
  // которые будут вызваны в зависимости от полученного сообщения: 

  // при подключении к серверу:
  serial.on('connected', serverConnected);

  // при получении списка доступных последовательных портов:
  serial.on('list', gotList);

  // при получении данных через последовательный порт:
  serial.on('data', gotData);

  // при получении сообщения об ошибке:
  serial.on('error', gotError);

  // если последовательный порт открыт
  // и готов к чтению/записи:
  serial.on('open', gotOpen);
}

// подключились и готовы продолжать:
function serverConnected() {
    print("We are connected!");
      //  "Мы подключились!"
}

// получили список портов:
function gotList(thelist) {
  // «thelist» – это массив с названиями портов:
  for (var i = 0; i < thelist.length; i++) {
    // показываем список портов в консоли:
    print(i + " " + thelist[i]);
  }
}

// подключились к последовательному устройству:
function gotOpen() {
  print("Serial Port is open!");
    //  "Последовательный порт открыт!"
}

// увы и ах, ошибка, давайте напечатаем ее в консоли:
function gotError(theerror) {
  print(theerror);
}

// через последовательный порт пришли данные,
// с которыми можно работать:
function gotData() {
  var currentString = serial.readStringUntil("\r\n");
  console.log(currentString);
}

// Методы библиотеки p5.serialport
//
// serial.read() возвращает один байт данных (первый в буфере)
// serial.readChar() возвращает следующий байт в буфере в виде символа 
// serial.readBytes() возвращает все доступные данные
                      в виде массива байтов
// serial.readBytesUntil('\n') возвращает все доступные данные,
                               пока не встретит символ '\n'
                               (это символ новой строки)
// serial.readString() возвращает все доступные данные в виде строки 
// serial.readStringUntil('\n') возвращает все доступные данные 
                                в виде строки, 
                                пока не встретит символ '\n'
                                (это символ новой строки)
// serial.last() возвращает последний байт данных из буфера
// serial.lastChar() возвращает последний байт данных из буфера
                     в виде символа
// serial.clear() очищает буфер последовательного порта
// serial.available() возвращает количество байтов, доступных в буфере 

function draw() {
  // спрашиваем у сервера о наличии данных:
/*
  if (serial.available() > 0) {
    var data = serial.read();
    ellipse(50,50,data,data);
  }
*/
}

Документация

Чтобы сгенерировать документацию, установите yuidoc («npm install -g yuidocjs») и запустите команду «yuidoc -c yuidoc.json ./lib».

См.также

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