質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

2093閲覧

Node.jsでGUI&RS232C接続のプログラムで、SerialPortのrequireでエラーが発生する

shinyaYS

総合スコア37

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2017/03/13 03:50

編集2017/03/14 04:54

Node.jsでGUIプログラムを構築しようとして、以下のHTMLをnw.exeで起動しました。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>node-webkitを試す</title> </head> <body> <script> var fs = require('fs'); fs.readFile('package.json', function (err, data) { if (err) throw err; document.write(data); }); </script> </body> </html>

すると、画面が表示され、package.jsonの内容が表示されます。

ここに、RS-232Cとの接続をしたいので、
var SerialPort, serialPort;
SerialPort = require("serialport");
の2行を
var fs = require('fs');
の前に挿入すると、何も表示されなくなります。

恐らく
SerialPort = require("serialport");
が失敗しているのだと思うのですが、原因が分かりません。

serialportは
npm install --save serialport
でインストールしました。

何がいけないのでしょうか?

ご教授下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

NW.exeにほとんど詳しくないのですが、一旦以下のようにしてもらってもいいでしょうか。

javascript

1try { 2var SerialPort, serialPort; 3SerialPort = require("serialport"); 4} catch (e) { 5 document.write(e); 6}

おそらく、 serialport の読み込み時に何かしらのエラーが発生したことによって error が発生し、 fs の読み込みまで到達せずにエラーになってるのではないかと思うのですが、そのデバッグのやり方が nw.js の場合どうやるのか詳しくないので一時的にこのようにログを出力してもらって様子を見てもらえると良いかもしれません。

あまりお力になれず、申し訳ありません。

投稿2017/03/15 01:31

yosuke_furukawa

総合スコア390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinyaYS

2017/03/15 03:54

ご回答ありがとうございます。 上記のJavaScriptを組み込んできました。 すると、エラーの内容がどこにも表示されず、package.jsonの内容が表示されます。 serialport の読み込みに成功したのかと思い、Scriptを以下のようにserialport のアクセスを追加してみました。 try { var SerialPort, serialPort; SerialPort = require("serialport"); } catch (e) { document.write(e); } var fs = require('fs'); fs.readFile('package.json', function (err, data) { if (err) throw err; document.write(data); try { serialPort = new SerialPort("COM1", { baudrate: 57600 }); serialPort.on("open", function(err) { if (err) { return document.write('failed to open:' + err); } else { document.write('open'); serialPort.on('data', function(data) { return document.write('data received: ' + data); }); return serialPort.write("test message", function(err, results) { if (err != null) { document.write('err ' + err); } return document.write('results ' + results); }); } } catch(e) { document.write(e); } }); すると、今度は何も表示されなくなってしまいました。 何が、どうなっているのでしょうか?
yosuke_furukawa

2017/03/15 07:16

おそらくなのですが、何かしらのエラーが起きると真っ白になるのかと思うので、 nw.js 内で toolbar: true にして開発者コンソールを開いてエラーがないかを見たほうが早そうです。 ちなみに nw.js に拘る必要が無いなら electron のがやりたい事に近そうな気がしました。 https://github.com/johnny-five-io/electron-serialport
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問