FAQs
Node.js is a JavaScript runtime library which is a widely used language for server side programming, particularly when IO is needed.
You can use Brainboxes npm (Node Package Manager) package called @brainboxes/io. Using this package in your Node.js application you can communicate with brainboxes remote io device (product code ED-xxx) and the Brainboxes BB-400.
Please note the Brainboxes Node.js package is still in beta please send feedback and feature requests to [email protected].
Node.js Code Sample
'use strict';
// ensure to install package using npm: npm install @brainboxes/io
const { EDDevice } = require('@brainboxes/io');
// create a new device
var ed588 = new EDDevice("192.168.0.33", 8, 8);
// listen to all responses
ed588.on('response', (data) => {
console.log("received: " + data);
});
// listen for all connection events
ed588.on('connect', () => {
console.log("Connected!");
});
// listen for all disconnection events, equivalent to node socket 'end' or 'closed'
ed588.on('disconnect', () => {
console.log("Disconnected!");
// could do some reconnecting here!
});
// listen for all error events
ed588.on('error', (err) => {
console.log("Error: " + err);
});
// try to connect then perform some functions
ed588.connect().then( () => {
// example functions:
// send commands and receive associated responses using ASCII API
// for more on ASCII API see: http://www.brainboxes.com/faq/items/ascii-protocol-and-commands
// get io state
// see: http://www.brainboxes.com/files/pages/support/faqs/docs/AsciiCommands/%40AA.pdf
ed588.sendCommand("@01").then( response => console.log(`Current IO State ${response}`));
// set output state to all closed
// see: http://www.brainboxes.com/files/pages/support/faqs/docs/AsciiCommands/%40AA(Data).pdf
ed588.sendCommand("@01FF").then( response => console.log(`Set successful: ${response == ">"}`));
// or use brainboxes.io node API built in function
// get DIN0 line count
ed588.getDigitalInputLineCount(0).then( response => console.log(`DIN0 count: ${response}`) );
ed588.getAllDigitalLineStates().then(response => console.log(`IO Line values as int array [${response.join(',')}]`));
var newOutputLineState = [1,0,1,0,1,0,1,0];
ed588.setAllDigitalOutputStates(newOutputLineState).then(response => {
console.log(`successfully set digital outputs to [${newOutputLineState.join(',')}]`);
})
var i = 0;
const intervalMS = 1000;
// simple test function fires every interval
setInterval( () => {
// set output see:
console.log("DateTime: "+Date())
// rand either 0 or 1
let newRandValue = Math.round(Math.random());
let outputLineNumber = i % ed588.numOutputs;
// set an output to a random value
ed588.setDigitalOutputLineState(outputLineNumber, newRandValue );
// read io state
ed588.getAllDigitalLineStates().then(response => console.log(`IO Line values as int array [${response.join(',')}]`));
// note the above 2 commands are asynchronous, so there is no guarantee that the setDigitalOutput command above will have taken effect before the getAllDigitalLineStates command is processed
// to ensure the ordering of the above two commands is sequential and synchronous do the following:
ed588.setDigitalOutputLineState(outputLineNumber, newRandValue)
.then( response => ed588.getAllDigitalLineStates() )
.then( response => console.log(`IO Line values as int array [${response.join(',')}]`));
// alternative notation using await, this is equivalent the the block above
// note: async and await can only be used in node.js version 7.6 and above
// var asyncTest = async function() {
// await ed588.setDigitalOutputLineState(outputLineNumber, newRandValue);
// let response = await ed588.getAllDigitalLineStates();
// console.log(`IO Line values as int array [${response.join(',')}]`)
// }
// asyncTest();
i++;
},intervalMS)
}, (err) => {
console.log(`Connection to ED failed reason: ${err}`);
});
Related FAQs
- How do I use Android to communicate with my Remote IO Module?
- How do I use C# to communicate with my Analog IO Module?
- How do I use C# to communicate with my Remote IO Module?
- How do I use C# to control my Ethernet to Serial device?
- How do I use C++ to communicate with my Remote IO Module?
- How do I use Perl to communicate with my Remote IO Module?
- How do I use PHP to communicate with my Remote IO Module?
- How do I use Python to communicate with my Remote IO Module?
- How do I use Python to control the IO over REST on the BB-400
- How do I use Python to control the IO over WebSockets on my BB-400
- How do I use Visual Basic (VB) to communicate with my Analog IO Module?
- How do I use Visual Basic (VB) to communicate with my Remote IO Module?
- How to communicate using ASCII TCP between the BB-400 and a Linux or Windows system
- How to communicate with the REST API on the BB-400 using cURL commands
- How to communicate with the REST server on the BB-400 through PowerShell on Windows
Related Products
Related Range
FAQs