开源改变世界!!

2. Joystick串口,建议:调试功能 #29

推推 grbl 2年前 (2023-02-09) 140次浏览
关闭
deHarro 打开了这个问题 2018 年 9 月 4 日 · 23条评论
关闭

2. Joystick串口,建议:调试功能#29

deHarro 打开了这个问题 2018 年 9 月 4 日 · 23条评论

评论

2. Joystick串口,建议:调试功能 #29

嗨 Sven,
我或多或少确定我的操纵杆向串行端口发出命令。
只是在 GRBL-Plotter 中没有可见的反应。
手写笔不动,坐标不变。

您能否实现某种调试功能,使字符串(或串行端口上接收到的任何内容)可视化,也许最简单的方法就是进入 DIY 控制板的列表框?
会没事的。谢谢!
哈拉尔德

2. Joystick串口,建议:调试功能 #29
所有者

嗨 Harald,
每个收到的命令都会显示在窗口中。我刚刚将第二个 arduino 与 grbl 一起使用并收到了已知的重置启动消息,然后将其转发给 grbl – 这会导致错误(因为它不是常规的 gcode)。
也许我需要提供停止位设置?
或者您可以尝试使用 grbl – com 设置吗?(8 个数据位,1 个停止位,无奇偶校验)

2. Joystick串口,建议:调试功能 #29
作者

嗨 Sven,
我的操纵杆使用“115200、8、1、n,无握手”,这只是 GRBL 使用的设置。

这是我在“白蚁”上设置的:

2. Joystick串口,建议:调试功能 #29

这是操纵杆和 GRBL 之间的通信:

2. Joystick串口,建议:调试功能 #29

COM14 是操纵杆,COM13 是 GRBL (V1.1f)。

只是有一个想法……为了在使用 Termite 进行调试时让 GRBL 满意,我发出“?” 操纵杆上的命令。
这可能会扰乱 GRBL-Ploter 和 GRBL 之间的通信。
我会停止“?” 在操纵杆上,因为那些“?” 由 GRBL-Plotter 发行。
我会报告…

哈拉尔德

2. Joystick串口,建议:调试功能 #29
所有者

您好 Harald,
在您的屏幕截图中我读到“$J=G91X 1F1000”-> 要成为常规 gcode,字符和数字之间不能有空格:“X 1”不是正确的 gcode – 据我所知。
要在保存站点上,我会在命令之间使用空格,例如“$J=G91 X1 F1000”
Sven

2. Joystick串口,建议:调试功能 #29
作者
德哈罗 评论了 2018 年 9 月 4 日  

嗨 Sven,
据我所知,GRBL 会丢弃 gcode 字符串中的空格。
但我可以按照您的建议进行更改。这将持续一段时间,因为我摆弄了指向结果字符串的指针以保持运行速度快。

反对您的想法的一个论据是,当朝负方向步进时,该空间被减号占用,并且该字符串也不会转发到 GRBL(或者至少它不会在 GRBL-Plotter 中显示)。
哈拉尔德

[编辑]
刚刚查了一下…
“-命令中允许使用空格和注释。这些已被预解析器删除。”
(来自https://github.com/gnea/grbl/wiki/Grbl-v1.1-Jogging

所以我会保留这些空间,在操纵杆上不做任何改变。
请验证 GRBL-Plotter 不会丢弃由命令和参数之间的空格组成的点动命令。
谢谢!
[\编辑]

2. Joystick串口,建议:调试功能 #29
所有者

您可能应该使用“CR anhängen”

2. Joystick串口,建议:调试功能 #29
作者
德哈罗 评论了 2018 年 9 月 4 日  

带或不带“CR”的 G 代码被视为相似。
我分别对 X 轴和 Y 轴有不同的实现(偶然,不是故意的 :),并且两者都没有显示在 GRBL-Plotter 中。

2. Joystick串口,建议:调试功能 #29

2. Joystick串口,建议:调试功能 #29
作者

与此同时,我放弃了发送“?” 在我自己的操纵杆上,但在 GRBL-Plotter 中没有变化。
在 GRBL-Plotter 中仍然没有可见的反应。

2. Joystick串口,建议:调试功能 #29
所有者

您是否像我一样尝试连接另一个 grbl?至少这应该有效……

2. Joystick串口,建议:调试功能 #29
作者
德哈罗 评论了 2018 年 9 月 4 日  

还没有…我会做并报告

[edit]
GRBL 报告如预期,那么现在呢?
有什么不同?

好的,用操纵杆进行新测试:
我激活 COM14(操纵杆端口)
-> 没有报告(没关系,我没有移动操纵杆)
我在 X 方向移动操纵杆
-> 没有报告(这不好,我希望“ $J=G91X-1F1000″)
我重置了操纵杆 arduino(通过点击 arduino 上的重置开关)
->(见图)
2. Joystick串口,建议:调试功能 #29

列表框内容说明:

  • 我关闭并重新打开端口以清除列表框 -> 这导致行“Open COM14”
  • 接下来我得到 “< $J=G91X 1F1000” 和另外两个
    $J=G91X 1F1000
    $J=G91X 1F1000
  • 然后两行
    ?$X
    < G4 P0.01

这是我通过将操纵杆触摸到负 X 方向很短的时间——在操纵杆复位之前——发出的输出,然后是两个 gcode 命令来复位 GRBL。

然后我显示一个操纵杆值循环以获得每个值的中间位置:
< 508; 520;505

< 507; 519; 522

我想我必须很好地丢弃这两个重置代码……
我会报告
[\edit]

2. Joystick串口,建议:调试功能 #29
作者
德哈罗 评论了 2018 年 9 月 4 日  

好的,没有任何改变(尽管现在省略了重置代码)。
在我重置操纵杆 arduino 之前,我再次一无所获。

我尝试在慢跑命令后附加一些东西(“CR”或“LF”或两者?),但按照我上面链接的慢跑教程,这不是必需的。

[编辑]
…我想,我已经附加了那些:

// konstruiere die Strings fuer die Jog-Befehle
//                  0.........1.........2.........3.........4.........5.........6.........7.........80	Abschaetzung HilfeBuf
//                  012345678901234567890123456789012345678901234567890123456789012345678901234567890
//                  |         |         |         |         |         |         |         |         |
// jogXChar[20] = {"$J=G91X-1F1000"};

// jogXChar[7]  								// Vorzeichen
jogXChar[8]  = '1';								// immer einen kurzen Step angeben
jogXChar[9]  = 'F';
jogXChar[10] = '1';
jogXChar[11] = '0';
jogXChar[12] = '0';
jogXChar[13] = '0';							
jogXChar[14] = '\r';							// Stringende Kennung
jogXChar[15] = '\0';							// statisch -> hier einfuegen

参见
jogXChar[14] = ‘\r’; // Stringende Kennung
jogXChar[15] = ‘\0’; // statisch -> hier einfuegen
[\编辑]

2. Joystick串口,建议:调试功能 #29
作者

好的,更进一步… :-)

我附加了“0x0D,0x0A”(即 CR LF),命令出现在 DIYcontrolPad 的列表框中。

那么接下来会发生什么?
GRBL-Plotter 中的坐标不会改变。

2. Joystick串口,建议:调试功能 #29
所有者

好的,至少 GRBL-Plotter 收到了一些东西。今晚我将检查串口配置——也许 rx-buffer 与 grbl-comport 不同。

2. Joystick串口,建议:调试功能 #29
所有者

这两个函数处理接收到的数据(与 grbl com 端口相同)。
命令行应以 \r\n (CR LF) 结尾才能被识别为一个命令。

    private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {   while ((serialPort.IsOpen) && (serialPort.BytesToRead > 0))
        {   rxString = string.Empty;
            try
            {   rxString = serialPort.ReadTo("\r\n");              //read line from grbl, discard CR LF
                this.Invoke(new EventHandler(handleRxData));        //tigger rx process 
                while ((serialPort.IsOpen) && (isDataProcessing)) ;  //wait previous data line processed done
            }
            catch (Exception errort)
            {   serialPort.Close();
                logError("Error reading line from serial port", errort);
            }
        }
    }

    private void handleRxData(object sender, EventArgs e)
    {
        rtbLog.AppendText(string.Format("< {0} \r\n", rxString));
        OnRaiseCommandEvent(new CommandEventArgs(rxString));
        isDataProcessing = false;
    }
