开源改变世界!!

无故收到【检查门】消息?? #910

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

关闭
mariocaptain 打开了这个问题 2016 年 2 月 19 日 · 3条评论
关闭

无故收到【检查门】消息??#910

mariocaptain 打开了这个问题 2016 年 2 月 19 日 · 3条评论

注释

无故收到【检查门】消息?? #910

亲爱的团队,
我正在尝试将 stream.py 程序移植到 C#(成为免费软件)。事情似乎很简单,但实际上我发现我挠头已经一天多了。
问题是:

  1. 在收到几个“确定”后,我总是收到一条“[检查门]”消息,并且事情被搁置了。我不知道如何禁用此功能,因为我在 grbl 上看不到安全门的任何销钉。经过大量搜索后,我束手无策。

2.我发现对于非常短的 CNC 程序(总长度 < 127,包括换行符和回车符)我的 PC(核心 i3)运行得如此之快以至于这一行永远不会进入:
while sum(c_line) >= RX_BUFFER_SIZE-1 | s.inWaiting() :

这意味着计算机速度如此之快,以至于在发送了所有块(总长度<RX_BUFFER_SIZE-1)之后仍然没有从 GRBL 接收到任何“ok”或“error:”,因此它退出了。你能确认这是应该修复的东西,还是我的错?

我正在使用 v0.9j。
提前谢谢了!
戴夫·阮

PS 我的 C# 代码以防万一

foreach (DataGridViewRow dataGridRow in dataGridView3.Rows)
{
    block = dataGridRow.Cells[0].Value.ToString();
    rxBuffer.Add(block.Length + 1); 
    while (rxBuffer.Sum() >= RX_BUFFER_SIZE || serialPort1.BytesToRead > 0) //RX_BUFFER_SIZE = 127
    {
        //wait for GRBL response
        string grblResponse = serialPort1.ReadLine();   
        if (!(grblResponse.Contains("ok") || grblResponse.Contains("error"))) //doesn't have "ok" or "error"
        {
            //OUTPUT SYSTEM MESSAGE
            if (grblResponse.Contains("<")) // Real time status report
                updateCoordinates(grblResponse); 
            //TODO: OTHER TYPES OF MESSAGES HERE
        }
        else //contains "ok" or "error"
        {
            dataGridView3.Rows[responseCount].Cells[1].Value = grblResponse;
            dataGridView3.Refresh();
            responseCount++;
            rxBuffer.RemoveAt(0); //remove the responded block from the FIFO
        }
    }
    serialPort1.Write(block + "\n"); //send block to GRBL                                               
}

无故收到【检查门】消息?? #910

经过大量调试,发现是这两个block中的第二个block导致了问题:

(Code generated by My Program Name)
(@Feb/19/2016 16:26:20)

第一个块在发送后收到“ok”,但第二个块将收到 [Check Door]。具体来说,是“@”字符导致的。可能是什么原因?

我还测试并可以确认我提到的 2 问题。这种情况发生在非常小的程序(<127 个字符)或大型程序的最后几个块中。我正在考虑在 CNC 程序结束时引入一个小的延迟,以便 GRBL 有足够的时间做出响应。

谢谢!
戴夫

无故收到【检查门】消息?? #910
成员

@mariocaptain: ‘@’ 是一个未记录的实时命令字符。我会尽快更新文档。

无故收到【检查门】消息?? #910
桂立特 评论了 2019 年 4 月 12 日  

@mariocaptain: ‘@’ 是一个未记录的实时命令字符。我会尽快更新文档。

在别处找到更新的文档。可能是发生在我身上的事。也许通信错误将角色变成了@. 因为USB,我似乎遇到了很多麻烦。

喜欢 (0)