开源改变世界

Yaml_Settings 分支 – 浮点值在 WebUI JS 中不起作用 #933

推推 grbl 3年前 (2023-01-30) 131次浏览
打开
porton1 打开了这个问题 2021 年 7 月 3 日 · 0 条评论
打开

Yaml_Settings 分支 – 浮点值在 WebUI JS 中不起作用#933

porton1 打开了这个问题 2021 年 7 月 3 日 · 0 条评论

注释

Yaml_Settings 分支 - 浮点值在 WebUI JS 中不起作用 #933

我怀疑你也知道这一点。这代替了推送请求。

首先,嗯,恕我直言,这不是一个好主意,正如 JsonGenerator.cpp 中 item(const char* name, float& value, …) 版本第 90 行的代码转向使用隐式定点十进制整数所证明的那样.

我通过使用和分析 JS 发现,WebUI javascript 不关心你给它什么样的值,并且当作为类型“I”传递时“浮点数”工作得很好……WebUI JS 将接受您提供的任何内容并将其显示给用户,并且不会阻止用户在“I”整数字​​段中键入点,然后它会发送“您”他们碰巧在该字段中键入的任何内容,仅使用 javascript 更大的范围检查 -比和小于运算符(它们是多态的)。

所以我改变了 JsonGenerator.cpp::item() 的浮动版本的主体,如下所示:

void JsonGenerator::item(const char* name, float& value, float minValue, float maxValue) {
-        int n = int(value * 1000);
-        item(name, n, int(minValue * 1000), int(maxValue * 1000));
+
+        // prh - rude "fix" for floats in WebUI
+
+        enter(name);
+        char buf[32];
+        sprintf(buf,"%0.3f",value);
+        _encoder.begin_webui(name, _currentPath, "I", buf, minValue, maxValue);
+        _encoder.end_object();
+        leave();
+
+        // int n = int(value * 1000);
+        // item(name, n, int(minValue * 1000), int(maxValue * 1000));
 }

这个,连同在我的其他相关“问题”中提到的对 ESP3D JS 的更改,几乎可以让设置在浏览器中工作,这是我在尝试将我的 vPlotter 东西添加为可配置对象之前想要的东西。

至于在上面的代码中将整数传递为最小和最大范围,我现在不想深究。我认为浮点范围的限制是整数有点“合理”。JS 不关心…它只使用“>”和“<”,无论类型如何。

对于这种通信的格式,我们深表歉意,这接近于作为推送请求会更好的东西。我仍然保持我的“Yaml_Settings”分支与主存储库的 HEAD 完全同步,以便轻松地将您的日常更改合并到我正在进行的工作中。

无论如何,再一次,早上好,我希望今天是美好的一天!

和平!
– 帕特里克

Yaml_Settings 分支 - 浮点值在 WebUI JS 中不起作用 #933 porton1 添加了 漏洞 有些东西不工作标签 2021 年 7 月 3 日

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
漏洞有些东西不工作
项目

还没有

发展

没有分支机构或拉取请求

1名参加者
Yaml_Settings 分支 - 浮点值在 WebUI JS 中不起作用 #933

喜欢 (0)