Skip to content

Instantly share code, notes, and snippets.

@companje
Created October 28, 2014 21:40
Show Gist options
  • Save companje/b3de8f5028c1dd1eb0ca to your computer and use it in GitHub Desktop.
Save companje/b3de8f5028c1dd1eb0ca to your computer and use it in GitHub Desktop.
var os=require('os');
var net=require('net');
var Gpio = require("onoff").Gpio;
var networkInterfaces=os.networkInterfaces();
var port = 8081;
var sockets = [];
var cols = [
new Gpio(7, 'in', 'both'),
new Gpio(8, 'in', 'both'),
new Gpio(25, 'in', 'both'),
new Gpio(24, 'in', 'both'),
new Gpio(23, 'in', 'both')
];
var rows = [
new Gpio(14, 'out'),
new Gpio(15, 'out'),
new Gpio(18, 'out')
];
setInterval(function() {
var result = readButtonMatrix();
if (result) {
console.log(result.toString());
for (var i in sockets) {
sockets[i].write(result+'\n');
}
};
},100);
function readButtonMatrix() {
var s = '';
for (var kolom=0; kolom<cols.length; kolom++) {
for (var specifiek=0; specifiek<rows.length; specifiek++) {
for (var i=0; i<rows.length; i++) {
rows[i].writeSync(1);
}
rows[specifiek].writeSync(0);
//console.log(cols[kolom].readSync() + " ");
var value = cols[kolom].readSync();
s = s + value;
if (value==0) return [kolom,specifiek];
//console.log(kolomnummertje.join(','));
}
//console.log("- ");
s = s + " - ";
}
//console.log(s);
return null;
}
function callback_server_connection(socket){
var remoteAddress = socket.remoteAddress;
var remotePort = socket.remotePort;
socket.setNoDelay(true);
console.log("connected: ", remoteAddress, " : ", remotePort);
sockets.push(socket);
socket.on('data', function (data) {
//op deze plek ontvangt de server van 1 client een berichtje
//hier het berichtje doorsturen naar alle andere clients
for (var i in sockets) {
console.log('fwd to:',i,data.toString());
sockets[i].write(data.toString());
}
});
socket.on('end', function () {
console.log("ended: ", remoteAddress, " : ", remotePort);
for (var i in sockets) {
if (sockets[i]==socket) {
sockets.splice(i,1); //remove socket from array
}
}
});
}
console.log("node.js net server is waiting:");
for (var interface in networkInterfaces) {
networkInterfaces[interface].forEach(function(details){
if ((details.family=='IPv4') && !details.internal) {
console.log(interface, details.address);
}
});
}
console.log("port:", port);
var netServer = net.createServer(callback_server_connection);
netServer.listen(port);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment