当前位置: 首页 > wzjs >正文

做网站在哪买域名搬瓦工暗转wordpress

做网站在哪买域名,搬瓦工暗转wordpress,网站引导页动态效果怎么做,域名服务商怎么查询文章目录 1 概述2 实现代码3 演示效果4 源码地址 更多精彩内容👉内容导航 👈👉Qt开发 👈👉python开发 👈 1 概述 定义一个名为USBMonitor的类,用于在Linux系统中监测USB设备的热插拔事件。 该类…

文章目录

    • 1 概述
    • 2 实现代码
    • 3 演示效果
    • 4 源码地址


更多精彩内容
👉内容导航 👈
👉Qt开发 👈
👉python开发 👈

1 概述

定义一个名为USBMonitor的类,用于在Linux系统中监测USB设备的热插拔事件。

该类利用了pyudev库来监听内核级设备事件,并且可以为USB设备的插入和移除事件注册回调函数。

主要功能特性

  1. 基于pyudev库监听内核级设备事件pyudev是一个用于与Linux系统中的udev(设备管理器)交互的库,可以用来监听设备事件。
  2. 支持USB设备插入/移除事件回调:用户可以通过传入回调函数来处理USB设备的插入和移除事件。
  3. 自动过滤非USB设备事件:类内部使用filter_by(subsystem='usb')方法,确保只监听USB子系统的事件。
  4. 支持设备详细信息获取:提供设备的详细信息,包括厂商ID、产品ID、序列号和名称等。

pyudev概述

pyudev 是 Linux 系统下与 udev 设备管理子系统交互的 Python 绑定库。它提供对底层硬件设备的细粒度控制能力,支持:

  • 设备枚举:遍历系统中的所有设备
  • 属性查询:获取设备详细信息(厂商ID、产品ID等)
  • 事件监控:实时监听设备插拔事件
  • 规则管理:与 udev 规则系统集成(需配合系统配置)

类的主要方法:

  • __init__:初始化监测器,设置回调函数。
  • _parse_device_info:解析设备信息,将设备对象转换为包含厂商ID、产品ID等信息的字典。
  • _event_handler:统一处理设备事件,根据事件类型调用相应的回调函数。
  • start_monitoring:启动事件监听循环,持续监听设备事件并调用事件处理器。
  • start:在单独的线程中启动监测循环,以确保主线程不受阻塞。
  • stop:安全停止监测,设置停止标志并等待监测线程结束。

环境说明

环境版本
pythonV3.10
系统ubuntu22.04
依赖pyudev

依赖安装

pip install pyudev

2 实现代码

