Ich habe erfolgreich die Anweisungen zum Erstellen einer Webseite mit den seriellen Schnittstellen gefunden here zu folgen. Und hier ist die GitHub repository for his project. Ich habe es leicht geändert, um Windows COM-Ports zu verwenden und die Arduino-Daten zu fälschen. Jetzt versuche ich, es weiter zu modifizieren, um mit einem der Testboards meiner Firma zu sprechen. Ich habe eine bidirektionale Kommunikation eingerichtet, sodass ich weiß, dass ich über die serielle Schnittstelle in beide Richtungen sprechen kann.Senden CR LF in JavaScript-Zeichenfolge zu node.js Serialport-Server
Senden id?CRLF
über serielle auf der Platine wird eine Antwort von etwas wie id=91
erhalten. Ich kann dies in PuTTY tun, indem Sie einfach id?
& drücken die Enter-Taste oder in DockLight durch Erstellen einer Sendefolge id?rn
, die beide wie erwartet funktionieren, bekomme ich die id=91
Antwort.
Allerdings versucht im Client client.js zu versuchen, senden:in der Konsole nicht, aber ich sehe es mit einer zusätzlichen Zeile in der Serverantwort angezeigt. So sehe ich etwas wie folgt aus:
Message received
id?
<=blank line
Also habe ich versucht, indem Sie die ASCII-Äquivalente zu senden:
var id = String.fromCharCode(10,13);
socket.send("id?" + id);
Was auch nicht funktioniert, obwohl zwei zusätzliche Zeilen in dem Server angezeigt.
Message received
id?
<=blank line
<=another blank line
EDIT: Ich habe auch versucht: socket.send('id?\u000d\u000a');
gleiche Ergebnisse wie die erste Nachricht Klappentext oben erhalten.
ich den gesendeten Befehl sehen ankommen auf dem Server (ich es ein wenig geändert haben von dem Client eine console.log beim Empfang einer Nachricht zu tun):
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
});
}
Ich bin nicht positiv, dass die CRLF das Problem ist, aber ich bin mir ziemlich sicher, dass es ist. Möglicherweise wird es vom Server verschluckt?
Wie kann ich es in eine Zeichenfolge einbetten, die an den Server gesendet wird, damit es richtig interpretiert und an die serielle Schnittstelle gesendet wird?
Andere SO Seiten, die ich gelesen habe:
How can I insert new line/carriage returns into an element.textContent?
JavaScript string newline character?