You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Windows下PyCharm环境中Python串口连接路由器/交换机代码问题

修复Python串口连接路由器/交换机的代码问题

1. 先解决依赖缺失问题

  • 你的代码里用了serial模块但没导入,而且Python没有内置这个模块,得先装pyserial库:
    pip install pyserial
    
  • 如果还没装keyboard模块,也得先装:
    pip install keyboard
    
  • 代码开头必须补上导入语句:
    import serial
    import keyboard
    

2. 修复代码逻辑与稳定性问题

  • Windows下用keyboard模块必须以管理员身份启动PyCharm,不然会因为权限不够没法检测按键。
  • 把串口关闭的操作放到finally块里,避免程序异常崩溃时串口没释放,导致后续没法重新连接。
  • 编码换成utf-8(兼容更多设备,部分老设备可能需要用latin-1,可根据实际情况调整)。
  • 加个异常捕获,方便排查串口打不开、参数不匹配这类问题。

修正后的完整代码

import serial
import keyboard

ser = None
try:
    # 注意:这里的串口参数要和你的路由器/交换机完全匹配,比如多数设备波特率是115200,不是9600
    ser = serial.Serial(
        port="COM1",
        baudrate=9600,
        bytesize=serial.EIGHTBITS,
        parity=serial.PARITY_NONE,  # 多数网络设备默认无校验,可查设备手册调整
        stopbits=serial.STOPBITS_ONE,
        timeout=2
    )
    print("串口连接成功")

    while True:
        ser.write('You got connected\r\n'.encode('utf-8'))
        receive = ser.readline()
        if receive:
            print(receive.decode('utf-8').strip())
        if keyboard.is_pressed('q'):
            print('用户退出程序')
            break
except serial.SerialException as e:
    print(f"串口错误: {e}")
except Exception as e:
    print(f"其他错误: {e}")
finally:
    if ser and ser.is_open:
        ser.close()
        print("串口已关闭")

额外注意事项

  • 确认COM1是设备实际用的串口:去Windows设备管理器的「端口(COM和LPT)」里找路由器/交换机对应的串口编号。
  • 核对设备参数:大部分网络设备默认波特率是115200,不是代码里的9600,一定要查设备手册确认波特率、奇偶校验、停止位这些参数。
  • 如果keyboard模块还是有问题,可以换成不用权限的退出方式,比如监听回车键:
    # 替换原有的键盘监听部分
    print("按回车键退出...")
    import sys, select
    while True:
        # 保留原有的发送接收逻辑
        ser.write('You got connected\r\n'.encode('utf-8'))
        receive = ser.readline()
        if receive:
            print(receive.decode('utf-8').strip())
        # 监听回车键
        if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
            input()
            print('用户退出程序')
            break
    

内容的提问来源于stack exchange,提问作者BMO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:25:18