Contact me: hankecnc@gmail.com

尝试更新马林鱼的吊坠 #434

推推 grbl 3年前 (2023-02-02) 231次浏览
打开
13 个任务中的第 4 个
mattr254 打开了这个问题 2019 年 3 月 23 日 · 13条评论
打开
13 个任务中的第 4 个

尝试为马林更新吊坠#434

mattr254 打开了这个问题 2019 年 3 月 23 日 · 13条评论

注释

尝试更新马林鱼的吊坠 #434

描述

我正在尝试更新 Pendant 以与 Marlin 一起工作,我能够通过将代码从 G90、G91 G0(移动)G90 更新为 G91 G0(移动)G90 来更新 XYZ 慢跑前进。所以我能够让它发挥作用。
我有几个问题想弄清楚。
1 Pendant 如何告诉 CNCjs 控制器类型,当我选择 null 时,我注意到一个服务错误:cncengine,是吗?它能识别“Marlin”这个词
2 这将是一个真正的白日梦,我如何从服务器获取位置更新?

版本

  • CNCjs:1.9.x
  • 节点.js:6.x
  • NPM:5.x

你如何安装CNCjs?

  • NPM
  • 下载 CNCjs 桌面应用程序

数控系统

  • 马林鱼
  • Grbl
  • 冰沙
  • TinyG/g2核心

硬件

  • 树莓派
  • 台式机或笔记本电脑
  • 移动设备

操作系统

  • 不适用
  • 视窗
  • 苹果
  • Linux
尝试更新马林鱼的吊坠 #434

