注释
|
控制器类型由 /src/app.js 从第 39 行开始确定。以下是摘录:
在 src/controller.js 中有一个“系统事件”的回调列表。该列表包括“Grbl:state”、“Smoothie:state”等事件。在其下方有如下行:
您需要为 Marlin 添加相应的条目。 src/app.js 包含处理这些事件的代码。例如:
要确定机器位置,您可以查看作为 Marlin:state 事件参数的数据。根据我对 cncjs 代码的阅读,该数据将具有一个“pos”属性,其中包含 x、y、z 和 e 等子属性。所以data.pos.x应该是x位置。 准确确定该数据对象中的内容的一种简单方法是使用 Chrome 浏览器中的开发人员工具。浏览到挂件页面,启动开发人员工具,然后在处理 Marlin:state 事件的函数上设置断点。然后你可以将鼠标悬停在标识符“数据”上,开发人员工具将向你显示其中的内容。 作为良好的编码习惯,最好不要假设所有属性都将始终存在。您可能会得到一些仅包含可能属性的子集的 Marlin:state 报告,因此最好编写代码,使其仅对当前存在的属性做正确的事情。 |
|
我无法理解它,我已经更新了 controller.js 以包含新的约束 if (this.query.type === QUERY_TYPE_POSITION) { |
|
您不会从 CNCjs 中“拉取”数据。CNCjs 发送带有数据的事件。 您收到的第一个通知来自 “controller.on(‘serialport:open’, function(options) {” with cnc.controllerType == ‘Marlin’ 稍后您会收到来自“controller.on(‘Marlin:state’), function(data) {”的通知 |
|
所以我学到了很多,甚至在这个问题上取得了一些进展。我的第一个发现是检查器工具的控制台。这有助于负载。马上我有 2 个状态而不是 1 个状态和一个设置。
这是一项正在进行的工作,但这是我遇到的第一个重大突破! |
|
使用 serialport:read 是错误的方法。cncjs 服务器已经为您解析串口结果,并根据计时器发出包含位置数据的 Marlin:state 事件。 正如我之前提到的,我认为除了“Marlin:settings”之外,你还需要响应“Marlin:state”事件。没有“Marlin:status”事件 – “:status”事件是“feeder:status”和“sender:status”,它们报告 GCode 传输的进度。 “设置”是很少改变的东西,比如固件版本和机器类型。“status”是发送一批GCode的进度。“状态”是及时的机器状态,包括位置和模式。 |
|
是的,抱歉,Marlin:state not status 我刚刚遇到了那个令人头疼的问题,显然控制台在操作期间不显示 Gcode 移动。 |
|
控制台会抑制来自控制器的例行状态报告,因为它们会导致无休止的滚动,从而掩盖控制台中的其他内容。 |
|
如果您使用足够的 -v 启动服务器,它会将位置事件记录到运行服务器的计算机上的标准输出。来自 /src/app/controllers/MarlinController.js:
|
|
在玩了 console.log 之后我能够让它工作我能够发现 data.pos.x 等等,直接插入它们我能够获得更新的位置!我已经将修改后的补丁上传到 Pendant。 |
|
你的补丁在哪里?我想看看它。 |
|
试用最新 |


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