1

コマンドをシリアルポートに書き込む関数を呼び出す単純なrestify Webサービスがあります

var restify = require('restify')
var com = require("serialport");

server.get('/scaleGetWeight/', getScaleWeight);
server.head('/scaleGetWeight/', getScaleWeight);

function getScaleWeight(req, res, next) {
    serialPort.write("S\r\n");
    res.send(?);
}

シリアルポートはイベントでリクエストを返します

serialPort.on('data', function(data) {
  console.log(data);;
});

結果をクライアントに返す正しい方法は何ですか?

4

1 に答える 1

0

そのイベント ハンドラーを RESTful ゲッター関数内に追加し、ハンドラー内で呼び出す必要がありますres.send()

どのシリアル ポート応答がどの HTTP 要求に属しているかを判断する必要があります。

一度に 2 つの HTTP リクエストを受け取った場合、ハンドラーを 1 回だけ実行しても役に立ちません。応答を要求にマップするには、アプリケーション レベルのロジックが必要です。

または、シリアル ポートに書き込む前に、保留中の要求が完了するまで新しい要求を待機させることもできます。(promise を使用すると、これを行うのがはるかに簡単になります)
1 つの悪い要求を受け取った場合に、永久にハングしないようにしてください。

于 2013-06-27T03:17:30.917 に答える