Contact me: hankecnc@gmail.com

封装接口 #99

推推 grbl 3年前 (2023-02-02) 266次浏览
打开
arthurwolf 打开了这个问题 2016 年 12 月 3 日 · 15条评论
打开

封装接口#99

arthurwolf 打开了这个问题 2016 年 12 月 3 日 · 15条评论

注释

封装接口 #99

你好。

你用 NodeJS 做什么?
Smoothieboard 有一个以太网接口和一个用于发送 Gcode 的 http 接口。
如果这个项目增加了对此的支持,是否可以将这个应用程序简单地打包为一个 html 页面,而不需要 nodejs ?

干杯。

封装接口 #99 奇顿 添加了 问题 标签 2016 年 12 月 3 日
封装接口 #99
合作者
奇顿 评论了 2016 年 12 月 3 日  

你好@arthurwolf,

Node.js 服务器后端在该软件中起着重要作用,它用于处理与 CNC 铣削控制器的串行通信,还提供 AJAX/WebSocket API 调用以定义前端和后端之间的抽象通信层。此外,还包括访问控制、服务器配置设置和用户帐户管理。

我还没有尝试通过 HTTP 发送 G 代码的以太网接口,但我会将通信放在后端而不是前端。运行服务器实例可以确保发送G代码时的适当稳定性,它不会受到桌面环境中CPU负载的影响,并且即使不小心关闭了用户的浏览器也可以继续当前正在运行的作业。https://github.com/LaserWeb/lw.comms/issues/1中讨论了类似的问题。LW4 正在朝着同一件事前进。

为了让桌面用户更容易安装,尤其是那些没有 Node.js 经验的用户,每个版本都提供了由 CI 生成的预构建 Mac / Windows / Linux 应用程序(下载:https ://github.com/cheton /cnc/发布)。它的行为类似于本机应用程序,因此用户无需担心 Node.js 的安装。

封装接口 #99
作者

没关系。

这里的想法本质上是将应用程序变成一个可以在安卓平板电脑上运行的 html 页面。这样你就可以将平板电脑粘到你的机器上并用它来控制它。
如果可能的话,那会很好,但如果不是,我明白为什么。

干杯。

封装接口 #99
合作者

谢谢你的解释。无需额外安装即可在 Smoothieboard 上托管 Web 界面对我来说很有意义。我刚刚查看了 LaserWeb3 上的 Smoothie 实现(例如public/js/smoothie.jspublic/js/socketcomms.js),现在我很清楚了。

一开始,将在服务器端添加对以太网通信的支持,将 Smoothie 作为另一个后端服务。同时,我将研究如何制作一个简化的 Web 界面(不依赖 Node.js)作为 Smoothieboard 的附加组件,这应该会为 Smoothieboard 用户带来便利。

封装接口 #99
作者
亚瑟狼 评论了 2016 年 12 月 4 日 通过电子邮件
封装接口 #99 奇顿 添加了 增强 标签 2016 年 12 月 6 日
封装接口 #99
合作者
奇顿 评论了 2017 年 2 月 28 日  

你好@arthurwolf,

请问查询状态指令是否为“?” telnet模式支持吗?

从 USB 端口连接时可以使用类似 Grbl 的状态命令,但在 telnet 模式下?键入时没有任何响应。?如果在 telnet 模式下不支持,我可以运行get status命令来查询当前状态,但它总是返回一个额外的空行,这似乎是不必要的。

$ telnet 192.168.1.250
Trying 192.168.1.250...
Connected to 192.168.1.250.
Escape character is '^]'.
Smoothie command shell
> get status
<Idle,MPos:0.0000,0.0000,0.0000,WPos:0.0000,0.0000,0.0000>

> G0X10Y10
ok
> get status
<Idle,MPos:10.0000,10.0000,0.0000,WPos:10.0000,10.0000,0.0000>

>

我刚刚跟踪了SimpleShell.cpp中的代码,返回字符串的末尾THEKERNEL->get_query_string().c_str()已经包含了“\r\n”,所以没有必要再发送一个“\n”导致空行。这样对吗?

https://github.com/Smoothieware/Smoothieware/blob/edge/src/modules/utils/simpleshell/SimpleShell.cpp#L847

    } else if (what == "status") {
        // also ? on serial and usb
        stream->printf("%s\n", THEKERNEL->get_query_string().c_str());

    } else {

谢谢!

封装接口 #99
作者
亚瑟狼 评论了 2017 年 2 月 28 日 通过电子邮件
封装接口 #99
合作者

这是我所期望的:

> get status
<Idle,MPos:0.0000,0.0000,0.0000,WPos:0.0000,0.0000,0.0000>
>

但实际上它在调用“get status”时返回两个连续的“\n”:

> get status
<Idle,MPos:0.0000,0.0000,0.0000,WPos:0.0000,0.0000,0.0000>

>

这只是一个小问题,但希望得到修复。:)

