如何通过Python在局域网内从笔记本访问PC的COM1串口
局域网内笔记本访问PC的COM1端口
要实现笔记本远程访问PC上的COM1端口,核心是把PC的串口数据通过网络转发,下面分PC端(串口转发服务)和笔记本端(远程访问)两部分说明:
一、PC端:搭建串口转网络的转发服务
在PC上运行服务程序,将COM1的串口数据通过TCP协议转发到局域网中,用Python实现的代码如下:
import serial import socket import threading # 配置串口参数,和设备保持一致 ser = serial.Serial("COM1", 9600, timeout=1) # 配置TCP服务端,监听8888端口(可自定义) server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(("0.0.0.0", 8888)) # 0.0.0.0表示监听所有网卡 server_socket.listen(1) print("等待笔记本连接...") client_socket, addr = server_socket.accept() print(f"已连接:{addr}") def read_serial_and_send(): """读取串口数据并发送给笔记本客户端""" while True: if ser.isOpen(): input_data = ser.readline() if input_data: client_socket.send(input_data) # 可选:本地打印串口数据 value = input_data.decode('utf-8').strip() print(f"串口数据:{value}") def recv_client_and_write_serial(): """接收笔记本指令并写入串口(支持双向通信时启用)""" while True: data = client_socket.recv(1024) if not data: break ser.write(data) # 启动双线程分别处理串口读写 threading.Thread(target=read_serial_and_send).start() threading.Thread(target=recv_client_and_write_serial).start()
运行代码后,PC会在8888端口等待笔记本的连接。
二、笔记本端:编写远程访问的客户端代码
在笔记本上运行以下代码,连接PC的IP(192.168.2.120)和指定端口(8888),即可获取COM1的串口数据:
import socket # 连接PC的串口转发服务 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(("192.168.2.120", 8888)) print("已连接到PC的COM1转发服务") while True: data = client_socket.recv(1024) if not data: break # 按原逻辑解析串口数据 value = data.decode('utf-8').strip() value1 = value.split(" ") if len(value1) >= 2: value_final = value1[1].split("\r\n")[0] print(value_final)
注意事项
- 确保PC和笔记本在同一局域网,且PC防火墙允许8888端口的TCP连接(若被拦截,需添加端口放行规则)
- 串口参数(波特率、超时等)必须与设备配置一致
- 若仅需单向读取串口数据,可删除PC端的
recv_client_and_write_serial线程及相关代码
内容的提问来源于stack exchange,提问作者golead rich
相关产品推荐
相关产品推荐

