序列埠訪問被拒絕
埠已列出並選中,但每次連線嘗試都會立即失敗,並顯示訪問或許可權錯誤。
你會看到
埠會出現在下拉式清單中。你選中埠並點選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組中但仍看到此錯誤,請檢查是否有程式以獨佔方式佔用埠:序列終端(screen、minicom)、燒錄工具或另一個Beam Bench例項。關閉它,然後重新連線。
如果你使用macOS
這種情況不太常見,但規則相同:開啟該埠的序列終端或其他程式會阻止Beam Bench開啟埠。關閉它,然後重新連線。
可解決大多數情況的一般步驟
- 關閉所有可能與序列埠通訊的程式:Arduino IDE、PlatformIO、序列終端、韌體燒錄工具、其他雕刻軟體以及Beam Bench的第二個副本。
- 拔下控制器的USB線纜。
- 等待幾秒。
- 重新插入線纜。
- 在Beam Bench中重新連線。
如果找不到佔用埠的程式
重啟電腦。重啟會釋放所有被佔用的埠,即使你無法找到佔用它們的程式。如果Beam Bench在重啟後立即順利連線,而錯誤稍後又出現,那麼你在這期間開啟的某個程式就是罪魁禍首。
仍然無法解決?
- 機器無法連線:更廣泛的連線失敗問題,包括埠錯誤和波特率錯誤。
- Linux序列許可權:在Linux上設定
dialout組。 - 連線診斷面板:在嘗試連線時檢視事件日誌。
- 在Facebook群組發帖,並說明你的作業系統以及問題發生時還有哪些程式處於開啟狀態。