Note*这是一篇旧文章,略有删减,但它所说的现在似乎正在成为现实。有人使用Javascript制作机器人和火箭,甚至有人使用JavaScript在工业时代的微控制器上制作天气预报屏幕。比XML数据更密集、性能更好的JSON数据交换格式也正在成为物联网传输的首选。支持NodeJS的硬件平台也越来越多,比如RaspberryPI、Tessel、Arduino。还有很多不为人知的JS库比如devicejs.orgSylon.js;很显然,用Node.JS来驱动你的物理设备,将大大降低“创客”的技术门槛。Friday,July13,20122010年9月7日,我错误地在node-serialport串口驱动开源项目中添加了“弃用”通知。我已经有一些经验,可以通过传感器监控使用各种无线频谱在较大的项目库(开放式API,如X10)之间进行通信。本来我用的是非常强大的pyserial库驱动,启动很顺利,但还是觉得在一些关键的与sensor交互的地方不方便。我承认这种感觉很不舒服。我不怀疑这个图书馆,它做得很好。此时,JSConfEU(欧盟)提出了NikolaiOnken和J?rnZaefferer关于JavaScript智能设备的提案。在提案中,他们表示使用JavaScript控制设备会非常简单,例如:$("livingroom").bind("motion",function(){$(this).find("lights").brightness("75%").dimAfter("120s");});这件事触动了我的神经。通过模拟现实世界中的对象和行为。链式、基于事件的处理看起来非常自然。就我而言,我正在处理串行响应,最好的例子是“在门打开时切换所有灯”。就像上面类似的jQuery代码一样。因为项目规模的增加,我们不再需要一个非常懂串口和Python的编程大师,只需要对JavaScript和jQuery有一个大概的了解。我认为这里有一些真正有价值的东西,于是我坐下来实现了代码。在编写第一个版本的node-serialport时,我想我会分享一些非常令人兴奋的事情。我看到很多相同的问题,就是你在使用Node.JS进行串行编程时经常遇到的那种,我想表达一下我的看法。我更喜欢使用Node.js来驱动arduino、无线设备、打印机、烤面包机等(所有可以通过串行端口连接的东西)。第一个也是最直接的原因是简单。NodeJS的模块体系和极低耦合的nativebinding,让我不用引用过多的Node库,传递几段代码,就可以快速完成底层功能的开发。这也让我减少了维护库的工作,充分利用时间解决实际问题,而不必整天去测试串口的功能。Node.js与传统C++代码的接口非常简单,实现起来几乎微不足道(前提是正确性得到保证),这就是我立即爱上它的原因。我知道有人对Python或Ruby的本地绑定有类似的感觉(或讨厌),但就我个人而言,我认为C和JavaScript之间的语法相似性使它们之间的编程更加顺畅,尽管跨越两种语言。如果你看看Node.JS的底层代码,一个C++的串口,你也许就能完全理解它,即使你只有JavaScript编程经验。不可否认,这可能有点令人困惑,但对我来说只是一点点,并没有掩盖我操纵底层串行端口的乐趣。这是值得研究的。虽然底层代码已经写好了,但我之所以继续贡献Node.js串口编码的代码,是希望能以更优雅的方式解决这类问题。如前所述,我在我的系统中使用Node、串行端口(Arduino等)。在大多数系统中,它们等待一些事件或数据,然后处理一些事件作为响应。这可以说是JavaScript的优势,绝大多数人都能搞定,他们可以用Node和JavaScript来思考。其他语言也可以,但JS无疑是最简单的,从底层c++代码到事件处理都得心应手,毫不费力。在Node.JS无线扩展机器人的文章中,有人问为什么选择JavaScript而不是Clojure或scala或Python或Ruby。我最直接的回答是,大量代码使得响应式系统(包括eventmachine/twisted/Redis/PubSub/等)的快速增长增加了对事件驱动机制的偏好。现在说实话,因为多个开源硬件平台(Raspberrypi、arduino、x10等)的出现,软件工程师现在也可以玩硬件了。有了这样的背景,相信会有越来越多的Ruby开发者使用Node.js来创建智能硬件原型。它重量轻,操作简单,可以轻松编写复杂的反应式系统。最重要的是,它基于JavaScript,因此即使您的原型因“更具生产价值”而失败,您也不会浪费太多时间。以下示例展示了Node.JS应用程序的轻量级。在Johnny-Five工作的RickWaldron制作了一个惊人的框架。查看用于处理来自加速器的事件的源代码。它非常易读、易于理解并且只需要10行代码。控制伺服机构的代码只有10多行。所有这些让我相信JS将成为未来智能设备控制器的首选编程语言。我这样说是因为每天我都听到越来越多的人在制造更新、更聪明、更聪明的东西。对我来说,它打破了软件和硬件的界限,这让我很开心。与单纯的写代码相比,智能硬件领域让我们更能接受现实,更有潜力去做更多更好的事情。原文地址:voodootikigod.com翻译:http://ourjs.com/detail/540d6ec9f50bcc0a66000007译者:ourjs
