Beam Bench文档

串行端口访问被拒绝

端口已列出并选中,但每次连接尝试都会立即失败,并显示访问或权限错误。

你会看到

端口会出现在下拉列表中。你选中端口并点击Connect后,连接会立即失败,而不是在超时或尝试几秒后失败。错误信息会包含你的端口名称,内容类似:

打开 COM7 时访问被拒绝:访问遭拒。另一个应用进程可能正在使用此串行端口。请关闭其他激光或串行软件,拔下并重新连接控制器,然后重试。

具体措辞取决于操作系统。在Windows上,详细信息是“访问遭拒”,并建议关闭其他软件,这通常就是原因。在Linux和macOS上,详细信息是“权限不足”,提示则指向串行设备权限问题:

打开 /dev/ttyUSB0 时访问被拒绝:权限不足。你的用户账户可能没有打开串行设备的权限。在 Linux 上,请将用户加入 dialout 组(或发行版的串行组),然后注销并重新登录。

发生了什幺

端口是真实存在的,Beam Bench也能看到它,问题出在打开端口上。串行端口同一时间只能由一个进程打开。其他进程已经打开了该端口,因此操作系统拒绝第二次打开,Beam Bench会将其报告为访问被拒绝,而不是在握手过程中超时。

Beam Bench无法从其他进程那里夺取端口。修复始终需要在你的设备上完成:找到并关闭已经占用端口的进程。

修复方法

如果你使用Windows

这种情况几乎总是发生在这里。请检查:

  • Arduino IDE是否打开了Serial Monitor,或者是否仍在同一个COM端口上选中了开发板。
  • PlatformIO的串行监视器,或仍在进行中的上传操作。
  • 仍连接到该端口的串行终端,例如PuTTY。
  • 已打开端口但未释放端口的固件烧录工具。
  • 仍在运行的其他雕刻软件,即使它已最小化。
  • Beam Bench的第二个副本、另一个窗口或另一个实例。

如果你使用Linux

错误详细信息是“权限不足”。在Linux上,这几乎总是意味着你的用户帐户不在dialout组中。这是权限问题,而不是进程占用端口:如果确实有其他进程占用端口,Linux通常会报告端口忙,而不是访问被拒绝。请参阅Linux串行权限了解修复方法。

如果你已经在dialout组中但仍看到此错误,请检查是否有进程以独占方式占用端口:串行终端(screenminicom)、烧录工具或另一个Beam Bench实例。关闭它,然后重新连接。

如果你使用macOS

这种情况不太常见,但规则相同:打开该端口的串行终端或其他进程会阻止Beam Bench打开端口。关闭它,然后重新连接。

可解决大多数情况的一般步骤

  1. 关闭所有可能与串行端口通信的进程:Arduino IDE、PlatformIO、串行终端、固件烧录工具、其他雕刻软件以及Beam Bench的第二个副本。
  2. 拔下控制器的USB线缆。
  3. 等待几秒。
  4. 重新插入线缆。
  5. 在Beam Bench中重新连接。

如果找不到占用端口的进程

重启电脑。重启会释放所有被占用的端口,即使你无法找到占用它们的进程。如果Beam Bench在重启后立即顺利连接,而错误稍后又出现,那幺你在这期间打开的某个进程就是罪魁祸首。

仍然无法解决?

On this page