2. Joystick串口,建议:调试功能 #29
作者

更新:
不确定是什么原因,但现在我可以用操纵杆慢跑了。

我发出了“重置”命令 ,现在与 GRBL 的通信似乎正常运行。
2. Joystick串口,建议:调试功能 #29

现在我可以开始调整步长和速度以适应棒的偏差。
到目前为止非常感谢!!!

2. Joystick串口,建议:调试功能 #29
所有者

非常好!我也很高兴!

2. Joystick串口,建议:调试功能 #29
作者

还有一个问题:
您是否将 GRBL 的“ok”响应镜像到 DIYControl 端口?(我自己还没有检查过)
这对于尽可能多地填充慢跑队列至关重要。

2. Joystick串口,建议:调试功能 #29
作者

如果我在处理操纵杆端口时遇到问题,我应该提出一个新问题吗?
(或在此主题中报告它们?)

2. Joystick串口,建议:调试功能 #29
所有者

所有发送的消息都将显示在 DIY 控制窗口中 – 每个 grbl 消息都在括号“[]”中,但没有“确定”。
我宁愿打开一个新问题并关闭这个问题——因为现在沟通正常——对吗?

2. Joystick串口,建议:调试功能 #29
作者
德哈罗 评论了 2018 年 9 月 4 日  

顺便问一下……
你如何处理来自操纵杆的即时命令?
发出点动中止命令时,没有像 CR 和/或 LF 这样的东西,只有 0x85 本身。

好吧,我明白你做了什么(或者更好的是你不做什么)。
就像更改之前的命令一样,中止命令保存在输入队列中(我假设是 GRBL-Plotter),然后转发到下一个点动命令前面的列表框(和 GRBL?)(参见红圈):

2. Joystick串口,建议:调试功能 #29

要让慢跑按预期工作,您还必须实施一种处理这些即时命令的方法。
副作用:如果你做到了,将不再需要用 CR LF 完成点动命令。

2. Joystick串口,建议:调试功能 #29
作者

嗨 Sven,
我的问题不是针对列表,而是关于“ok”是否转发到我的游戏杆 arduino。

这对我来说很重要,因为它可以让慢跑队列塞满。
连续点动时,可能会发生机器跟不上点动命令的情况。
为了防止在 GRBL 队列已满时发送命令,我必须停止发送命令。

或者这个问题是由 GRBL-Plotter 为操纵杆处理的吗?

2. Joystick串口,建议:调试功能 #29
作者

你好,我们又见面了!
你在别处说过(见#34(评论)),我应该检查我可以多快发送额外的点动命令。这对 Arduino 来说是可能的,但很复杂且耗时,我担心。

另一方面,他们提到,在发出下一个点动命令之前,必须等待来自 GRBL 的“ok”:

基本实现概述:
– 创建一个循环来读取操纵杆信号并将其转换为所需的点动运动矢量。
– 向 Grbl 发送一个非常短的 G91 增量距离点动命令,其进给速率基于操纵杆投掷。
在重新开始循环之前等待“ok”确认
– 持续读取操纵杆输入并发送 Grbl 短的慢跑动作以保持 Grbl 的规划器缓冲区已满。

我认为目前您不会将“ok”从 GRBL 转发到 DIY 端口。

2. Joystick串口,建议:调试功能 #29
所有者

我不想通过“确定”-在我眼中这是信息矫枉过正…
检查https://github.com/svenhb/GRBL-Plotter/blob/master/GRBL-Plotter_1208_test.zip

2. Joystick串口,建议:调试功能 #29
作者

好的,请关闭此问题。
无论如何谢谢到目前为止!:)