Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #!/usr/bin/env node
  2. const e131 = require('e131')
  3. const ws281x = require('rpi-ws281x-native')
  4.  
  5. function throttled(delay, fn) {
  6. let lastCall = 0;
  7. return function (...args) {
  8. const now = (new Date).getTime();
  9. if (now - lastCall < delay) {
  10. return;
  11. }
  12. lastCall = now;
  13. return fn(...args);
  14. }
  15. }
  16.  
  17. const NUM_LEDS = parseInt(process.argv[2], 10) || 171
  18. let pixelData = new Uint32Array(NUM_LEDS)
  19.  
  20. ws281x.init(NUM_LEDS)
  21.  
  22. // ---- trap the SIGINT and reset before exit
  23. process.on('SIGINT', function () {
  24. ws281x.reset()
  25. process.nextTick(function () { process.exit(0) })
  26. })
  27.  
  28. const server = new e131.Server([1])
  29.  
  30. server.on('listening', function () {
  31. console.log(`server listening on port ${this.port}, universes ${this.universes}`)
  32. })
  33.  
  34.  
  35. const render = (packet) => {
  36. //var sourceName = packet.getSourceName()
  37. //var sequenceNumber = packet.getSequenceNumber()
  38. //var universe = packet.getUniverse()
  39. //var slotsData = packet.getSlotsData()
  40.  
  41. //console.log('source="%s", seq=%d, universe=%d, slots=%d', sourceName, sequenceNumber, universe, slotsData.length)
  42. //console.log('slots data = %s', slotsData.toString('hex'))
  43.  
  44. const slotsData = packet.getSlotsData()
  45. let hex = slotsData.toString('hex').match(/.{1,6}/g)
  46. hex.forEach((h, i) => pixelData[i] = `0x${h}`)
  47. ws281x.render(pixelData)
  48.  
  49. //let hex = slotsData.toString('hex').match(/.{1,6}/g)
  50. //hex.forEach((h, i) => pixelData[i] = `0x${h}`)
  51. //ws281x.render(pixelData)
  52. //console.log(pixelData)
  53. }
  54.  
  55. const throttledRender = throttled(5, render)
  56.  
  57. server.on('packet', throttledRender)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement