python 串口热插拔 找到名称中包含 CH9102 的串口

代码附上 复制粘贴运行即可

# 代码附上

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()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值