OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

Node.JS与USB接口通信:检测U盘/移动硬盘插拔事件和发送接数据


分享到
分类 JS学习   关键字 开源   发布 ourjs  1510973843267
注意 转载须保留原文链接,译文链接,作者译者等信息。  
在做嵌入式开发时,我们经常需要能够侦听USB端口的热插拔事件。目前node.js本身是不提供这类系统事件的接口的。不过已经有人用node.js和c/c++来侦听USB的系统事件,并将其打包进了NPM。

由于含有c/c++代码,所以在安装NPM时,在Linux环境下需要安装编绎环境:

apt-get install build-essential libudev-dev

这里有两个USB事件检测的NODE.JS包

node-usb


地址  https://github.com/tessel/node-usb

这个包除了可以检测USB端口的热插拔外,还可以与USB进行数据交互。

安装

npm install usb


使用

var usb = require('usb')

usb.on('attach', function(device) { 
});
usb.on('detach', function(device) { 
});

一小段数据传输的示例代码:

const GET_STATUS_INFO = 0xAA;
var device = usb.findByIds(vid, pid);

if(device){
  device.open();
  var interface = device.interfaces[0];
  interface.claim();

  var inpoint = interface.endpoints[0]; // interface.endpoint(id) don't work for id=0 btw
  var outpoint = interface.endpoints[1];

  var update_status_info = function(){
    var out_report = Buffer.alloc(128, 0);
    out_report[0] = GET_STATUS_INFO;
    outpoint.transfer(out_report, function(err){
      if(err) throw err;

      inpoint.transfer(128, function(err, data){
        if(err) throw err;

        // valid data packet received!
        // ...

        // update status regulary
        setTimeout(update_status_info, 500);
     }
  }

  update_status_info();
}

node-usb-detection


这个USB端口的插拔事件检测接口比较丰富:

地址  https://github.com/MadLittleMods/node-usb-detection

var usbDetect = require('usb-detection');
// Detect add/insert
usbDetect.on('add', function(device) { console.log('add', device); });
usbDetect.on('add:vid', function(device) { console.log('add', device); });
usbDetect.on('add:vid:pid', function(device) { console.log('add', device); });
// Detect remove
usbDetect.on('remove', function(device) { console.log('remove', device); });
usbDetect.on('remove:vid', function(device) { console.log('remove', device); });
usbDetect.on('remove:vid:pid', function(device) { console.log('remove', device); });
// Detect add or remove (change)
usbDetect.on('change', function(device) { console.log('change', device); });
usbDetect.on('change:vid', function(device) { console.log('change', device); });
usbDetect.on('change:vid:pid', function(device) { console.log('change', device); });
// Get a list of USB devices on your system, optionally filtered by `vid` or `pid`
usbDetect.find(function(err, devices) { console.log('find', devices, err); });
usbDetect.find(vid, function(err, devices) { console.log('find', devices, err); });
usbDetect.find(vid, pid, function(err, devices) { console.log('find', devices, err); });
// Promise version of `find`:
usbDetect.find().then(function(devices) { console.log(devices); }).catch(function(err) { console.log(err); });
社区评论 ( Beta版 )
  • #0 ios888 1511081145282

    高报酬寻安卓APP马甲封装上架技术人员。 请联系QQ 973177813 价格合理,长期合作

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 阿里涉嫌抄袭创业公司产品:在今天这个故事里,阿里巴巴就是四十大盗
  2. 垄断"开源硬件"树莓派芯片的供应商博通要收购高通了
  3. 从 Node 到 Go:一个粗略的比较—GO平均性能比JavaScript快十几倍
  4. 迫于社区压力:React(Native)16将更换成MIT开源协议
  5. Node也许不是构建大型服务的最佳选择—Node之父Ryan Dahl访谈录
  6. GitHub2017年度开发者报告 JavaScript依然遥遥领先Python突飞猛进
  7. 40行JavaScript代码实现的3D旋转魔方动画效果
  8. NodeJS动态传参特性:不定个数参数的省略,默认值与解构
  9. 招聘前端工程师
  10. 【干货】扫描识别控件Dynamic Web TWAIN在线示例汇总
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. NodeJS动态传参特性:不定个数参数的省略,默认值与解构
  2. 从 Node 到 Go:一个粗略的比较—GO平均性能比JavaScript快十几倍
  3. Node.JS中如何快速扫描端口并发现局域网内的Web服务器地址(80)
  4. Node.JS循环递归复制文件夹目录及其子文件夹下的所有文件
  5. 正则中test、exec、match的简单区别,以及括号的用法
  6. node.js使用unzip解压zip包指定文件,提取 word/excel (docx/pptx/xlsx) 文本内容
  7. Linux下用node.js提取Word(doc/docx)/PDF文本内容
  8. 用JavaScript获取当月第一天和最后一天
  9. Node.JSv8的5个新特性:支持string padding与async/await和object参数省略
  10. node.js中fs.stat里的atime,mtime,ctime,birthtime在debian下的更新规则与区别

 关键字 - 开源
  1. 15个最好用的Node.JS后端框架
  2. Mongoose学习参考文档——基础篇
  3. Node.JS与USB接口通信:检测U盘/移动硬盘插拔事件和发送接数据
  4. 一个程序员是如何搞挂NPM和Node社区的
  5. 迫于社区压力:React(Native)16将更换成MIT开源协议
  6. 开源Node.js商城:基于Thinkjs+Mysql的开源微信小程序商城
  7. 使用NodeJS搭建邮件自动发送服务器
  8. NodeJS 文件(夹)压缩/解压方案(zip/unzip)-Linux上zip相关命令
  9. QRCode:用纯JavaScript实现的微信二维码图片生成器
  10. Stop-Server:用手机关闭你的电脑

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号