封装接口 #99
贡献者

某处是否有 cncjs 分支使用以太网端口与 smoothieboard 通信?

添加此功能的最佳位置在哪里?在 cncjs-controller ( https://github.com/cncjs/cncjs-controller ) 里面?
我可能很快就会编写代码,我的 smoothieboard 在切割时刚刚开始随机松开串口连接 :(

封装接口 #99
内斯奎克011 评论了 2018 年 8 月 4 日 通过电子邮件
封装接口 #99
作者
亚瑟狼 评论了 2018 年 8 月 4 日 通过电子邮件
封装接口 #99
贡献者

Smoothieboard 部分看起来很简单。通过网络连接发送数据也应该是直接的(api 与串口非常相似)。
我正在努力寻找添加此功能的正确位置……

cncjs-controller 中有一些串行端口访问正在进行(例如 listPorts())。
另一方面,各个控制器内部发生了一些串行事件。

封装接口 #99
内斯奎克011 评论了 2018 年 8 月 4 日 通过电子邮件
封装接口 #99
贡献者

我一起破解了第一个版本。你可以在这里找到我的叉子:https ://github.com/fishpepper/cncjs

请参阅 SmoothieController.js 设置您的 IP 和端口:

this.connection = new SocketSerialConnection({
            host: 'cnc', //'192.168.178.222',
            port: 23, //23,
            writeFilter: (data) => {
                return data;
            }
        });

警告:请勿在正在运行的机器上使用它!

它似乎有效,但存在一些问题:

  1. 无法在 gui 中选择以太网,只需选择 smoothie 任何端口并连接
  2. 没有干净的连接。你必须点击重置和解锁才能开始
  3. 播放 gcode 似乎很慢
  4. 状态只是不时更新(?在以太网上没有优先权)
  5. 播放 gcode 文件时不时会卡住,点击暂停和恢复让它继续

我想我会在这里放弃。为了让它正常运行,必须修改 smoothie 固件。
也许有两个套接字会有所帮助,一个用于命令,一个用于状态,一个用于高级任务(?!~命令等)。

我想我会买一根更好的 USB 数据线,然后再试一次……这台机器过去 20 多个小时都运行良好。它刚刚开始在 USB 上产生随机挂起:(

封装接口 #99

无论你做什么,它仍然是一样的,即使它开始看起来很好,因为随着时间的推移,电线会沾上灰尘,变弱等等,而且掉落也有一些原因,计算机的电源有很多 rezons,所以要修复那个以太和它的最好的,如果不是巨大的纸张打印机将只是 usb 而不是以太网支持,因为他们知道它会产生问题,并尝试在 usb 旁边传递一个高电压它会掉落它只是糟透了:P

封装接口 #99

所以我会继续等待新的cncjs版本milstone

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

没有分支机构或拉取请求

5人参加
封装接口 #99封装接口 #99封装接口 #99封装接口 #99封装接口 #99

喜欢 (0)