控制器类型由 /src/app.js 从第 39 行开始确定。以下是摘录:

    cnc.controllerType = controllerType;
    cnc.port = port;
    cnc.baudrate = baudrate;

    $('[data-route="workspace"] [data-name="port"]').val(port);

    Cookies.set('cnc.controllerType', controllerType);
    Cookies.set('cnc.port', port);
    Cookies.set('cnc.baudrate', baudrate);

    if (controllerType === 'Grbl') {

在 src/controller.js 中有一个“系统事件”的回调列表。该列表包括“Grbl:state”、“Smoothie:state”等事件。在其下方有如下行:

            if (eventName === 'Grbl:state') {
                this.type = GRBL;
                this.state = args[0];
            }

您需要为 Marlin 添加相应的条目。

src/app.js 包含处理这些事件的代码。例如:

controller.on('Grbl:state', function(data) {
    // If we do not yet know the reporting units from the $13 setting, we copy
    // the data for later processing when we do know.
    if (typeof grblReportingUnits === 'undefined') {
        savedGrblState = JSON.parse(JSON.stringify(data));
    } else {
        renderGrblState(data);
    }
});

要确定机器位置,您可以查看作为 Marlin:state 事件参数的数据。根据我对 cncjs 代码的阅读,该数据将具有一个“pos”属性,其中包含 x、y、z 和 e 等子属性。所以data.pos.x应该是x位置。

准确确定该数据对象中的内容的一种简单方法是使用 Chrome 浏览器中的开发人员工具。浏览到挂件页面,启动开发人员工具,然后在处理 Marlin:state 事件的函数上设置断点。然后你可以将鼠标悬停在标识符“数据”上,开发人员工具将向你显示其中的内容。

作为良好的编码习惯,最好不要假设所有属性都将始终存在。您可能会得到一些仅包含可能属性的子集的 Marlin:state 报告,因此最好编写代码,使其仅对当前存在的属性做正确的事情。

尝试更新马林鱼的吊坠 #434
作者

我无法理解它,我已经更新了 controller.js 以包含新的约束
var MARLIN = ‘Marlin’;
添加了新的回调
‘Marlin:settings’: [],
‘Marlin:settings’: [],
甚至添加了事件
if (eventName === ‘Marlin:state’) {
this.type = MARLIN;
this.state = args[0];
}
if (eventName === ‘Marlin:settings’) {
this.type = MARLIN;
this.settings = args[0];
吊坠仍然将设备视为“未连接”
通过
mpos.x 甚至尝试将其插入文本框我得到空数据
我真的不明白 apps.js 如何从服务器调用位置我查看 CNCjs 上的 Marlin 控制器并看到它通过 posx , posy 等识别每个轴
我看到它如何确定位置

if (this.query.type === QUERY_TYPE_POSITION) {
this.connection.write(‘M114\n’, {
source: WRITE_SOURCE_SERVER
我只需要了解如何从 CNCjs 中提取数据,

尝试更新马林鱼的吊坠 #434

您不会从 CNCjs 中“拉取”数据。CNCjs 发送带有数据的事件。

您收到的第一个通知来自 “controller.on(‘serialport:open’, function(options) {” with cnc.controllerType == ‘Marlin’

稍后您会收到来自“controller.on(‘Marlin:state’), function(data) {”的通知

尝试更新马林鱼的吊坠 #434 奇顿 添加了 问题 标签 2019 年 3 月 25 日
尝试更新马林鱼的吊坠 #434
作者

所以我学到了很多,甚至在这个问题上取得了一些进展。我的第一个发现是检查器工具的控制台。这有助于负载。马上我有 2 个状态而不是 1 个状态和一个设置。
继续前进,我看到了服务器和终端之间的交互。
所以深思 controller.writeln(‘M114’) 将 Gcode M114 发送到服务器,服务器向我发送坐标回复。
我正在使用 controller.on(‘serialport:read’, function(data) { 读取下一行并开始将字符串分解成可以移植到机器位置的部分。我仍在尝试拆分字符串而不是保存整个内容。
我想感谢您伸出援手,并在我弄清楚这一点后为我提供基础知识,我想为一些马林根深蒂固的人(例如我自己)发布吊坠。
controller.on(‘serialport:read’, function(data) {
console.log(data);
if (data.length > 3){
var myXpos = data.split(‘ ‘);
console.log(myXpos[0] );

}

这是一项正在进行的工作,但这是我遇到的第一个重大突破!

尝试更新马林鱼的吊坠 #434

使用 serialport:read 是错误的方法。cncjs 服务器已经为您解析串口结果,并根据计时器发出包含位置数据的 Marlin:state 事件。

正如我之前提到的,我认为除了“Marlin:settings”之外,你还需要响应“Marlin:state”事件。没有“Marlin:status”事件 – “:status”事件是“feeder:status”和“sender:status”,它们报告 GCode 传输的进度。

“设置”是很少改变的东西,比如固件版本和机器类型。“status”是发送一批GCode的进度。“状态”是及时的机器状态,包括位置和模式。

尝试更新马林鱼的吊坠 #434
作者

是的,抱歉,Marlin:state not status 我刚刚遇到了那个令人头疼的问题,显然控制台在操作期间不显示 Gcode 移动。
我会一直坚持下去的!再次感谢米奇!

尝试更新马林鱼的吊坠 #434

控制台会抑制来自控制器的例行状态报告,因为它们会导致无休止的滚动,从而掩盖控制台中的其他内容。

尝试更新马林鱼的吊坠 #434

如果您使用足够的 -v 启动服务器,它会将位置事件记录到运行服务器的计算机上的标准输出。来自 /src/app/controllers/MarlinController.js:

       this.runner.on('pos', (res) => {
            log.silly(`controller.on('pos'): source=${this.history.writeSource}, line=${JSON.stringify(this.history.w\
riteLine)}, res=${JSON.stringify(res)}`);

尝试更新马林鱼的吊坠 #434
作者

在玩了 console.log 之后我能够让它工作我能够发现 data.pos.x 等等,直接插入它们我能够获得更新的位置!我已经将修改后的补丁上传到 Pendant。

尝试更新马林鱼的吊坠 #434

你的补丁在哪里?我想看看它。

尝试更新马林鱼的吊坠 #434
贡献者

试用最新master的微型吊坠分支。我已经提交了一些 marlin 修复,包括删除或重新布线一些在 Marlin 中不受支持的按钮

尝试更新马林鱼的吊坠 #434 emcniece 添加了 陈旧 标签 2022 年 3 月 28 日

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
项目
状态:阻塞/等待
发展

没有分支机构或拉取请求

5人参加
尝试更新马林鱼的吊坠 #434尝试更新马林鱼的吊坠 #434尝试更新马林鱼的吊坠 #434尝试更新马林鱼的吊坠 #434尝试更新马林鱼的吊坠 #434

喜欢 (0)