cncjs:基于 Web 技术的 CNC 控制器界面项目

A web-based interface for CNC milling controller running Grbl, Marlin, Smoothieware, or TinyG.

Branch10Tags201
This repository is empty

CNCjs Open Collective 上的支持者 Open Collective 上的赞助者 Travis CI 构建状态 AppVeyor 构建状态 覆盖率状态

NPM cncjs

CNCjs 是一款功能完整的基于 Web 的 CNC 控制器界面,支持运行 GrblMarlinSmoothiewareTinyG

如需更完整的介绍,请参阅 Wiki 页面的 介绍 部分。

cncjs

功能

自定义小部件

手持控制器

模板代码

现有手持控制器

  • cncjs-pendant-keyboard - 一款适用于 CNCJS 的简易手持控制器(使用无线键盘或 usb)。
  • cncjs-pendant-numpad - 一款适用于 CNCJS 的简易手持控制器(使用无线数字键盘或 usb)。
  • cncjs-pendant-lcd - 用于 Raspberry Pi 触摸显示屏的 CNCjs 网页控制台。
  • cncjs-pendant-ps3 - 用于 CNCjs 的 Dual Shock / PS3 蓝牙远程手持控制器。
  • cncjs-pendant-raspi-gpio - 用于 CNCjs 的简易 Raspberry Pi GPIO 手持控制器。
  • cncjs-pendant-alexa - 通过自定义 Alexa 技能实现语音点动控制(“Alexa, ask mill x plus 20”),支持各轴行程限制和受状态约束的点动。

平板界面

浏览器支持

Chrome
Chrome
Edge
Edge
Firefox
Firefox
IE
IE
Opera
Opera
Safari
Safari
支持 支持 支持 不支持 支持 支持

支持的 Node.js 版本

版本 支持级别
<= 10 不支持
12 支持
>= 14 推荐

快速开始

Node.js 安装

推荐使用 Node.js 14 或更高版本。你可以安装 Node Version Manager 来管理多个 Node.js 版本。如果你已安装 git,只需克隆 nvm 仓库,并检出最新版本:

git clone https://github.com/creationix/nvm.git ~/.nvm
cd ~/.nvm
git checkout `git describe --abbrev=0 --tags`
cd ..
. ~/.nvm/nvm.sh

将这些行添加到您的 ~/.bash_profile~/.bashrc~/.profile 文件中,以便在登录时自动加载:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

安装完成后,您可以使用以下命令选择 Node.js 版本:

nvm install 14
nvm use 14

也建议将 npm 升级到最新版本。如需升级,请运行:

npm install npm@latest -g

安装

请以非 root 用户身份安装 cncjs,否则 serialport 模块可能在 Raspberry Pi 等某些平台上无法正确安装。

npm install -g cncjs

如果需要使用 sudoroot 权限安装 cncjs,请指定 --unsafe-perm 选项,以便以 root 账户运行 npm。

sudo npm install --unsafe-perm -g cncjs

查看 https://github.com/cncjs/cncjs/wiki/Installation 了解其他安装方法。

升级

运行 npm install -g cncjs@latest 安装最新版本。要查询版本,请使用 cncjs --version

用法

运行 cncjs 启动服务器,并访问 http://yourhostname:8000/ 查看 Web 界面。向 cncjs 传递 --help 以查看更多选项。

pi@rpi3$ cncjs -h

  Usage: cncjs [options]


  Options:

    --version                       output the version number
    -p, --port <port>                   Set listen port (default: 8000)
    -H, --host <host>                   Set listen address or hostname (default: 0.0.0.0)
    -b, --backlog <backlog>             Set listen backlog (default: 511)
    -c, --config <filename>             Set config file (default: ~/.cncrc)
    -v, --verbose                       Increase the verbosity level (-v, -vv, -vvv)
    -m, --mount <route-path>:<target>   Add a mount point for serving static files
    -w, --watch-directory <path>        Watch a directory for changes
    --access-token-lifetime <lifetime>  Access token lifetime in seconds or a time span string (default: 30d)
    --allow-remote-access               Allow remote access to the server (default: false)
    --controller <type>                 Specify CNC controller: Grbl|Marlin|Smoothie|TinyG|g2core (default: '')
    -h, --help                          output usage information

  Examples:

    $ cncjs -vv
    $ cncjs --mount /pendant:/home/pi/tinyweb
    $ cncjs --mount /widget:~+/widget --mount /pendant:~/pendant
    $ cncjs --mount /widget:https://cncjs.github.io/cncjs-widget-boilerplate/v1/
    $ cncjs --watch-directory /home/pi/watch
    $ cncjs --access-token-lifetime 60d  # e.g. 3600, 30m, 12h, 30d
    $ cncjs --allow-remote-access
    $ cncjs --controller Grbl

