デジタル鉄道模型フォーラムDCC・メルクリン等のデジタル鉄道模型の話題でコミュニケーションできる場です。登録・利用は無料です。
デスクトップステーション(DesktopStation)のページはこちら
・無料の日本型超高品質DCCサウンドデータをWebで配布中!
・DesktopStationの商品やDCC部品は DesktopStation部品頒布からどうぞ。 ・DCC同人誌 PDFを無料で公開中!

2020年10月04日

ElectronでSerialportのメモ

最近は、HTML5とJavaScriptを使ってアプリを作るケースが増えてきました。これは、クラウド化が進み、ブラウザが一種のアプリとして使われるようになってきたからであります。DSair2も、FlashAirを活用することで、一種のサーバーとして機能させていることから、ブラウザでDCCの制御が可能になっています。

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.


electrontest_1.png

■その他

・npm install -g asar
・パッケージ化できるようにしておく。npm i electron-packager -g
・パッケージ化するコマンドは、electron-packager ./airapp airapp --platform=win32 --arch=x64
posted by yaasan at 14:52 | Comment(0) | 鉄道模型
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。