代码附上 复制粘贴运行即可
# 代码附上
import serial.tools.list_ports
from time import sleep
def serial_hot_plug():
"""
串口热拔插
找到串口名称中包含 CH9102 的串口
return:
"""
conut = 0
# 存放最新满足标准设备的缓存 CH9102
com_list = []
# 存放通过判断且以筛选过后的串口 主要用于判断串口是否新增拔出
com_list_buf = []
while True:
# 刷新串口
port_list = list(serial.tools.list_ports.comports())
# 得到获取的串口个数
port_list_len = len(port_list)
# 判断串口列表的长度
if port_list_len > 0:
# 清空串口列表缓冲区
com_list = []
# 确认有效端口
for cnt in range(port_list_len):
# 得到符合标准的串口并添加到 com_list
if port_list[cnt].description.find('CH9102') != -1:
# 将使用符合标准的串口添加到串口列表缓冲区
com_list.append(port_list[cnt].name)
if len(com_list):
# 打印新增的串口 可以把 com_list_buf = 当成上一次保存的串口信息 com_list = 当成这次的串口信息 如果没有新增将返回一个空的列表
add_serial_id = list(set(com_list).difference(set(com_list_buf)))
if add_serial_id:
# 将插入的串口添加到串口列表缓冲区
for i in range(len(add_serial_id)):
com_list_buf.append(add_serial_id[i])
print("插入的串口 ID: ", add_serial_id)
else:
# 打印拔出的串口 如果没有失去将返回一个空的列表
lose_serial_id = list(set(com_list_buf).difference(set(com_list)))
if lose_serial_id:
for i in range(len(lose_serial_id)):
com_list_buf.remove(lose_serial_id[i])
print("拔出的串口 ID: ", lose_serial_id)
print("现在符合规则的串口列表: ", com_list_buf)
# 延时 200ms
sleep(0.2)
serial_hot_plug()