2016年4月16日土曜日

electron.jsで外部プログラムの標準入出力を制御

概要
electron.jsでjavascriptなプログラムをクロスプラットフォームで使えるのだけど、
速度重視やデバイスに依存するプログラムにはまだ適さないように思う。
その場合、c/c++などを用いることになるが、でもGUIまで作るのは非常に骨が折れる…
GUIはelectronを使ってhtmlベースでサックリと済ましてしまって、他の部分はc/c++に頑張ってもらう構成を考えた。
なんだか.netみたいな考えになってしまうけど。



構成
コアとなるのは、サーバー側のindex.jsとレンダラ側のmyapp.js間のIPC通信と
外部プログラム制御のためのchildp.jsのchild_process。

外部プログラム「ec_child_test」
CUIベースのカウントアップダウンタイマーとした
STARTでカウント開始、UPでカウントアップ、DWONでカウントダウン
カウントは1秒周期、STOPでカウント停止、EXITでプログラム停止という単純なもの。
プログラムは最後にまとめて載せた。(gistで部分的に表示する方法は無いのかな・・)
と思ったら、あった。embeddedコードに「?file=[ファイル名]」とすれば良いみたい。


サーバー側「index.js」と「childp.js」
・index.js
  IPC通信でレンダラからもらった命令をchildp.jsに伝えているだけ
・childp.js
  外部プログラムの制御担当
  といっても子プロセスでプログラムを起動して、その標準入出力に読み書きを
  行っているだけ。プロセスの生成監視はもっと厳密にしないといけないが、
  今回はこのまま。
  あと、node側が終了しても子プロセスが生きているので、別途終了処理が必要。

レンダラ側「index.html」と「myapp.js」
・index.html
  
・myapp.js

参考
いろいろなHPを参考にさせてもらいましたが、たくさんありすぎて+時間が経ちすぎて忘れたOrz

その他
「ググるよりもググられたい」という広告が出ていた。刺さる。
なかなか実現できないこともあるけど、まだ諦めずに頑張ろうと思う。


0 件のコメント:

コメントを投稿