注释
|
@cprezzi:我实际上更喜欢数字+字母方案而不是长单个数值。它在主观上更容易阅读,更短,并且不会被人眼误解。由于数字和字母值总是随着更新而增加,因此您可以在内部将其转换为数值以进行检查。 |
|
@cprezzi: 在 $I 构建信息字符串中也已经有另一个构建值。是年月日形式的推送日期。该值始终增加,您可以使用它来确定哪个版本是哪个。 |
|
此外,还可以使用小于、大于和等于检查来比较字符串。我已经用它来为我不久前写的另一个程序的字符串数组按字母顺序排列,并且在那里工作得很好。唯一需要注意的是大小写有点互换因为我们讨论的是版本号,格式和大小写是一致的,所以只要检查版本字符串就可以了。至少我认为应该如此。例如: a 大于 A |
|
当然,直到你达到两位数:) |
|
不可行,因为 1.11c 会小于 1.1e! |
|
该协议从 0.9 版更改为 1.x 版。看到 Grbl 之后的第一个数字是 0 或 1 没什么大不了的。为什么要把它搞得这么复杂?代码很简单。 GrblVersion = data.Substring(5, 1) |
|
@cprezzi:是的,但只需比较浮点值和字母。并且,对字符执行 toupper() 或 tolower() 以使其保持一致。我考虑为下一个 ARM 项目改变这个方案,但它不会为 Grbl 改变,因为它的直接开发接近尾声。 |
我同意。我正在编写的新 GUI 就是这样做的
在我们到达那里之前,我们必须通过发布的许多 1.1az、1.2az…1.9az 版本。我认为那将是相当长的一段时间。 |
|
我知道如何解析该值,但所有前端都需要自己解析,这并不方便。一个简单的内部版本号 (int) 会容易得多。 @gerritv这并不像您想象的那么容易,因为 1.1d 和 1.1e 之间存在安全相关的变化。(在 1.1e 之前激光不会自动停止!) |
|
@cprezzi:公平地说,Grbl v1.1d 和之前的版本都是用于解决问题和疏忽的测试版。Grbl v1.1e 是最终的主版本,没有计划对此版本进行更改。只是错误修复。 |
|
@chamnit:我知道,但我们不能确定没有人会尝试使用这些过时的测试版之一,我不想对伤害或火灾负责。你知道我的意思。 好吧,我不想再用我方便的事打扰你了。它像现在这样工作。 |


由于不同版本之间的协议变化,主机软件需要检测 Grbl 版本以相应地采取行动。
如果版本号只有数字而不是字母,那么检查版本“大于”或“小于”会更容易。或者可能有一个额外的内部版本号 (int)。