hereというシリアルポートと通信するためのウェブページを作成する手順に成功しました。そしてここにはGitHub repository for his projectがあります。 Windows COMポートを使用してArduinoデータを偽装するように少し修正しました。今私は私の会社のテストボードの1つと話すためにそれをさらに修正しようとしています。私は双方向通信を確立しているので、私はシリアルポートを介して双方向に話すことができることを知っています。JavaScript文字列のCR LFをnode.jsシリアルポートサーバーに送信
id?CRLF
をボードに送信すると、id=91
のような応答が得られます。私はPuTTYで、入力キーid?
&を入力するか、DockLightでid?rn
という送信シーケンスを作成して、両方とも期待どおりに動作すると入力すると、id=91
という応答が得られます。
しかし、client.js JavaScriptでは、コンソールにsocket.send("id?\r\n");
を送信しようとすると機能しませんが、サーバーの応答に余分な行が表示されます。 2つの余分な行がサーバーにアップ示しているが、
var id = String.fromCharCode(10,13);
socket.send("id?" + id);
を:だから私は実行してASCII同等物を送信しようとした
Message received
id?
<=blank line
:だから私はこのような何かを参照してください。
Message received
id?
<=blank line
<=another blank line
編集:私も試してみた:上記の宣伝文を受け取った最初のメッセージとしてsocket.send('id?\u000d\u000a');
同じ結果を。
私が送信されたコマンドを参照してくださいには、(私はクライアントからのメッセージの受信時にconsole.logを行うには、それを少し変更した)サーバーに到着:
function openSocket(socket){
console.log('new user address: ' + socket.handshake.address);
// send something to the web client with the data:
socket.emit('message', 'Hello, ' + socket.handshake.address);
// this function runs if there's input from the client:
socket.on('message', function(data) {
console.log("Message received");
console.log(data);
//here's where the CRLF should get sent along with the id? command
myPort.write(data);// send the data to the serial device
});
// this function runs if there's input from the serialport:
myPort.on('data', function(data) {
//here's where I'm hoping to see the response from the board
console.log('message', data);
socket.emit('message', data); // send the data to the client
});
}
私は肯定ありませんよ CRLFが問題だとは思っていますが、それは確かです。サーバによって飲み込まれている可能性がありますか?
これを文字列に埋め込んでサーバーに送信すると、正しく解釈されてシリアルポートに送信されます。私が読んだ
その他のSOページ:
How can I insert new line/carriage returns into an element.textContent?
JavaScript string newline character?