簡體   English   中英

通過NodeJS和Termux與Android藍牙設備通信

[英]Communicate with Android bluetooth device via NodeJS and Termux

我們希望與連接到Android平板電腦的藍牙設備進行通信。 我們正在使用Termux並安裝了NodeJS。 有誰知道甚至可以與藍牙設備通信? 我們是否必須嘗試直接通過/ dev文件夾與設備通信?

我的理解是,Android是建立在Linux內核之上的,但是,它已經在其上實現了特定的東西,以便與其他事物(如連接)進行交互。 甚至可以通過NodejS“serialport”或其他工具通過/ dev文件夾訪問設備嗎?

作為最后的手段,如果這是不可能的,我想我們可以嘗試通過root終端在Android OS中構建NodeJS。 我聽說這並不像人們想象的那么容易。 通過Termux,我可以訪問/ dev文件夾並查看所有設備。 不確定權限如何工作。 謝謝。

在此輸入圖像描述

您可以使用此工具通過串行端口進行通信。 我從來沒有使用過這個工具,只提供它作為參考,因為android建立在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} );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM