nodejs binding for firefly 2 camera

Introduction: This is a wrapper for the FlyCapture2 Api from Point Grey research,

Windows and Linux are supported (more or less). Macintosh is not. Point Grey Research does not support an SDK for mac. If someone can find a version it would be a big help

It compiled once for me on Windows 7, but I would like to learn how to ship with a binary

  • get nodejs and npm, from

  • Install node-gyp from Use his installation instructions, they are good.

  • Download and install Point grey SDK from;

  • npm install node-firefly2

    var addon = require('node-firefly2');
    var fs = require('fs');
    var sys = require('sys');
    var Png = require('png').Png;//note doesn't work on windows. use png-sync instead
    var cam = new addon();
    console.log( 'num cameras' , cam.getNumCameras())
    console.log("start Camera 0 ", cam.startCamera())
    //set some default parameters.
    cam.triggerOff(false);//True uses the cable. Note don't use true unless you have a cable. It will wait forever. 
    //take a few just to get it warmed up. might help?
    var pic = cam.takePhoto();//actually take the picture
    var png2 = new Png(pic,640,480,'rgb')
    var png_image = png2.encodeSync();
    fs.writeFileSync('../pics/png_test.png', png_image.toString('binary'), 'binary');
  • var cam = new addon.FireFlyWrap(); // allways start with this
  • cam.getNumCameras() // returns the number of cameras found
  • cam.startCamera() // starts using the first camera
  • cam.autoGain(false); // turn gain on or off
  • cam.autoExposure(false); // turn auto shutter speed on or off
  • cam.autoWhiteBalance(false); // turn auto white balance on or off
  • cam.gain(2); // manually sets the gain. Note that auto gain must be off for this to work
  • cam.exposure(90); // manually sets shutter speed. in milli seconds
  • cam.triggerOff(true);//True is off, waits for hardware trigger. If no trigger is connected it will wait forever.
  • cam.frameRate(); // sets the fram rate to 90 fps
  • cam.triggerDelay(0.000)// takes a number in seconds to delay between when the cable trigger fires and when the picture is taken.
  • cam.takePhoto(); // takes a picture and returns a node::buffer
  • 2013/7/20 : Started this project on linux only.
  • 2013/8/2 : Complete rewrite in order to get it to work on Windows. A bi-product is that the code is much cleaner.