NodeJS SocketCAN extension
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs Replace deprecated Buffer constructor Sep 10, 2018
samples Add an example that emulates candump -L May 12, 2017
src Avoid APIs that were removed in Node 10. Aug 23, 2018
tests Replace deprecated Buffer constructor Sep 10, 2018
.gitignore git ignore update Sep 29, 2015
README.md
TESTING.md Added some documentation and scripts Oct 3, 2015
binding.gyp
build_docs.sh docs: Added missing documentation (based on yuidocjs) Apr 13, 2013
package.json
parse_kcd.js Replace deprecated Buffer constructor Sep 10, 2018
prepare_test_env.sh Support error handling if SocketCAN interface is stopped Apr 14, 2017
socketcan.js Replace deprecated Buffer constructor Sep 10, 2018

README.md

node-can

This is a NodeJS SocketCAN extension. SocketCAN is a socket-based implementation of the CANbus protocol for Linux system.

This extensions makes it possible to send and receive CAN messages (extended, remote transission) using simple Javascript functions.

Usage

Basic CAN example:

var can = require('socketcan');

var channel = can.createRawChannel("vcan0", true);

// Log any message
channel.addListener("onMessage", function(msg) { console.log(msg); } );

// Reply any message
channel.addListener("onMessage", channel.send, channel);

channel.start();

Working with message and signals:

var can = require('socketcan');
var fs = require('fs');

// Parse database
var network = can.parseNetworkDescription("samples/can_definition_sample.kcd");
var channel = can.createRawChannel("vcan0");
var db      = new can.DatabaseService(channel, network.buses["Motor"]);

channel.start();

// Register a listener to get any value changes
db.messages["CruiseControlStatus"].signals["SpeedKm"].onChange(function(s) {
   console.log("SpeedKm " + s.value);
});

// Register a listener to get any value updates
db.messages["Emission"].signals["Enginespeed"].onUpdate(function(s) {
   console.log("Enginespeed " + s.value);
});

// Update tank temperature
db.messages["TankController"].signals["TankTemperature"].update(80);

// Trigger sending this message
db.send("TankController");

Install

There are two options for installing node-can:

  1. Clone / download node-can from GitHub, then:
    $ npm i
    $ npm run configure
    $ npm run build
  1. Install via npm:
    $ npm install socketcan