开源改变世界

read_float 函数中有关前导零的问题 #375

推推 grbl 3年前 (2023-01-22) 462次浏览

关闭
setaperlacloche 打开了这个问题 2018 年 2 月 9 日 · 4条评论
关闭

read_float 函数中有关前导零的问题#375

setaperlacloche 打开了这个问题 2018 年 2 月 9 日 · 4条评论

注释

read_float 函数中有关前导零的问题 #375

以下所有 G 代码行:

- G0X1
- G0X1.00000000
- G0X000000001

是相同的。但是在 Grbl 中,最后一个被误解并变成了G0X0.
根据 G 代码规范 ( http://ws680.nist.gov/publication/get_pdf.cfm?pub_id=823374 p.17):

“请注意,初始(在小数点之前和第一个非零数字之前)和尾随(在
小数点之后和最后一个非零数字之后)零是允许的,但不是必需的。
用初始或尾随零写入的数字将具有读取时的值相同,就好像额外的零不
存在一样。”

可以通过在以下代码中插入read_float函数来添加前导零容差:nuts_bolts.c:51

  // Skip leading zeros
  while(c == '0') {
    c = *ptr++;
  }

你怎么认为 ?

read_float 函数中有关前导零的问题 #375
贡献者

@setaperlacloche: 第三个例子超过8位。Grbl 的 strtof 函数假定您将有 8 个或更少。

read_float 函数中有关前导零的问题 #375

我明白了,这是设计使然。

那么有没有可能:

  • 在 wiki 中(可能在 Home/Limitations by design 部分)添加一些词来警告用户此限制。
  • 返回错误 (Error:2) 而不是运行错误解释的命令。
read_float 函数中有关前导零的问题 #375
贡献者

我想。但是 NIST 文档没有说明允许多少个前导零或数字总数。实际上,没有人会在非零数字或小数前有 8 个前导零。

此外,Grbl 的字符串转换函数是标准库 strtof() 函数的简化版本。旨在最大限度地减少开销、大小和最大限度地提高速度。慢速 8 位处理器所需的一切。

由于空间和速度限制,我不会为 AVR 上的 Grbl 更改此设置,但可以为将来的版本更新它。

read_float 函数中有关前导零的问题 #375

不管它是否会被更改,我都会在清理级别的代码解析器中看到它(去除空白等)。在字符串到浮点数的转换中抛出前导/尾随零很浪费,并且剥离前导零很容易。

喜欢 (0)