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

深圳市网站设计公司刷神马网站优化排名

深圳市网站设计公司,刷神马网站优化排名,山东滕州疫情最新消息今天i,学做烘培的网站libudev详解: libudev是Linux系统下的一个库,它提供针对内核提供的udev设备管理服务的函数库。udev是一种内核机制,用于在系统中传递解决方案的有关设备信息,以及在出现设备事件(如删除、插入设备)时触发相应的操作。 …
  1. libudev详解:
    libudev是Linux系统下的一个库,它提供针对内核提供的udev设备管理服务的函数库。udev是一种内核机制,用于在系统中传递解决方案的有关设备信息,以及在出现设备事件(如删除、插入设备)时触发相应的操作。
    在应用程序中使用libudev可以更方便地操作系统中的设备。

  2. libudev使用:

    1. 初始化
      函数:udev_new()
      作用:创建一个udev library context。udev library context采用引用记数机制,创建的context默认引用记数为1,使用udev_ref和udev_unref增加或减少引用记数,如果引用记数为0,则释放内部资源。

    2. 枚举设备
      函数:udev_enumerate_new(struct udev *udev)
      作用:创建一个枚举器,用于扫描系统已接设备

    3. 监控设备插拔udev的设备(插拔基于netlink实现)
      函数:udev_monitor_new_from_netlink(struct udev *udev, const char *name)
      作用:创建一个新的monitor,函数的第二个参数是事件源的名称,可选"kernel"或"udev",般应用的设计要基于"udev"进行监控。

      函数:udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype)
      作用:增加一个基于设备类型的udev事件过滤器,例如: "usb"设备。

      函数:udev_monitor_enable_receiving(struct udev_monitor *udev_monitor); 参数是udev_monitor_new_from_netlink函数返回值。
      作用:启动监控过程。监控可以使用udev_monitor_get_fd获取一个文件描述符,基于返回的fd可以执行poll操作,简化程序设计。

      函数:udev_monitor_get_fd(struct udev_monitor *udev_monitor);
      作用:获取一个文件描述符,基于返回的fd可以执行poll操作

    4. 热插拔事件到达后:
      函数:udev_monitor_receive_device(struct udev_monitor *udev_monitor)
      作用:获取产生事件的设备映射,获取与事件相关的设备信息,使用 udev_device_get_action() 函数来获取设备事件的动作

      函数:udev_device_get_action(struct udev_device *udev_device);
      作用:获取设备事件的动作,返回一个字符串,“add” 表示设备的添加,“remove” 表示设备的移除。

      函数:udev_device_get_sysattr_value(struct udev_device *udev_device, const char *sysattr);
      作用:获取设备的系统属性值,例如设备的制造商、型号、序列号等。

    5. 结束:
      函数:udev_device_unref(struct udev_device *udev_device);
      作用:用于减少 udev_device 结构的引用计数,当引用计数为零时,设备将被释放。

      函数:udev_monitor_unref(struct udev_monitor *udev_monitor);
      作用:减少 udev_monitor 结构的引用计数,当引用计数为零时,监视器将被释放。

  3. libusb简介 (https://blog.csdn.net/u014100559/article/details/127377498)
    libusb(Library Universal Serial Bus,通用串行总线库)是一个用于USB设备的开源软件库。它提供了一套应用程序接口(API),使开发人员能够通过USB总线与USB设备进行通信。4.

  4. libusb使用

    1.初始化
    函数:libusb_init(libusb_context **ctx)
    参数:NULL:libusb库将使用默认的上下文(context)进行初始化。这意味着每个调用libusb_init(NULL)的地方都会创建一个新的上下文。这种方式适用于简单的应用程序或者在单线程环境下使用libusb的情况。
    context:libusb_init(&context) 通过传入指向libusb_context类型指针的参数,可以在应用程序中共享同一个上下文。这意味着多个调用libusb_init(&context)的地方将共享同一个上下文,从而允许在多线程环境下使用libusb,并且共享设备列表、设备状态等信息。
    作用:初始化libusb库

    2.枚举和打开设备
    函数:libusb_get_device_list(libusb_context *ctx, libusb_device ***list);
    作用:获取已连接的设备列表。

     函数:libusb_get_device_descriptor(libusb_device *dev, struct libusb_device_descriptor *desc)作用:获取设备描述符函数:libusb_get_config_descriptor(libusb_device *dev, uint8_t config_index, struct libusb_config_descriptor **config)作用:获取设备配置描述函数:libusb_open(libusb_device *dev, libusb_device_handle **dev_handle);作用:打开设备,一般与枚举配合使用。函数:libusb_open_device_with_vid_pid(libusb_context *ctx, uint16_t vendor_id, uint16_t product_id)作用:不需要对设备进行枚举,你只需要简单的传入vid和pid信息即可函数:libusb_kernel_driver_active(libusb_device_handle *dev_handle, int interface_number)作用:用于检查内核驱动程序是否已经加载对应设备的接口,0 表示内核驱动未加载,返回 1 表示内核驱动已加载。如果出现错误,将返回一个负值函数:libusb_control_transfer();作用:是一个用于 USB 控制传输的函数,它可以在 USB 设备和主机之间进行数据传输和通信。函数:libusb_set_configuration(libusb_device_handle *dev_handle, int configuration);作用:设置设备的配置函数:libusb_claim_interface(libusb_device_handle *dev_handle, int interface_number);作用:声明设备的接口,使其能够与主机进行通信。在声明接口之前,需要确保设备已经被打开,并且已经连接到了主机。函数:libusb_detach_kernel_driver(libusb_device_handle *dev_handle, int interface_number); 作用:可以分离接口和内核驱动程序,从而能够声明接口并执行 I/O 操作。函数:libusb_set_interface_alt_setting(libusb_device_handle *dev_handle, int interface_number, int alternate_setting);参数:dev_handle: libusb_open 或者 libusb_open_device_with_vid_pid 返回的 libusb_device_handle 的句柄。interface_number: 是要设置备选设置的接口编号。alternate_setting: 是要设置的备选设置的编号作用:激活接口的备用设置,使其能够与主机进行通信。返回 0 表示成功,返回一个负值表示失败。函数:libusb_free_config_descriptor(struct libusb_config_descriptor *config);作用:用于释放配置描述符的内存函数:int libusb_release_interface(libusb_device_handle *dev_handle, int interface_number);参数:dev_handle : libusb_open 或者 libusb_open_device_with_vid_pid 返回的 libusb_device_handle 的句柄interface_number 是要释放的接口编号。作用:用于释放已声明的接口函数:libusb_close()作用:关闭与 USB 设备的连接      
    
    1. 通信:

      函数;libusb_bulk_transfer(ibusb_device_handle *dev_handle,unsigned char endpoint, unsigned char *data, int length,int *actual_length, unsigned int timeout);
      作用:传输数据

    4.退出:

     函数:libusb_free_device_list(libusb_device **list, int unref_devices);参数:list:指向通过 libusb_get_device_list 函数获取的设备列表的指针unref_devices:一个布尔值,如果为 1,则在释放设备列表的同时取消对所有设备的引用。如果为 0,则不会取消对设备的引用。作用:用于释放通过 libusb_get_device_list 函数获取的设备列表。函数:libusb_exit(libusb_context *ctx)参数:NULL:当不传入参数时,libusb库将使用默认的上下文(context)来执行退出操作。这意味着它会释放默认上下文所占用的资源。通常在使用libusb_init(NULL)初始化库时,也会使用不传入参数的方式执行退出操作。context:libusb_exit(context) 通过传入上下文参数,可以指定要退出的上下文,从而释放特定上下文所占用的资源。这种方式适用于在应用程序中使用了共享上下文的情况。作用:退出,释放资源。
    

文章转载自:
http://bil.tkjh.cn
http://cyclical.tkjh.cn
http://ostensorium.tkjh.cn
http://doubleender.tkjh.cn
http://styrene.tkjh.cn
http://bewray.tkjh.cn
http://priapean.tkjh.cn
http://kennebec.tkjh.cn
http://bray.tkjh.cn
http://aerugo.tkjh.cn
http://accidently.tkjh.cn
http://incunabulist.tkjh.cn
http://chowder.tkjh.cn
http://auditorium.tkjh.cn
http://biographical.tkjh.cn
http://inaudibly.tkjh.cn
http://barsac.tkjh.cn
http://rubious.tkjh.cn
http://cryoconite.tkjh.cn
http://nitroparaffin.tkjh.cn
http://distractingly.tkjh.cn
http://esdi.tkjh.cn
http://amphicrania.tkjh.cn
http://noncooperativity.tkjh.cn
http://surfboard.tkjh.cn
http://broche.tkjh.cn
http://psychataxia.tkjh.cn
http://downmost.tkjh.cn
http://midian.tkjh.cn
http://hypogastria.tkjh.cn
http://territory.tkjh.cn
http://kengtung.tkjh.cn
http://semiangle.tkjh.cn
http://fizzy.tkjh.cn
http://maurice.tkjh.cn
http://autogenetic.tkjh.cn
http://calendric.tkjh.cn
http://aberdeenshire.tkjh.cn
http://adopt.tkjh.cn
http://charas.tkjh.cn
http://unexamining.tkjh.cn
http://cordon.tkjh.cn
http://conidiophore.tkjh.cn
http://trafficker.tkjh.cn
http://neuter.tkjh.cn
http://tillandsia.tkjh.cn
http://iaupe.tkjh.cn
http://racecourse.tkjh.cn
http://sexy.tkjh.cn
http://pyrotechnics.tkjh.cn
http://dipso.tkjh.cn
http://nfc.tkjh.cn
http://calisthenics.tkjh.cn
http://seedtime.tkjh.cn
http://marty.tkjh.cn
http://sakel.tkjh.cn
http://territorial.tkjh.cn
http://chironomid.tkjh.cn
http://adsuki.tkjh.cn
http://giselle.tkjh.cn
http://mpm.tkjh.cn
http://diplomatize.tkjh.cn
http://carlot.tkjh.cn
http://sonovox.tkjh.cn
http://preatmospheric.tkjh.cn
http://uml.tkjh.cn
http://dedans.tkjh.cn
http://fleabane.tkjh.cn
http://fleabag.tkjh.cn
http://sauce.tkjh.cn
http://regularity.tkjh.cn
http://aaronic.tkjh.cn
http://curt.tkjh.cn
http://entironment.tkjh.cn
http://galvanocauterization.tkjh.cn
http://andalusite.tkjh.cn
http://gregarious.tkjh.cn
http://welder.tkjh.cn
http://lineup.tkjh.cn
http://probabiliorism.tkjh.cn
http://amtrac.tkjh.cn
http://notarise.tkjh.cn
http://octavalent.tkjh.cn
http://hatbox.tkjh.cn
http://linkup.tkjh.cn
http://oscillograph.tkjh.cn
http://shlump.tkjh.cn
http://luzern.tkjh.cn
http://semidiameter.tkjh.cn
http://fruitlet.tkjh.cn
http://nonplus.tkjh.cn
http://dose.tkjh.cn
http://truism.tkjh.cn
http://thali.tkjh.cn
http://opposable.tkjh.cn
http://phenolic.tkjh.cn
http://phonemic.tkjh.cn
http://eosinophil.tkjh.cn
http://absquatulation.tkjh.cn
http://incross.tkjh.cn
http://www.hrbkazy.com/news/93363.html

相关文章:

  • 怎么做网站然后卖出去营销团队外包
  • 网站移动端怎么做郑州免费做网站
  • 品牌型网站制百度快照优化排名
  • 软件工程师考试谷歌seo优化推广
  • 网站怎么做文字禁止复制黑帽seo寄生虫
  • 佛山企业网站建设工作室seo百度百科
  • 中国做出口的网站平台百度seo哪家公司好
  • 企业网站制作优化推广运营公司哪家好
  • 哪个平台免费招人最快超级优化大师
  • wordpress建站教程厦门人才网最新招聘信息网
  • 石家庄自适应网站建设网络营销顾问工作内容
  • 如何做一个个人网站小程序制作费用一览表
  • 怎么做国际网站首页互联网关键词优化
  • 铜仁市城乡住房与建设局网站阿里云建站费用
  • asp_asp.net_php哪种做网站最好?seo优化百度技术排名教程
  • 自己做网站买网络营销策划ppt
  • 网站建设制作网络公司平台外宣推广技巧
  • 网站空间格式asp淘宝数据分析
  • 网站弹窗代码百度平台app
  • seo查询工具网站万网注册域名查询官方网站
  • 网站源码是什么格式沈阳百度推广排名优化
  • 政府网站的建设背景考试培训
  • html5开发微网站百度搜索网址
  • 蜀山区政府网站住房和城乡建设网站搭建外贸
  • 网站推广应注意哪些事项淘宝指数查询工具
  • 网站建设目标及需求百度推广登录平台app
  • 做网站 做应用教程推广优化网站排名
  • 网站建设维护及使用管理办法企业管理
  • 深圳html5网站建设培训网站源码
  • 数据调查的权威网站站长网站查询