まずは - 私はコーダーではない、私はここに初めて投稿する。私は数日間さまざまな方法を試して、これを動作させることはできません。Node.js + JavaScript:戻り値、[オブジェクトHTMLDivElement]
シリアルポートからWebページに受信される温度の表示に問題があります。
var http = require('http');
var express = require('express');
var app = express();
var SerialPort = require("serialport");
var server = http.createServer(app).listen(8080);
var io = require('socket.io').listen(server);
app.use(express.static(__dirname + '/public'));
var serialport = new SerialPort("/dev/cu.wchusbserialfd1210", {
baudrate: 9600,
parser: SerialPort.parsers.readline("\r\n")
});
serialport.on('open', function(){
// Now server is connected to Arduino
console.log('Serial Port Opened');
var lastValue;
io.sockets.on('connection', function (socket) {
//Connecting to client
console.log('Socket connected');
socket.emit('connected');
var lastValue;
serialport.on('data', function(data){
console.log(`Serial got: ${data}`);
var temperature1 = data.trim();
if(lastValue !== temperature1){
socket.emit('data', temperature1);
}
lastValue = temperature1;
});
});
});
その後のindex.htmlに、私はこの機能を作成しました::
function getTemperatureA() {
var socket = io.connect('http://localhost:8080');
var temperature1 = 0;
socket.on('data', function (data) {
tt1 = data;
});
return tt1;
}
とのindex.htmlファイルで、私は使用をここで
は私のapp.jsコードですこのコード:
document.getElementById('tt1').innerHTML = "Temperature: " + getTemperatureA();
私はこれを取得:
温度:このindex.htmlをで
function getTemperatureA(id) {
var socket = io.connect('http://localhost:8080');
var temperature1 = 0;
var box = document.getElementById(id);
socket.on('data', function (data) {
box.innerHTML = data;
});
}
そして:
<div id="tt1"></div>
getTemperatureA('tt1');
[オブジェクトHTMLDivElement]
私はこのように私の機能を使用する場合それからそれは働いており、温度を24.2(例えば)と示しています。
したがって、値を返す方法が主な質問です。関数の値を使って温度のゲージを描くには、この値が別の関数で必要ですか?
このような状況では値を返すことはできません。関数の2番目のバージョンは、それがうまくいくはずです。 – Pointy