node.js - nodejs serialport module or bluetooth-serial-port module, which one? -
i have couple of nodejs examples serial communication. 1 illustration using serialport module (below). have paired bluetooth device set rfcomm0. can communicate on command line echo info > /dev/rfcomm0 , receive response, seems work. problem doesn't work through nodejs. illustration below throws "could not load bindings file" error when nodejs serialtojson.js /dev/rfcomm0. alternative utilize bluetooth-serial-port module instead cannot installed through npm because compatible version cannot found version of node i'm using. have thought of how troubleshoot each problem don't know pursue, can serialport module used rfcomm (serial port emulation) or bluetooth-serial-port module improve suited?
/* serialtojson.js node.js app read serial strings, convert them json objects, , send them websocket clients requires: * node.js (http://nodejs.org/) * express.js (http://expressjs.com/) * socket.io (http://socket.io/#how-to-use) * serialport.js (https://github.com/voodootikigod/node-serialport) phone call type: node serialtojson.js portname portname path serial port want open. created 1 nov 2012 modified 7 nov 2012 tom igoe */ var serialport = require("serialport"), // include serialport library serialport = serialport.serialport, // create local instance of serial app = require('express')(), // start express framework server = require('http').createserver(app), // start http server io = require('socket.io').listen(server); // filter server using socket.io var portname = process.argv[2]; // 3rd word of command line should serial port name console.log("opening serial port: " + portname); // print out port you're listening on server.listen(8080); // hear incoming requests on server console.log("listening new clients on port 8080"); var connected = false; // open serial port. alter name name of port, in processing , arduino: var myport = new serialport(portname, { // homecoming , newline @ end of each info packet: parser: serialport.parsers.readline("\r\n") }); // respond web requests index.html page: app.get('/', function (request, response) { response.sendfile(__dirname + '/index.html'); }); // hear new socket.io connections: io.sockets.on('connection', function (socket) { // if client connects: if (!connected) { // clear out old info serial bufffer: myport.flush(); // send byte serial port inquire data: myport.write('c'); console.log('user connected'); connected = true; } // if client disconnects: socket.on('disconnect', function () { myport.write('x'); console.log('user disconnected'); connected = false; }); // hear new serial data: myport.on('data', function (data) { // convert string json object: var serialdata = json.parse(data); // debugging, should see in terminal window: console.log(data); // send serial event web client data: socket.emit('serialevent', serialdata); }); });
good know it's working. serialport module works me too.
with module serialport, need module connect bluetooth device, or need manually connect rfcomm in terminal. big difference in functionality bluetooth-serial-port doesn't require connect rfcomm. module can scan bluetooth devices , connect them. after connect, has same functionality serialport.
so if application/module needs connect bluetooth devices , want scanning functionality, it's worth @ to the lowest degree seek bluetooth-serial-port.
there few examples in npm module/readme, won't take much time test it.
edit:
there new version released, stable! :d https://npmjs.org/package/bluetooth-serial-port
node.js bluetooth serial-port
No comments:
Post a Comment