4.0.4 • Published 7 months ago

socketcan v4.0.4

Weekly downloads
555
License
MIT
Repository
github
Last release
7 months ago

Build Status

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/Typescript functions.

Usage (JavaScript)

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");

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

channel.start();

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

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

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

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

channel.stop()

Usage (TypeScript)

Basic CAN example:

import {Message} from "*can.node";
import * as can from "socketcan";

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

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

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

channel.start();

Working with message and signals:

import * as can from "socketcan"

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

channel.start();

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

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

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

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

channel.stop();

Documentation

API documentation hosted on GitHub pages.

Install

There are two options for installing node-can:

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

7 months ago

4.0.3

1 year ago

4.0.2

1 year ago

4.0.1

1 year ago

4.0.0-rc1

1 year ago

3.0.0

3 years ago

2.9.0

3 years ago

2.9.1

3 years ago

2.8.0

4 years ago

2.7.2

4 years ago

2.7.1

4 years ago

2.7.0

4 years ago

2.6.0

4 years ago

2.5.0

5 years ago

2.4.0

5 years ago

2.3.0

6 years ago

2.2.2

6 years ago

2.2.0

7 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.1

9 years ago

1.2.3

9 years ago

1.2.2

9 years ago

1.2.1

9 years ago

1.2.0

9 years ago

1.1.1

9 years ago

1.1.0

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago

2.0.0

9 years ago

1.2.3-test.0

9 years ago