开源改变世界!!

不运行循环时限位开关跳闸时崩溃 #863

推推 grbl 2年前 (2023-01-27) 94次浏览
关闭
dastultz 打开了这个问题 2018 年 1 月 6 日 · 3条评论
关闭

不运行循环时限位开关跳闸时崩溃#863

dastultz 打开了这个问题 2018 年 1 月 6 日 · 3条评论

注释

不运行循环时限位开关跳闸时崩溃 #863
贡献者

在测试 DRO 工作时,我触发了一个限位开关并得到了这个,当时没有循环运行。我可以解决这个问题,但不确定该怎么做而不是崩溃。

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.rangeCheck(ArrayList.java:653)
	at java.util.ArrayList.get(ArrayList.java:429)
	at com.willwinder.universalgcodesender.AbstractController.getActiveCommand(AbstractController.java:494)
[catch] at com.willwinder.universalgcodesender.GrblController.rawResponseHandler(GrblController.java:170)
	at com.willwinder.universalgcodesender.AbstractController.rawResponseListener(AbstractController.java:853)
	at com.willwinder.universalgcodesender.AbstractCommunicator.sendEventToListeners(AbstractCommunicator.java:259)
	at com.willwinder.universalgcodesender.AbstractCommunicator.lambda$new$42(AbstractCommunicator.java:277)
	at com.willwinder.universalgcodesender.AbstractCommunicator$$Lambda$72/34389600.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)

不运行循环时限位开关跳闸时崩溃 #863
所有者

runningtoerror转换现在有点脆弱,因为发送和接收层是解耦的。

基本上,“通信器”层监视ok并使用它在空间可用时排队下一个命令。当有error(或alarm?)时,它需要暂停自己。我从未创建过pause事件,因此控制器层不会收到错误发生的通知,需要假设通信器做了某事。

实际上,此异常来自GrblController处理错误/警报的代码块。

此异常是在尝试构建错误消息以显示给用户时生成的,以通知他们哪个命令导致了警报。我不确定为什么没有命令,你手动触发限位开关了吗?

如果是,我认为捕获异常并调整错误消息以指示没有命令正在执行是正确的行为。

不运行循环时限位开关跳闸时崩溃 #863
贡献者作者

是的,我手动触发了限制,但是我有直接连接到微控制器的悬垂控件,所以大概我可以在慢跑时触发它,而 UGS 不知道当前的慢跑命令(尽管能够告诉它之前正在慢跑。)

好的,我会在运行一个循环时触发它,查看反馈并提出合适的东西。

不运行循环时限位开关跳闸时崩溃 #863
贡献者作者

我发现运行一个循环,当所有的线都送完了,但在GRBL上还没有运行完,再触发限位开关,同样的情况出现。

我检查了空AbstractController

@Override
    public GcodeCommand getActiveCommand() {
        if (activeCommands.isEmpty()) return null;
        return activeCommands.get(0);
    }

然后检查 nullGrblController并用“(命令不可用)”替换命令。这将导致

[INFO] com.willwinder.universalgcodesender.AbstractController$UnexpectedCommand: An unexpected command was completed by the controller.
[INFO]  at com.willwinder.universalgcodesender.AbstractController.commandComplete(AbstractController.java:821)
[INFO] [catch] at com.willwinder.universalgcodesender.GrblController.rawResponseHandler(GrblController.java:179)
[INFO]  at com.willwinder.universalgcodesender.AbstractController.rawResponseListener(AbstractController.java:857)
[INFO]  at com.willwinder.universalgcodesender.AbstractCommunicator.sendEventToListeners(AbstractCommunicator.java:259)
[INFO]  at com.willwinder.universalgcodesender.AbstractCommunicator.lambda$new$42(AbstractCommunicator.java:277)
[INFO]  at com.willwinder.universalgcodesender.AbstractCommunicator$$Lambda$72/982975020.run(Unknown Source)

我不知道如何进行。