node.js + Arduino のアプリ化調査

更新(2015/08/09): アプリ化できるようになりました。

node-gyp でビルドターゲットを変更したり、できたファイルをリネームしたりすれば使えるという情報があった。

Build node serialport for electron

そして、ついにElectron用に修正したnode-serialportを公開する勇者が現れた。

ddm/node-serialport

ディレクトリ名が node_modules/serialport-electron となってしまうので、node_modules/serialport へ変更すると require(‘serialport’); で利用できる。

お手上げ
できた!

 



以下は古い情報です。


NW.js (node-webkit) (v0.8.6, v0.12.0)と atom/atom-shell (v0.22.2)に rwaldron/johnny-five を入れようとしたが、voodootikigod/node-serialport の結合がうまくいかずに挫折。

Chrome App 用の garrows/browser-serialport を使った garrows/johnny-five も試してみたが、なぜかシリアル通信はできなかった。

作業はすべてMacOS 10.9で行った。

Details

node-webkit + johnny-five

node-webkitはnw.jsと名前を変えていた。それに伴ってv0.8とそれ以降(現在v.0.12.0)はnativeモジュールとの結合方法も変更されていて、そのあたりも混乱している。

nativeモジュールの結合が難く、nw-gypやnode-pre-gypなどを入れてコンパイルの設定をし直すようなノウハウが掲示板で何度もやりとりされている。ただし、それを見てやってもserialportがどうしてもうまく動かなかった。

nw.js v0.8.6では「Node.js – node-webkitでネイティブモジュールを使う – Qiita」を参考にして、serialportモジュールのディレクトリ名を手で直したりして、Johnny-fiveを構成するところまでできた。しかし、エラーは出ないのだが、どうしてもポートを認識しなかった。

コンパイルされたserialportモジュールのディレクトリが’node-webkit-v14-*’などとなり、起動時に探しに行くのは’node-webkit-v43’だったりしてアクセスできないのだ。ディレクトリ名を手で変えて実 行することができても、なぜかコネクトまではできない。

Getting started with Johnny Five and Node Webkit · rwaldron/johnny-five Wiki」はWinodws専用だが、内容を読んで試してみたが、同様にserialportでだめだった。

atom-shell + johnny-five

atom-shellでも同様にやってみたが、serialportモジュールのディレクトリ名変更をしてもバージョンが違うと言われて利用できなかった。

jcblw/atom-hardware-demo」も同様にダメだった。

Chrome App + johnny-five

garrows/browser-serialportt」はChrome Appのブラウザ内からシリアル通信をするためのライブラリだ。「jgautier/firmata」はChrome Appとして動くときは ‘browser-serialport’ を使うようにしている。( rwaldron/johnny-five もこの jgautier/firmata を使っているが、browser-serialportを使わないようになっている。)

try {
  if (process.browser) {
    SerialPort = require("browser-serialport").SerialPort;
  } else {
    SerialPort = require("serialport").SerialPort;
  }
} catch (err) {
  SerialPort = null;
}

garrows/johnny-five」は’browser-serialport’ を利用するように変更されているので、そのデモ「garrows/browserbot-demos」を Browserify を使って動かしてみた。エラーログを見るとシリアルポートのリストアップまでできているようだが、通信確立までには至っていなかった。Chrome Appのデバッグ方法がわからずにあきらめた。

 


コメントを残す