###Gtk3アプリ NodeRedとC#を連携する
####前提
Node.jsをインストールする
Node-Redをインストールする
###NodeRedを入門動画で学ぶ
###Nodeを配置する
以下のノードをFlowに配置します。
使用するノード |
---|
Inject node |
exec node |
Debug node |
####配置
####execノードにパラメーターを追加
コマンドと引数を追加します。
####C#コンソールアプリ側
Rider画面 コンソールアプリを選択する
コンソールアプリ実行時に取得した引数を出力するような内容です。
using System;
namespace nodeRedApp
{
class Program
{
static void Main(string[] args)
{
foreach (string str in args)
{
Console.WriteLine(str);
}
}
}
}
デプロイ 実行する
インジェクションノードから実行します。
C#のコンソールアプリで出力された文字列をmsg.payloadに取得できます。
このサンプルの例ではタイムスタンプと引数を出力させています。
node red exec 実行時にエラーが出た場合はパーミッションを変更します。
node red exec node permission deny
chmod 755 アプリ名
###func-execノードを使う
functionの中でexecコマンドが使えます。
[{"id":"18fa45e.dd993ba","type":"debug","z":"ce212a3e.f97778","name":"","active":true,"console":"false","complete":"false","x":560,"y":380,"wires":[]},{"id":"d649825e.ab13d","type":"inject","z":"ce212a3e.f97778","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":160,"y":300,"wires":[["3197e4b9.85addc"]]},{"id":"3197e4b9.85addc","type":"func-exec","z":"ce212a3e.f97778","name":"","func":"var exec = child_process.exec('ls -la', (error, stdout, stderr) => { \n if (error) { \n console.error(`exec error: ${error}`); \n return; \n } \n console.log(`stdout: ${stdout}`); \n console.log(`stderr: ${stderr}`); \n msg.payload = stdout;\n callback(msg);\n}); ","outputs":1,"noerr":0,"x":360,"y":340,"wires":[["18fa45e.dd993ba"]]}]
var command = '/nodeRedApp test1 test2';
var exec = child_process.exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
msg.payload = stdout;
callback(msg);
});
return msg;