canopen
Version:
CANopen implementation for Javascript
44 lines (35 loc) • 1.15 kB
JavaScript
const { Device } = require('../../index.js');
/**
* Sync producer example.
*
* This example shows how to create a CANopen device that produces network
* synchronization objects.
*
* @param {Device} device - Device object.
*/
async function main(device) {
await new Promise((resolve) => {
// Send Sync messages with ID 0x80
device.eds.setSyncCobId(0x80);
device.eds.setSyncGenerationEnable(true);
device.eds.setSyncCyclePeriod(1e5); // Every 100 ms
device.eds.setSyncOverflow(3); // Overflow at 3
device.start();
setTimeout(() => {
device.stop();
resolve();
}, 500);
});
}
if (require.main === module) {
// Connect the Device with a socketcan RawChannel object.
const can = require('socketcan');
const channel = can.createRawChannel('can0');
const device = new Device({ id: 0xB });
device.addListener('message', (m) => channel.send(m));
channel.addListener('onMessage', (m) => device.receive(m));
channel.start();
main(device).then(() => channel.stop());
}
module.exports = exports = main;