raspberry node-hid-stream: использование нескольких скрытых устройств замедляет выполнение приложения - PullRequest
0 голосов
/ 11 марта 2020

Я создаю приложение на Raspberry PI 4 1 ГБ ОЗУ на основе веб-сервера, считываю данные со скрытых устройств и с помощью последовательного порта, используя express, ноды узла-потока и библиотеки последовательного порта. С 3 скрытыми устройствами все работает нормально, но после добавления четвертого устройства приложение ужасно тормозит (запуск веб-сервера через 5-10 минут, последовательный порт даже не открывается). Во время работы приложений с 3 и 4 скрытыми устройствами потребление оперативной памяти Raspberry составляет около 700 МБ, отстает только приложение, доступны данные со всех скрытых устройств. Согласно документации по node-hid:

Это не ограничение hid-узла, а ограничение всех библиотек пользовательского пространства. Это функция безопасности ОС, предотвращающая отслеживание устройства ввода.

Может быть, это проблема.

Пример кода:

var express = require('express');
var socket = require('socket.io');
var app = express();
var server = app.listen(8080, function(){
    console.log('listening on port 8080');
    });
app.use(express.static('public'));

//Socket setup
var io = socket(server);

io.on('connection', function(socket){
    console.log('made socket connection')
    });

(...)

var serialport = require ("serialport");
var port = new serialport('/dev/ttyACM0', {
  baudRate: 9600,
   dataBits: 8,
   parity: 'none',
   stopBits: 1,
   flowControl: false,

});

port.on("open", function () {
  //console.log('port otwarty'); 
 port.on('data', function(data) {
    //console.log('data received: ' + data);
    f_CReaderCard(data.toString());
  });
});

(...)

var KeyboardCharacters = require('node-hid-stream').KeyboardCharacters;
var CReaderD1 = new KeyboardCharacters({path: '/dev/hidraw0'}); 
var CReaderD2 = new KeyboardCharacters({path: '/dev/hidraw1'}); 
var CReaderU1 = new KeyboardCharacters({path: '/dev/hidraw2'}); 
var CReaderU2 = new KeyboardCharacters({path: '/dev/hidraw3'}); 

(...)

1 Ответ

0 голосов
/ 11 апреля 2020

Увеличьте номер потока, добавив эту строку сверху

process.env.UV_THREADPOOL_SIZE=10

Это установит для переменной среды UV_THREADPOOL_SIZE значение 10

Значение по умолчанию: "4" и максимум 1024

...