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».