node.js + электронный BLE сканер - PullRequest
0 голосов
/ 02 февраля 2020

В настоящее время я работаю над небольшим Linux проектом в Node.js + Electron, который требует сканирования рекламных пакетов bluetooth LE и извлечения данных из них, и я мог бы воспользоваться советами более опытных разработчиков по поводу , Давайте начнем с того, что я знаю о модулях благородных / отказных программ-благородных, которые делают именно то, что мне нужно, и довольно простым и понятным способом, но я бы хотел оставить это как последнее средство, потому что собираю нативные модули для компиляции (особенно когда требуется перестройка для электрона) вызывает у меня головную боль. Конечно, я где-то совершаю какую-то ошибку, но это такая небольшая часть второстепенного проекта, что я не собираюсь тратить много времени на то, чтобы попытаться устранить эти ошибки «не в порядке» и предупреждения о несоответствии версий. Итак, вот два обходных пути, которые я придумал, и плюсы / минусы, которые я могу придумать. Не могли бы вы дать мне свое мнение о них? Что бы вы выбрали?

ПРИМЕЧАНИЕ: кроме перехвата рекламных пакетов BLE (и сценарий «наихудшего» случая, вероятно, составляет 20-я sh из них в секунду), здесь ничего действительно не чувствительно ко времени, так что один раз BT-сканер завершил чтение данных, он может просто положить sh его в какой-то стек для обработки другими модулями.

1) Я напишу отдельную программу на C, используя bluez для сканирования для пакетов извлеките данные (возможно, в отдельный поток, если возникнет необходимость в сложном декодировании) и просто запишите их в стандартный вывод. Основной проект node.js позаботится об открытии программы сканера и передаче его стандартного вывода на модули обработки. +: очень просто. Кроме того, у меня уже есть работающий сканер, который просто нуждается в небольшом рефакторинге. -: есть дополнительный процесс, который может потерпеть неудачу. Межпроцессное взаимодействие медленное, особенно если оно осуществляется путем передачи потоков ввода / вывода.

2) Эта небольшая утилита сканера может быть преобразована в собственный модуль для включения в основной проект node.js. +: нет необходимости в дополнительном процессе в памяти. -: мне нужно было бы научиться создавать собственные модули (как я уже сказал, это не тот проект, на котором нужно тратить много времени), и мне пришлось бы снова разобраться с GYP и его особенностями.

Какое решение вы бы выбрали? Я что-то пропустил? В настоящее время я думаю о # 1, но только потому, что это то, что я уже сделал в аналогичной ситуации, и это работало нормально. Я знаю, что это очень не элегантно. (..но что плохо?)

Заранее спасибо.

РЕДАКТИРОВАТЬ: noble отлично работает в моей системе, я просто пытаюсь предотвратить будущие проблемы , так как npm + gyp дал мне много проблем.

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