开源改变世界

流.py错误 #73

推推 grbl 2年前 (2023-01-21) 224次浏览

关闭
cody82 打开了这个问题 2012 年 3 月 6 日 · 8条评论
关闭

流.py错误#73

cody82 打开了这个问题 2012 年 3 月 6 日 · 8条评论

注释

流.py错误 #73

我有时会在 stream.py 和 grbl_v0_8a_edge_328p_16mhz_9600_build20120212.hex 中遇到此错误:

SND: 1164 : X-81.726Y-25.121 BUF: 115 REC: ok1157
SND: 1165 : X-80.300Y-29.362 BUF: 117 REC: ok1158
SND: 1166 : X-78.633Y-33.571 BUF: 118 REC: ok1159
SND: 1167 : X-76.726Y-37.728 BUF: 119 REC: ok1160
SND: 1168 : X-74.578Y-41.813 BUF: 119 REC: ok1161
SND: 1169 : X-72.195Y-45.805 BUF: 119 REC: ok1162
SND: 1170 : X-69.582Y-49.685 BUF: 119 REC: ok1163
SND: 1171 : X-66.748Y-53.432 BUF: 119 REC: ok1164
SND: 1172 : X-63.702Y-57.029 BUF: 119 REC: ok1165
SND: 1173 : X-60.458Y-60.458 BUF: 119 REC: ok1166
SND: 1174 : X-57.029Y-63.702 BUF: 119 REC: ok1167
SND: 1175 : X-53.432Y-66.748 BUF: 119 REC: ok1168
Traceback (most recent call last):
  File "stream.py", line 70, in <module>
    out_temp = s.readline().strip() # Wait for grbl response
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 456, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)

发生此错误时,我还有一个实时视频:)
http://www.youtube.com/watch?v=ebH1A1NImYc

流.py错误 #73
成员

不错的机器!:) 很难说到底发生了什么,但首先,您使用的是最新版本的 stream.py 吗?有一个更新来解决它使用的字符计数方案中的缺失字符。像您遇到的随机错误会在旧版本上发生。更新后的版本在循环中应该有与此类似的行。

    c_line.append(len(l_block)+1) # Track number of characters in grbl serial read buffer
    grbl_out = '' 
    while sum(c_line) >= RX_BUFFER_SIZE-1 | s.inWaiting() :

如果不是这样,那么我们将不得不开始更深入地挖掘,比如这是否仅在 v0.8 边缘版本或 master 和 edge 上执行此操作;并且这是否发生在不同的主机和显示/注销睡眠设置上。

流.py错误 #73
成员

我只是快速搜索了错误。好像跟Linux和pySerial有关系。在 Linux 上,当它尝试从主机读取缓冲区中读取一个字节时,它将返回一个空字节,表明存在设备断开连接。这可能意味着 Arduino 连接在某个时候被断开,但我也看到 pySerial 源中可能存在错误,该错误会给出虚假错误。一个人在 serialposix.py 的第 456 行注释掉了 raise 异常行,似乎用它解决了他的问题。我不能说或建议您尝试这个,但我会先尝试使用非 Linux 计算机进行确认。

流.py错误 #73
作者

我正在使用带有您提到的行的脚本版本。我会检查其他选项。

流.py错误 #73
作者

直到现在都无法重现错误,因为它不经常发生。但我已经将 python 脚本翻译成 c# 用于测试目的:https ://github.com/cody82/GrblStreamSharp

流.py错误 #73
成员

问题。当它确实发生时,它是在程序中的同一个地方发生,还是在您的机器正在做某事时发生?比如在高负载下或运行超过一定时间(例如 5 分钟左右)?

另外,您的 C# 代码是否完全修复了它?如果是这样,那么 pySerial 可能就是罪魁祸首。

流.py错误 #73
作者

昨天我什至无法用 python 重现它。它很少发生并且不可重现。也许它甚至只发生在铣削计算机上。(我在另一台电脑上测试,但都运行 Ubuntu 11.10)

流.py错误 #73
成员

诡异的。这听起来像是您的铣削计算机或接线。测试时另一台计算机是否已连接到您的工厂并打开电源?你可以尝试的一件事是编写一个无限循环来发送相同的 g 代码文件,直到它返回一个错误,但我只使用连接的 Arduino,并将它与你的工厂隔离开来。这将告诉我们问题来自系统的哪一侧:计算机/grbl 一侧,或者是否有任何接线或电气问题反馈导致 grbl 崩溃。

流.py错误 #73
作者

一台计算机在工厂,另一台不在。今天,我使用与 python 脚本失败时相同的 mill-job 测试了 c# 程序。该作业有 12000 行,运行一个小时。我工作。当然,我本来可以很幸运的。到目前为止,这个问题发生了两次。两者都使用 python 脚本。我想我将不得不做更多的测试。

喜欢 (0)