开源改变世界

使用 Ctrl-X 重置 #1544

推推 grbl 3年前 (2023-01-24) 232次浏览

关闭
Rafael-Leal-Prada-dos-Santos 打开了这个问题 2019 年 8 月 22 日 · 11 条评论
关闭

使用 Ctrl-X 重置#1544

Rafael-Leal-Prada-dos-Santos 打开了这个问题 2019 年 8 月 22 日 · 11 条评论

注释

使用 Ctrl-X 重置 #1544

我正在用我的 Arduino Uno 测试 Grbl CNC Shield。除了 ctrl-x 命令外,一切正常。我试过 Arduino IDE 串行监视器,但它似乎无法识别。我试过:
按住 Ctrl 和 x 没有任何反应。
我尝试发送 ^X 或 ^x 但控制台响应“错误:异常命令字母”
我尝试在控制台上发送 0x18 并且它响应“错误:数字格式错误”

有没有人如何解决这个问题?
任何帮助,将不胜感激。

使用 Ctrl-X 重置 #1544

您不能以文本格式执行此操作。您需要发送与 ctrl-X 关联的特殊代码。在 visual basic 程序中,你会做类似的事情:

SerialPort1.Write(Chr(24))

所以它可以通过编程方式完成,但不能在文本编辑器或典型的串行端口通信监视器中完成。

使用 Ctrl-X 重置 #1544

喔好吧。所以我会把它放在我在这里做的 C# 代码中。我现在就试试。谢谢

使用 Ctrl-X 重置 #1544

好的,我这里有一个 C# 程序,我制作了一个“控制台”来键入命令,我试过这样:
if (txtEnviar.Text == “^X” || txtEnviar.Text == “^x”)
{
portaSerial.getPort().Write(char(24));
}

但是 C# 中的 .Write 使用了一些参数:
public void Write (char[] buffer, int offset, int count);

public void Write (string str);

public void Write (byte[] buffer, int offset, int count);

Visual basic 中的这个 char(24) 有什么作用?

使用 Ctrl-X 重置 #1544

ctrl-X 是一个特殊的 ascii 字符。”^X” 不这样做,它不能用可读字符表示。VB中的Char(24)就是它的ascii码。

使用 Ctrl-X 重置 #1544

我的 c# 代码

        WriteByte(24);

        public void WriteByte(byte data)
        {
            this.SerialPort.Write(new byte[1] { data }, 0, 1);
        }
使用 Ctrl-X 重置 #1544

谢啦。成功了!!在 C# 中找到相应的代码。对于需要它的人:
string s = Encoding.ASCII.GetString(new byte[]{ 24 });
SerialPort1.Write(s)

使用 Ctrl-X 重置 #1544

cnc_ard = serial.Serial(‘COM11’,115200)
y= “�\n”
cnc_ard.write(y.encode())

这将有助于 python 代码。(写 ctrl-x)

使用 Ctrl-X 重置 #1544

您不能以文本格式执行此操作。您需要发送与 ctrl-X 关联的特殊代码。在 visual basic 程序中,你会做类似的事情:

SerialPort1.Write(Chr(24))

所以它可以通过编程方式完成,但不能在文本编辑器或典型的串行端口通信监视器中完成。

嗨,约翰。我使用你的方法:首先,在 config.h 中,你需要为新角色更改以下行

#define CMD_SAFETY_DOOR 0x92 —> #define CMD_SAFETY_DOOR ‘&’
then in serial.c, case CMD_FEED_OVR_COARSE_MINUS: system_set_exec_motion_override_flag(EXEC_FEED_OVR_COARSE_MINUS); 休息;
只需将其向上移动大约 3 行到您看到以
case CMD_FEED_HOLD 开头的行:
当 g 代码运行时,我在 Arduino 串行监视器上键入“&”。但它在监视器上显示错误 1。请告诉我如何触发 feed override 命令.谢谢约翰

使用 Ctrl-X 重置 #1544

cnc_ard = serial.Serial(‘COM11’,115200)
y= “�\n”
cnc_ard.write(y.encode())

这将有助于 python 代码。(写 ctrl-x)

对不起,如果我使用 python 将 g 代码发送到 grbl,就像这样。
导入序列
导入时间

打开 grbl 串行端口 ==> 更改下面的内容以匹配您的 USB 位置

s = serial.Serial(‘/dev/tty.usbmodem1811’,115200) # GRBL 以 115200 波特运行。别管那个部分。

打开g代码文件

f = open(‘grbl.gcode’,’r’);

醒来吧

s.write(“\r\n\r\n”)
time.sleep(2) # 等待 grbl 初始化
s.flushInput() # 刷新串行输入中的启动文本

将 g 代码流式传输到 grbl

for line in f:
l = line.strip() # 去除所有 EOL 字符以保持一致性
print ‘Sending: ‘ + l,
s.write(l + ‘\n’) # 发送 g 代码块到 grbl
grbl_out = s. readline() # 等待带回车的 grbl 响应
print ‘ : ‘ + grbl_out.strip()

在这里等到grbl完成后关闭串口和文件。

raw_input(” 按退出并禁用 grbl。”)

关闭文件和串口

f.close()
s.close()
g代码运行时是否也可以发送实时命令(0x18)?

使用 Ctrl-X 重置 #1544

在 Python 中,命令 0x18 是 b’\x18′ !!

喜欢 (0)