与其为 --watch-directory--access-token-lifetime--allow-remote-access--controller 传递命令行选项,你可以创建一个包含以下 JSON 格式配置的 ~/.cncrc 文件:

{
    "mountPoints": [
        {
            "route": "/pendant",
            "target": "/home/pi/tinyweb"
        },
        {
            "route": "/widget",
            "target": "https://cncjs.github.io/cncjs-widget-boilerplate/v1/"
        }
    ],
    "watchDirectory": "/path/to/dir",
    "accessTokenLifetime": "30d",
    "allowRemoteAccess": false,
    "controller": ""
}

为排查故障,请运行:

cncjs -vvv

配置文件

配置文件 .cncrc 包含与 cncjs 命令行选项等效的设置。该配置文件存储在用户的主目录中。要确定主目录的实际位置,请执行以下操作:

  • Linux/Mac

    echo $HOME
    
  • Windows

    echo %USERPROFILE%
    

示例配置文件可在此处查看。

文件格式

详细解释请参阅 https://github.com/cncjs/cncjs/issues/242#issuecomment-352294549

{
  "ports": [
     {
       "path": "/dev/ttyAMA0",
       "manufacturer": ""
     }
  ],
  "baudrates": [115200, 250000],
  "mountPoints": [
    {
      "route": "/widget",
      "target": "https://cncjs.github.io/cncjs-widget-boilerplate/v1/"
    }
  ],
  "watchDirectory": "/path/to/dir",
  "accessTokenLifetime": "30d",
  "allowRemoteAccess": false,
  "controller": "",
  "state": {
    "checkForUpdates": true,
    "controller": {
      "exception": {
        "ignoreErrors": false
      }
    }
  },
  "commands": [
    {
      "title": "Update (root user)",
      "commands": "sudo npm install -g cncjs@latest --unsafe-perm; pkill -f cncjs"
    },
    {
      "title": "Update (non-root user)",
      "commands": "npm install -g cncjs@latest; pkill -f cncjs"
    },
    {
      "title": "Reboot",
      "commands": "sudo /sbin/reboot"
    },
    {
      "title": "Shutdown",
      "commands": "sudo /sbin/shutdown"
    }
  ],
  "events": [],
  "macros": [],
  "users": []
}

文档

https://cnc.js.org/docs/

示例

示例 目录下有多个 *.gcode 文件。你可以使用 GCode 组件加载 GCode 文件并进行试运行。

如果你没有 CAM 软件,可以试用 jscut 从 *.svg 创建 G-Code。它是一个运行在浏览器中的简单 CAM 软件包。

可在 http://jscut.org/jscut.html 查看在线演示。

贡献

请使用 GitHub issues 提交需求。

欢迎提交 Pull requests!了解如何参与贡献

本地化

你可以协助将 appserver 两个目录中的资源文件从英语翻译成其他语言。查看本地化指南了解如何开始。如果你不熟悉 GitHub 开发,可以创建 issue或将你的翻译发送至 cheton@gmail.com

Locale 语言 状态 贡献者
cs 捷克语 Miroslav Zuzelka
de 德语 Thorsten Godau, Max B.
es 西班牙语 Juan Biondi, hasecilu
fr 法语 Simon Maillard, CorentinBrulé
hu 匈牙利语 Sipos Péter
it 意大利语 vince87
ja 日语 Naoki Okamoto
nb 挪威语 Stian Kristensen
nl 荷兰语 dutchpatriot
pt 葡萄牙语 Cheton Wu
pt-br 巴西葡萄牙语 cmsteinBR
ru 俄语 Denis Yusupov
uk 乌克兰语 khvalera
tr 土耳其语 Ali GÜNDOĞDU
zh-cn 简体中文 Mandy Chien, Terry Lee
zh-tw 繁體中文 Cheton Wu

捐赠

如果您想支持本项目,可以通过 PayPal 进行捐赠。感谢!

捐赠

贡献者

本项目的存在,得益于所有贡献者的付出。[参与贡献].

支持者

感谢所有支持者!🙏 [成为支持者]

赞助商

通过成为赞助商来支持本项目。您的 Logo 将显示在这里,并附带上您网站的链接。[成为赞助商]

许可证

本项目根据 MIT License 授权。

Introduction

基于网络的界面,适用于运行Grbl、Marlin、Smoothieware或TinyG的数控铣床控制器。【此简介由AI生成】

Customize your domain
1522.65 K623Visit GitHub