Windows用には、既にDesktopStationSoftwareというソフトが用意されていますが、ちょっととっつきにくいところがあります。そこで、DSair2のアプリをWindows上で動かせるようにElectronという開発環境を使って実現しようと考えてます。
ちなみにElectronは、中身はChrome(正確にはChromeのオープンソース版のChromium)とNode.jsでできてます。つまり、Webサーバーとブラウザが合体したツールで、この仕組みの中でDSair2のアプリを動かします。ということで、当然ながらネイティブ実行ではないので演算スピードはあまり出ませんが、DSair2のアプリはそんなにパワーを食うものでもないので、特に問題ないです。
しかし導入には過去なんども失敗して、思うようにできていませんでした。結果から言うと今回はうまくいきましたが、いろいろ悪戦苦闘したので、備忘録メモです。
・Node.jsを入れる。
・インストール後に、一緒に入っているInstall Additional Tools for Node.jsを使って追加ツールもインストールする
・アプリの名前は、airappとしておく。
・airappのフォルダに移動しておく。 cd X:/airapp
・npm install --save serialport
・npm i -save-dev electron-rebuild (electronをリビルドする準備)
・npm install --save-dev electron-prebuilt (prebultも入れておかないといけない)
・npm run rebuild
・electron-rebuild -w serialport (serialportを取り込んでリビルド?)
無事にインストールが終わっても、油断は禁物。
シリアルポートのリストを取得するには、promiseしないといけないようで、古い情報をそのまま使うとハマります。
const SerialPort = require('serialport');
// Promise approach
SerialPort.list().then(ports => {
ports.forEach(function(port) {
console.log(port.path);
console.log(port.pnpId);
console.log(port.manufacturer);
});
});
ログを取るとこんな感じで、Aruduino nano everyのUSBシリアルポートは取得できました。
COM8
USB\VID_2341&PID_0058\C2E637F55151363448202020FF164447
Atmel Corp.

■その他
・npm install -g asar
・パッケージ化できるようにしておく。npm i electron-packager -g
・パッケージ化するコマンドは、electron-packager ./airapp airapp --platform=win32 --arch=x64