| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /**
- * Simple demostration of sendFeatureReport
- * for a blink(1) USB LED by ThingM http://blink1.thingm.com/
- */
- 'use strict';
- var HID = require('../');
- var VENDOR_ID = 0x27B8;
- var PRODUCT_ID = 0x01ED;
- var REPORT_ID = 1;
- var REPORT_LENGTH = 9;
- var serial_number = process.argv[2];
- var devices_found = HID.devices( VENDOR_ID, PRODUCT_ID );
- if( devices_found.length === 0 ) {
- console.log("no blink(1) devices found");
- process.exit(0);
- }
- console.log("blink(1) devices found:", devices_found,'\n');
- var hidDevice;
- try {
- if( serial_number ) {
- console.log("opening serial number "+serial_number);
- hidDevice = new HID.HID( VENDOR_ID, PRODUCT_ID, serial_number );
- } else {
- console.log("opening first device");
- hidDevice = new HID.HID( VENDOR_ID, PRODUCT_ID );
- }
- } catch(err) {
- console.log(err);
- process.exit(1);
- }
- var deviceInfo = hidDevice.getDeviceInfo();
- console.log("deviceInfo.manufacturer:", deviceInfo.manufacturer);
- console.log("deviceInfo.product:", deviceInfo.product);
- console.log("deviceInfo.serialNumber:", deviceInfo.serialNumber);
- // shamelessly stolen from node-blink1
- var blink1_sendCommand = function( /* command [, args ...]*/ ) {
- var featureReport = [REPORT_ID, 0, 0, 0, 0, 0, 0, 0, 0];
- featureReport[1] = arguments[0].charCodeAt(0);
- for (var i = 1; i < arguments.length; i++) {
- featureReport[i + 1] = arguments[i];
- }
- var rc = hidDevice.sendFeatureReport(featureReport);
- console.log("report sent:", featureReport);
- console.log("sent size:",featureReport.length," actual size:", rc);
- };
- var blink1_readResponse = function(callback) {
- callback.apply(null, [hidDevice.getFeatureReport(REPORT_ID, REPORT_LENGTH)]);
- };
- var blink1_getVersion = function(callback) {
- blink1_sendCommand('v');
- blink1_readResponse(function(response) {
- var version = String.fromCharCode(response[3]) + '.' + String.fromCharCode(response[4]);
- callback(version);
- });
- };
- var blink1_fadeToColor = function( fadeMillis, r,g,b, ledn ) {
- var dms = fadeMillis / 10;
- blink1_sendCommand( 'c', r,g,b, dms>>8, dms%0xff, ledn );
- };
- blink1_getVersion( function(version) {
- console.log("blink(1) version: ", version);
- });
- setTimeout( function() {
- console.log("Setting blink(1) to #00FF33 over 300 millisecs");
- blink1_fadeToColor( 300, 0x00,0xFF,0x33, 0);
- }, 100);
- setTimeout( function() {
- console.log("Setting blink(1) to #FF6633 over 700 millisecs");
- blink1_fadeToColor( 700, 0xff,0x66,0x00, 0);
- }, 1000);
- setTimeout( function() {
- console.log("Setting blink(1) to #000000 over 1000 millisecs, and closing");
- blink1_fadeToColor( 1000, 0x00,0x00,0x00, 0);
- hidDevice.close();
- }, 2000 );
|