Created
October 28, 2014 21:40
-
-
Save companje/b3de8f5028c1dd1eb0ca to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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