Python通过MOXA Nport 5150使用Modbus时COM端口权限拒绝及无法访问问题求助
Python通过MOXA Nport 5150使用Modbus时COM端口权限拒绝及无法访问问题求助
大家好,我最近遇到了一个特别棘手的问题,想请各位帮忙分析解决:
我正在用pymodbus库通过Modbus协议采集数据,硬件搭配的是MOXA Nport 5150 RS485转以太网转换器,在Windows Server 2022系统下使用Real COM Mode。但运行过程中,某个特定的COM端口会不定期出现数据采集中断的情况,抛出PermissionError(13, 'Access is denied.')错误,之后又会自行恢复采集。我试了各种办法都没能彻底解决,目前用的Python版本是3.13.0。
我已经尝试过以下几种方案,但都没有效果:
- 捕获权限错误或串口异常后重启Python脚本,使用的代码如下:
def restart_program(): print(" Restarting program ") python = r"C:\Program Files\Python313\python.exe" subprocess.run([python] + sys.argv) sys.exit()
但重启时会抛出“Port is not accessible”的错误,没法正常恢复采集。
- 在开始采集数据前检查端口是否已打开,代码逻辑如下:
port = serial.Serial(port_name,9600,timeout = 1) if (port.isOpen() == True): # data fetch code
安装了Windows Process Explorer,排查是否有其他进程占用该COM端口,但没找到任何相关进程。
尝试在CMD中执行
mode COM16命令,发现该端口此时无法访问。
现在我实在找不到解决思路了,有没有遇到过类似问题的朋友能给我一些建议或解决方案?
备注:内容来源于stack exchange,提问作者Nikhil B




