开源改变世界

stream.py 示例中的错误修复 #971

推推 grbl 2年前 (2023-01-23) 209次浏览

对话

stream.py 示例中的错误修复 #971

我很确定按位或不是意图。(阅读时发现;未实际测试。)

stream.py 示例中的错误修复 #971
成员

唔。感谢鹰眼和错字报告。有趣的是,我从来没有对位明智的“或”有任何疑问。我想两个布尔值的有点明智的“或”仍然会产生同样的结果?

stream.py 示例中的错误修复 #971
作者

不,这是不同的,因为不同的运算符优先级。我认为旧代码

while sum(c_line) >= RX_BUFFER_SIZE-1 | s.inWaiting() :

实际上评估为:

while sum(c_line) >= ((RX_BUFFER_SIZE-1) | s.inWaiting()):

所以我会说它是按位或将固件缓冲区限制 (127) 与当前准备从串行端口读取的字节数进行运算。

这“有效”是因为这个特定数字(127 或 0x7F)已经设置了大部分位。与任何小于 128 的值按位或运算不会改变任何位。但是,如果固件自上次 write() 以来传输了超过 127 个字节(这可能不会经常发生),则此代码可能会溢出固件的缓冲区。

因此,s.inWaiting() 部分也不起作用。我认为这意味着代码将在开始处理响应之前先填充固件的缓冲区。不是预期的那样,但我希望它也不会被注意到,因为这个错误的唯一后果是它延迟了调试打印。(除非主机的串行 RX 缓冲区先溢出,这是不太可能的。)

stream.py 示例中的错误修复 #971
成员

@martinxyz: 行。谢谢。我将在下一次推送时手动应用此修复程序。

stream.py 示例中的错误修复 #971 chamnit 关闭了这个 2016 年 4 月 25 日
免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

成功合并此拉取请求可能会关闭这些问题。

还没有

2名参加者
stream.py 示例中的错误修复 #971stream.py 示例中的错误修复 #971

喜欢 (0)