Общайтесь с Bluetooth-устройством Android через NodeJS и Termux

Мы ищем связь с Bluetooth-устройством, подключенным к планшету Android. Мы используем Termux и устанавливаем NodeJS. Кто-нибудь знает, можно ли даже общаться с Bluetooth-устройством? Должны ли мы попытаться связаться с устройством напрямую через папку /dev?

Я понимаю, что Android построен поверх ядра Linux, однако он реализовал определенные вещи поверх него, чтобы взаимодействовать для других вещей, таких как подключение. Будет ли устройство доступно даже через папку /dev через последовательный порт NodejS или другой инструмент?

В крайнем случае, если это невозможно, я думаю, мы могли бы попытаться построить NodeJS в ОС Android через корневой терминал. Я слышал, что это не так просто, как можно было бы подумать. Через Termux я могу получить доступ к папке /dev и увидеть все устройства. Не знаете, как будет работать разрешение. Спасибо.

введите описание изображения здесь

Ответ 1

С помощью этого инструмента вы можете обмениваться данными через последовательный порт. Я никогда не использовал этот инструмент, но предоставлял это только как ссылку, так как андроид построен на ядре Linux, это может сработать. Обратите внимание, что примеры аналогичны документам.

https://github.com/eelcocramer/node-bluetooth-serial-port

Основное использование клиента

var btSerial = new (require('bluetooth-serial-port')).BluetoothSerialPort();

btSerial.on('found', function(address, name) {
    btSerial.findSerialPortChannel(address, function(channel) {
        btSerial.connect(address, channel, function() {
            console.log('connected');

            btSerial.write(new Buffer('my data', 'utf-8'), function(err, bytesWritten) {
                if (err) console.log(err);
            });

            btSerial.on('data', function(buffer) {
                console.log(buffer.toString('utf-8'));
            });
        }, function () {
            console.log('cannot connect');
        });

        // close the connection when you're ready
        btSerial.close();
    }, function() {
        console.log('found nothing');
    });
});

btSerial.inquire();

Использование базового сервера (только для Linux)

var server = new(require('bluetooth-serial-port')).BluetoothSerialPortServer();

var CHANNEL = 10; // My service channel. Defaults to 1 if omitted.
var UUID = '38e851bc-7144-44b4-9cd8-80549c6f2912'; // My own service UUID. Defaults to '1101' if omitted

server.listen(function (clientAddress) {
    console.log('Client: ' + clientAddress + ' connected!');
    server.on('data', function(buffer) {
        console.log('Received data from client: ' + buffer);

        // ...

        console.log('Sending data to the client');
        server.write(new Buffer('...'), function (err, bytesWritten) {
            if (err) {
                console.log('Error!');
            } else {
                console.log('Send ' + bytesWritten + ' to the client!');
            }
        });
    });
}, function(error){
    console.error("Something wrong happened!:" + error);
}, {uuid: UUID, channel: CHANNEL} );