0
我想我一直在代码中游泳太久。我是socket.io,node和express的新手。现在我在服务器端有一个电位器发出消息,而在客户端,我在javascript控制台(我正在使用Chrome)接收它们。我的目标是让电位器改变HTML页面上滑块的位置,这反过来会改变使用tone.js库的振荡器的频率。如何使用来自Socket.io的变量功能
我已经提出了200的上限,并打印任何东西。这里是服务器端的一个片段,我app.js
cylon.robot({
connections: {
edison: {
adaptor: 'intel-iot'
}
},
devices: {
button: {
driver: 'button',
pin: 2
},
sensor: {
driver: 'analogSensor',
pin: 0,
upperLimit: 200,
lowerLimit: 0
}
}
}).on('ready', cylonReady);
cylon.start()
// this will be called each time a socket is opened, so each client will receive their own events when buttons are pushed.
var registerSocketHandlers = function (my, socket) {
my.button.on('push', function() {
socket.emit('button', 'push')
})
my.button.on('release', function() {
socket.emit('button', 'release')
})
my.sensor.on('upperLimit', function (val) {
//console.log("Upper limit reached ===> " + val);
socket.emit('analogSensor', val)
});
}
我的客户端的一个片段,INDEX.HTML:
var potVal = 0;
socket.on('analogSensor', function (analogVal) {
potVal = analogVal;
console.log('sensor value', potVal)
});
new Interface.Slider({
drag: function (value) {
frequency.rampTo(value, 0.1);
},
start: function() {
Tone.Master.mute = false;
},
end: function() {
Tone.Master.mute = true;
},
name: "frequency",
min: 0,
max: 1,
exp: .5,
value: potVal/10, //original value is .5
position: 5
});
我已经看到了问题和答案在网上。主要是那些没有决心的结局。我仍然尝试过它们,并试图在上面的代码中看到的客户端设置全局变量,并在滑块中换出了值。它要么导致滑块完全不显示,要么对其没有影响。欢迎任何建议。谢谢!
如果你指定哪个变量,凡在你的代码有问题这将有助于,它在客户端还是服务器上?现在很难说出问题所在。我敢打赌,如果你再提示我们,你可以在这里得到帮助。 – 1cgonza
我们已经构建了一个功能齐全的Node.js应用程序,[aktos-webui](https://github.com/ceremcem/aktos-website),特别适用于这类应用程序;所以我确信我可以帮忙。但正如@ 1cgonza所说,你应该能够说出确切的问题。你做了什么,你期望什么,你得到了什么? – ceremcem
感谢您的回复。问题出在客户端。我正在寻找使用包含我的analogSensor值的potVal变量来更改滑块的位置。在上面的代码中,在客户端,我试过哪个是potVal/10。原始值是0.5。而不是能够控制滑块,滑块不显示。当我将滑块嵌套在socket.on函数中时,每当数值来自电位计时,它都会在网页上创建。 – LaraCat