OurJS


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

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


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

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

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


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

NodeBots-JavaScript在智能设备驱动(物联网)中的崛起


分享到
分类 技术前沿   关键字 JavaScript   发布 ourjs  1410166473956
注意 转载须保留原文链接,译文链接,作者译者等信息。  
注* 这是一篇老文,略有删减,不过文中所述目前似乎正在变成现实。有人用Javascript制造机器人和火箭,甚至有人用JavaScript在工业时代的单片机上制作一个天气预报屏。比XML数据更密集,性能更好的JSON数据交换格式也在成为物联网传输的首选。支持NodeJS的硬件平台也在不断增多,如RaspberryPI, Tessel, Arduino 。还很多不知名的JS库 devicejs.org Sylon.js等;很显然,采用Node.JS来驱动你的物理设备,将极大地降低“创客”们的技术门槛。

星期五,2012年7月13日

在2010年9月7日,我犯了个错误,在node-serialport 串口驱动开源项目中添加了一个“不建议使用”的声明。我已经有了一些使用各种无线频谱在较大项目库之间进行通信的经验(开放API,像X10 ),通过传感器监测。本来我使用的是非常强大的pyserial库驱动,刚开始很顺利,但在一些与感应器交互的关键地方我还是感到了不便。我承认,这种感觉是非常不爽,我不是怀疑这个库,它已经做得也非常好了。

就在这个时候,JSConf EU(欧盟)展示了一个Nikolai Onken 和 Jörn Zaefferer 关于JavaScript智能设备的提案。在提案中,他们表示使用JavaScript控制设备将会非常简单,比如:

$("livingroom").bind("motion", function() {
  $(this).find("lights").brightness("75%").dimAfter("120s");
});

这个东西(好)拨动了我的神经。

通过模拟现实世界中的的对象和行为。链式的,事件化的处理过程看上去非常自然。对于我的情况,我处理的是串口响应,这样做的最好例子就是“当大门打开后,切换所有的灯”。就像上文那段相似的jQuery代码那样。因为项目规模的增加,我们已经不需要一个非常了解串行端口和Python的大师程序员,它只需要对JavaScript和jQuery有一个粗略的理解就可以了。我觉得这里有一些非常有价值的东西,我开始坐下来实现这些代码。

在编写node-serialport的第一个版本时,我想我应该分享几个非常另人振奋的东西。我看到很多同样的问题,采用Node.JS进行串口编程时经常会碰到的那种,我想表达一下我的看法。我更喜欢使用的Node.js驱动arduinos,无线装备,打印机,烤面包机等(一切可以通过串口连接的东西)。首先最直接的原因就是简单。NodeJS的模块系统和耦合非常低的原生绑定允许我能迅速完成底层功能的开发,而不必引用太多的Node库,通过几段代码。这也让我减小了对库维护的工作,充分利用时间去解决实际问题,而不必整天测试串口的功能。Node.js与传统的C+ +代码连接是如此之简单,几乎是微不足道的实施(保证正确性的前提下),这就是为什么我马上爱上了它的原因。我认识的人也有类似的感觉(或者恨)对Python或Ruby的本地绑定,但个人而言,我认为C和JavaScript之间的语法相似性使得它们之间的编程过程更加的流畅,尽管跨越两种语言。如果你看一下Node.JS的底层代码,一个串口的C++,你也许可以完全理解,即使你只有JavaScript编程的经验。无可否认,这可能会造成一点混乱,但对我来说只是一点点,完全无法掩盖我对操作底层串行端口的喜悦。这是值得研究的。


尽管底层代码已经写完了,但是我继续为Node.js串口编码贡献代码的原因是,我希望我可以以一种比较优雅的方式来解决这类问题。如前所述,我在我的系统中使用了Node,串口(Arduino的,等等)。在大多数系统中,在他们会等待某些事件或数据,然后处理一些事件的反应。这可以说是JavaScript的优势,绝大部分人都可以处理,他们可以使用Node和JavaScript来思考。你也可以用其他语言,但JS无疑是最简单的,从低层的c++的代码,到事件处理都得心应手,毫不费力。在有关Node.JS无线扩展机器人一文中,有人询问为何不是Clojure或scala或Python或Ruby而选择JavaScript我最直接的答案是,大量代码成就了响应式的系统(包括eventmachine/ twisted/ Redis/ PubSub/等)此类系统的快速增长增加了对事件驱动机制的喜爱。现在诚实地讲,因为多种开源硬件平台的出现(Raspberry pi, arduino, x10等),软件工程师现在也可以玩硬件了。在这种背景后,我相信会有越来越多的Ruby开发人员使用Node.js创建智能硬件原型。它更轻量级,操作简单,并且很容易编写复杂的响应式系统。最重要的是它基于JavaScript,因此即使你的原型因为某些“更值得生产的”东西而失败了,你也不会损失太多时间。


下面这个例子是展示Node.JS的应用有多轻量级, 在Johnny-Five工作的Rick Waldron做出的惊艳的框架,看看从acceleromator处理事件的源代码。它非常易于阅读,易于理解而且仅需要10行代码。控制伺服机构的代码,也仅有10多行。

所有这些都让我相信,JS将是未来智能设备控制器的首选编程语言。

我这样说是因为我每天都听到越来越多的人作出更新,更亮,更智能的东西。对于我来讲,它打破了软件和硬件的边界,这让我很开心,相对于纯碎地写代码,智能硬件领域让我们更接受真实,我们有更大的潜力做些更多更好的事情。

原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM
  2. JavaScript中的继承,构造函数以及new关键字的作用
  3. CSS的力量:用一个DIV画图
  4. 微软Azure云推出基于JSON的NoSQL数据库DocumentDB
  5. 内存管理技巧:如何避免JavaScript的内存泄露
  6. 前置逗号是不好的JavaScript代码书写习惯吗?
  7. 响应式设计在图片上的应用: 一个HTML元素如何让Web更快
  8. 为JavaScript设计一个指数操作(运算)符
  9. Chrome V8将实现ES6的类语法(class)
  10. 在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 技术前沿
  1. 响应式设计在图片上的应用: 一个HTML元素如何让Web更快
  2. 微软Azure云推出基于JSON的NoSQL数据库DocumentDB
  3. Chrome V8将实现ES6的类语法(class)
  4. 自己动手写CSS流式(响应式)布局
  5. 为JavaScript设计一个指数操作(运算)符
  6. TJ Holowaychuk将Express维护权移交给StrongLoop
  7. 主流搜索引擎闯入Linux命令行世界
  8. Android即将支持GO语言,从游戏开始
  9. 8款适合Linux用户使用的数据库管理工具!
  10. 用Javascript制造机器人和火箭

 关键字 - JavaScript
  1. 如何用CSS将select/option文本居中或居右对齐
  2. 你用什么代码编辑工具开发JavaScript?
  3. JavaScript条形码生成和扫码识别(Barcode scan)开源库
  4. 40行JavaScript代码实现的3D旋转魔方动画效果
  5. 使用Javascript将相对路径地址转换为绝对路径
  6. 给checkbox选择框设置不选中时的值
  7. 用原生HTML5控件实现输入框自动提示(下拉列表补全)功能
  8. JavaScript中怪异的地方
  9. 在JavaScript中创建命名空间的几种写法
  10. JavaScript中的继承,构造函数以及new关键字的作用

 欢迎订阅 - 技术周刊

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


 关注我们

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

ourjs官方微信号