import pyudev
import threading
import timeclass USBMonitor:"""Linux系统USB设备热插拔监测功能特性:- 基于pyudev库监听内核级设备事件- 支持USB设备插入/移除事件回调- 自动过滤非USB设备事件- 支持设备详细信息获取(厂商ID、产品ID等)"""def __init__(self, on_device_added=None, on_device_removed=None):"""初始化监测器:param on_device_added:   插入回调函数 func(device_info_dict):param on_device_removed: 移除回调函数 func(device_info_dict)"""self.context = pyudev.Context()  # 创建pyudev上下文,用于与udev交互self.monitor = pyudev.Monitor.from_netlink(self.context)  # 创建监测器,监听内核设备事件self.monitor.filter_by(subsystem='usb')  # 只监听USB子系统的事件self.on_device_added = on_device_added  # USB设备插入事件的回调函数self.on_device_removed = on_device_removed  # USB设备移除事件的回调函数self.monitor_thread = None  # 监测线程self.running = False  # 标志监测是否正在运行def _parse_device_info(self, device):"""解析设备信息为字典:param device: 设备对象:return: 包含设备信息的字典"""return {'action': device.action,  # 设备事件类型(add/remove)'devnode': device.device_node,  # 设备节点路径'vendor_id': device.get('ID_VENDOR_ID'),  # 厂商ID'product_id': device.get('ID_MODEL_ID'),  # 产品ID'serial': device.get('ID_SERIAL_SHORT'),  # 设备序列号'name': device.get('ID_MODEL')  # 设备名称}def _event_handler(self, device):"""统一事件处理器根据设备事件类型调用相应的回调函数:param device: 设备对象"""info = self._parse_device_info(device)  # 解析设备信息if device.action == 'add':  # 设备插入事件if callable(self.on_device_added):  # 检查回调函数是否可调用self.on_device_added(info)elif device.action == 'remove':  # 设备移除事件if callable(self.on_device_removed):  # 检查回调函数是否可调用self.on_device_removed(info)def start_monitoring(self):"""启动事件监听循环在循环中监听设备事件并调用事件处理器"""self.running = True  # 设置运行标志print("[USB Monitor] 开始监测USB设备...")for device in iter(self.monitor.poll, None):  # 持续监听设备事件if not self.running:  # 如果停止标志被设置,退出循环breakself._event_handler(device)  # 调用事件处理器def start(self):"""启动监测线程在单独的线程中运行监测循环"""if not self.monitor_thread or not self.monitor_thread.is_alive():  # 检查线程是否已启动self.monitor_thread = threading.Thread(target=self.start_monitoring)  # 创建新线程self.monitor_thread.daemon = True  # 设置为守护线程self.monitor_thread.start()  # 启动线程def stop(self):"""安全停止监测停止监测线程并等待其结束"""self.running = False  # 设置停止标志if self.monitor_thread and self.monitor_thread.is_alive():  # 检查线程是否仍在运行self.monitor_thread.join(timeout=2)  # 等待线程结束,超时时间为2秒# 使用示例
if __name__ == "__main__":def device_added_callback(device_info):"""设备插入回调函数:param device_info: 包含设备信息的字典"""print(f"[插入] 设备接入: {device_info['name']}")print(f"    厂商ID: {device_info['vendor_id']}")print(f"    产品ID: {device_info['product_id']}")print(f"    设备路径: {device_info['devnode']}")def device_removed_callback(device_info):"""设备移除回调函数:param device_info: 包含设备信息的字典[README](USB热插拔监测.assets/README.md)"""print(f"[移除] 设备断开: {device_info['name']}")print(f"    设备路径: {device_info['devnode']}")monitor = LinuxUSBMonitor(on_device_added=device_added_callback,  # 设置插入回调函数on_device_removed=device_removed_callback  # 设置移除回调函数)try:monitor.start()  # 启动USB监测print("监测运行中,按Ctrl+C停止...")while True:time.sleep(1)  # 主线程保持运行except KeyboardInterrupt:monitor.stop()  # 停止USB监测print("\n监测已停止")

3 演示效果

在这里插入图片描述

4 源码地址

  • gitee
  • github



文章转载自:

http://TdNx6Q1h.LLthz.cn
http://MLlwTUHz.LLthz.cn
http://69FihnEJ.LLthz.cn
http://b3kz6leo.LLthz.cn
http://qNrYTTPT.LLthz.cn
http://97Bi4ddl.LLthz.cn
http://8gD26RtW.LLthz.cn
http://4ZrPPJsE.LLthz.cn
http://h0EWGrQc.LLthz.cn
http://dx3uUlPn.LLthz.cn
http://WAA70RR5.LLthz.cn
http://alZdhc9r.LLthz.cn
http://r6LlalCD.LLthz.cn
http://AjqPb4Dz.LLthz.cn
http://zkSIzJCw.LLthz.cn
http://GVWnz672.LLthz.cn
http://TmDm9o3C.LLthz.cn
http://le9Ce76C.LLthz.cn
http://jhhNNhUc.LLthz.cn
http://KkE2HA2V.LLthz.cn
http://wtmrntvD.LLthz.cn
http://jrAm0Mhj.LLthz.cn
http://fmMzI6sa.LLthz.cn
http://h9N2sLMk.LLthz.cn
http://p0oqvnSn.LLthz.cn
http://KxoHV9AU.LLthz.cn
http://EG4jEV73.LLthz.cn
http://3EQY5yQq.LLthz.cn
http://UhwXDj2y.LLthz.cn
http://fYMzBzVP.LLthz.cn
http://www.dtcms.com/wzjs/707765.html

相关文章:

  • 徐州市贾汪区建设局网站设计网站多少钱
  • 网站规划与设计大作业郑州旅游网站建设
  • 乐成高端网站建设国外网站问题
  • 宝安官网网站建设比较好的js网站模板下载
  • 制作网页与网站库存管理软件免费版
  • 企业网站源码哪个最好高校网站建设目的与意义
  • 莱芜住房和城乡建设厅网站福建省住房和建设厅网站
  • 行业网站的特点建立网站的作用
  • 格力空调网站建设策划书徐州企业建站模板
  • 做网站哪家公司比较好手机网站与电脑网站的区别
  • 潍坊品牌网站建设专业企业网站建设定制
  • 欧美网站设计欣赏win7系统做网站服务器
  • 网站开发维护合同样板百度推广获客成本大概多少
  • 自定义网站建设南皮做网站价格
  • 厦门市建设质量安全协会网站网站开发的研究方法
  • 微信视频网站怎么做的好网站开发毕设论文
  • 服务器除了做网站还能做什么湖南有实力seo优化
  • 部队网站建设招标.la域名做的网站
  • 标准网站建设做网站的分辨率
  • 大型网站解决方案设计门户网站平台建设情况
  • 最新聊天记录做图网站购物网站开发
  • 创业中文网站模板上海专业做网站公司报价
  • 建设摩托官方网站网站建设过程规划和准备阶段
  • 建个免费的销售网站好seo 优化是什么
  • 做网站刷流量挣钱吗apmserv搭建多个网站
  • 天津做网站的公做网站开公司
  • 如何建立电商平台seo3
  • 一个专门做酒店招聘的网站三网站建设
  • 用html5做商城网站怎么做公司网站建设优点
  • 评价一个网站设计项目的好坏wordpress安装不了