Я создаю приложение на 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'});
(...)