Здравствуйте! Начал писать Web-приложение для получения веса с весовой платформы, по которой проезжает автомобиль. Делать это нужно в реальном времени, т.к. далее планируется обработка и построение графика.
Бэкенд - NodeJS + Express.
Как мне запускать функцию для считывания веса каждые n мс, причем точно, без разброса в 200-1500 мс, который дает setInterval() и setTimeout()? Или стоит написать эту часть программы на другом языке (какой посоветуете)?
Хмм, скорее просто запрашивать раз в 300 ± 50 мс, чисто программными средствами, без заморочек с микроконтроллерами. Старое приложение работало на c++, был более новый вариант под Qt. И там и там точность устраивала, в отличие от JS.
Дмитрий Бурнашев, такой бы и взял,
контроллер ничего не ждет просто постоянно читает данные датчика и отправляет в пустоту, а за ней что угодно городите, например буферную зону ввиде очередей RabbitMQ или аналог, куда сообщения будут поступать в формате: время снятия, показание, время постановки в очередь, время передачи на обработку из очереди. А там уже хоть чем обрабатывайте, для графиков и прочего.
Может не всё так страшно, попробуйте просто на C++ написать читалку к датчику (как C++ расширение node.js) и пушить изменения в RabbitMQ, который опять же слушаете через ноду.
acwartz, так, я наверное не совсем правильно объяснил, чуть углублюсь, данные с датчиков идут к весоизмерительному терминалу, к нему подключен "Wi-Fi Serial Device Server", там можно выбрать протокол MQTT, в настройках указываются топики и по Wi-Fi данные летят к брокеру, на который и подписано веб-приложение
Хмм, скорее просто запрашивать раз в 300 ± 50 мс, чисто программными средствами, без заморочек с микроконтроллерами. Старое приложение работало на c++, был более новый вариант под Qt. И там и там точность устраивала, в отличие от JS.
не самое плохое решение, если учесть переферию.
к нему подключен "Wi-Fi Serial Device Server", там можно выбрать протокол MQTT, в настройках указываются топики и по Wi-Fi данные летят к брокеру
acwartz, цель, как говорит руководство, состоит в том, чтобы "приложение перенести в Web".
Начнем с того как вы выяснили проседание аж на полторы секунды...
Протестировал еще раз, посылаю строку с командой в топик "command". Пока подписан клиент/клиенты с другого компьютера все нормально, но как только в подписчиках топика оказывается "Wi-Fi Serial Device Server", все подписчики начинают получать оповещение с задержкой, которая иногда доходит до 1,5 секунды.
Дмитрий Бурнашев, ну вот и проблемное место. Вам нужно этот вопрос задать тегу интернета вещей , как оптимизировать задержку в работе HF2211 через Wi-Fi Serial Device Server, или чем заменить его.