首页 > 解决方案 > Python、Paho、Raspberry Pi、SenseHat 和 Sliders。我希望在移动滑块时不重置这些值

问题描述

长时间堆栈溢出用户 - 第一次调用者!

我目前正在开发 HTML 和 Python Paho 服务器。我拥有该程序的全部功能,但被困在最后一点。

如果 sense hat 正在运行(或 sense_emu),则滑块可用于更改所有像素的 RGB 值。当我停止服务器并在访问网站时重新运行时,这些值从服务器停止时开始正确显示,包括正确位置的滑块。

问题是当我移动其中一个滑块时,剩余的 2 个重置为 0。我可以看到问题出在哪里,但不知道如何解决它。

client.onMessageArrived = function onMessageArrived(message) {

            console.log("onMessageArrived:" + message.payloadString + " for topic " + message.destinationName);

            var data = JSON.parse(message.payloadString);

            if (message.destinationName === TOPIC) {
                $("input[type=range].redLevel").val(data.r);
                $("#redLevel").html(data.r);
                $("input[type=range].greenLevel").val(data.g);
                $("#greenLevel").html(data.g);
                $("input[type=range].blueLevel").val(data.b);
                $("#blueLevel").html(data.b);
            }
        }

这是我正在修复的代码

$(document).ready(function() {


            $("#clientId").html(CLIENT_ID);
            levelR = 0;
            levelG = 0;
            levelB = 0;


            $("input[type=range].redLevel").on('input', function() {
                levelR = $(this).val();

                payload = {
                    "r" : levelR, "g" : levelG, "b" : levelB
                 };


                var message = new Paho.Message(     
                   JSON.stringify(payload)
                );

                message.destinationName = TOPIC;         
                message.qos = 2;
                message.retained = true;                  
                client.send(message);
            });
            $("input[type=range].greenLevel").on('input', function() {
                levelG = $(this).val();

                payload = {
                    "r" : levelR, "g" : levelG, "b" : levelB
                 };


                var message = new Paho.Message(                
                   JSON.stringify(payload)
                );

                message.destinationName = TOPIC;  
                message.qos = 2;
                message.retained = true;
                client.send(message);
            });
            $("input[type=range].blueLevel").on('input', function() {
                levelB = $(this).val();

                payload = {
                    "r" : levelR, "g" : levelG, "b" : levelB
                 };


                var message = new Paho.Message(    
                   JSON.stringify(payload)
                );

                message.destinationName = TOPIC;  
                message.qos = 2;
                message.retained = true;   
                client.send(message);
            });
            
        });

标签: pythonhtmlraspberry-pipahosense

解决方案


我设法通过在每个滑块的事件侦听器中放置一个不同的值获取器来解决这个问题(显示的是使用 $(this) 而不是类 .identifier 的红色滑块)

        $("input[type=range].redLevel").on('input', function() {
            levelR = $(this).val();
            levelG = $(".greenLevel").val();
            levelB = $(".blueLevel").val();

感谢您为我指明正确的方向。


推荐阅读