C# 使用 LibUsbDotNet 实现 USB 设备检测 (blog.yuanpei.me)

【简介】

基于某些不可抗因素上的考虑,博主需要在程序中集成某厂商的硬件。我猜测,人们觉得这件事情“简单”,或许是看到这个设备有一条 USB 连接线,因为在人们的固有印象中,只要把它接到电脑上就可以正常工作了。事实的确如此,因为你只要考虑串口(SerialPort)、USB 以及这两者间的相互转换即可。当然,这世上的事情圆满者少,遗憾者多,博主在使用过程中发现,厂商的提供的 SDK 存在 Bug,当设备从电脑上拔出后,其 SDK 的初始化函数依然正常返回了,这意味着我们无法在使用设备前“正确”地检测出硬件状态。考虑厂商愿不愿意修复这个 Bug 还是个未知数,博主不得不尝试另辟蹊径。

点击查看原文 >>

@技术头条 2023-10-24 23:39 / 原作者微博:@云来雁去 / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
如何使用纯CSS鉴别是不是Safari浏览器 (www.zhangxinxu.com)
如何通过纯 CSS 来判断是否为 Safari 浏览器?本文介绍了多种实用技巧和 @supports 规则的使用,帮助开发者轻松检测并处理 Safari 特有的样式兼容性问题。无论是桌面还是 iOS Safari,本文都有详细的解决方案!
by @技术头条 2024-09-09 23:40 查看详情
Android|使用阿里云推流 SDK 实现双路推流不同画面 (mazhuang.org)
想知道如何在 Android 中通过阿里云 SDK 实现双路推流不同画面?本文介绍了一个巧妙的解决方案,虽然阿里云 SDK 不支持原生多路推流,但通过跨进程调用,实现了同时推送不同区域的画面,适用于直播和录播场景的分离展示。开发者不容错过的实战分享,赶快阅读!
by @技术头条 2024-09-08 23:26 查看详情
USB 设备开发:从入门到实践指南(三) (paper.seebug.org)
本文深入研究了Nintendo手柄驱动在Linux系统中的实现细节,并解决了一些关于USB HID和input驱动的疑问。
by @技术头条 2024-08-06 08:27 查看详情
USB 设备开发:从入门到实践指南(二) (paper.seebug.org)
本文介绍了如何利用树莓派设备模拟USB鼠标和游戏手柄。文章从修改HID描述符开始,详细说明了如何通过调整bash脚本中的协议配置模拟不同的USB设备。在模拟鼠标时,作者修改了协议为鼠标,调整了HID描述符以支持鼠标的左右键、中键、滚轮等功能。接着,在模拟游戏手柄部分,作者通过设定正确的供应商和产品ID,使设备被识别为XBox 360手柄。文章还探讨了如何动态修改Ubuntu驱动来支持Switch手柄。

在研究过程中,作者分析了USB HID协议,使用eBPF和调试输出方式研究Linux内核驱动代码,探索了手柄的各种功能键和坐标轴的实现。此外,作者对Switch Pro手柄的驱动支持问题进行了深入分析,发现需要特定协议的支持,并提供了解决方案。
by @技术头条 2024-08-06 08:26 查看详情
USB 设备开发:从入门到实践指南(一) (paper.seebug.org)
这篇文章介绍了使用树莓派4B设备进行USB设备开发的经验。作者从研究工具、搭建开发环境、分析USB协议等多个角度详细描述了如何将树莓派模拟成一个USB键盘,并通过Wireshark捕获流量以研究和理解USB协议的工作原理。文章提供了具体的操作步骤和代码示例,并深入探讨了设备描述符、配置描述符、接口描述符、端点描述符等USB协议的关键组件。该文章为USB设备开发提供了实用的指导,适合对底层硬件开发感兴趣的开发者参考。
by @技术头条 2024-08-06 08:25 查看详情
使用 OpenRewrite 优化代码 (www.diguage.com)
本文介绍了如何使用OpenRewrite工具优化Java代码。OpenRewrite可以通过自动化脚本进行代码重构,减少技术债务,提升代码质量。作者详细讲解了如何配置Maven插件,并使用多种重构“处方”,例如排序import语句、升级到Java 21、替换Base64实现,以及迁移到Spring Boot 3.2和JUnit 5。通过这些工具和方法,开发者可以简化代码维护和升级流程。
by @技术头条 2024-08-06 08:04 查看详情
使用eBPF编写系统调用跟踪器 (colobu.com)
本文总结了如何使用eBPF编写一个名为BeeTracer的系统调用跟踪器。文章介绍了eBPF的基本概念及其优势,并详细描述了在Rust中实现该工具的步骤。通过利用eBPF的tracepoints和maps功能,BeeTracer可以高效地捕获并记录Linux系统调用的细节。作者还提供了代码示例,展示了如何在内核空间进行实时跟踪。
by @技术头条 2024-08-06 07:57 查看详情
使用Rust捕获和解析网络包 (colobu.com)
这篇文章介绍了如何使用Rust编程语言捕获和解析网络包,以提取TCP时间戳并计算网络延迟。作者利用pcap库捕获网络包,并使用pdu库解析TCP选项中的时间戳信息,结合哈希映射存储五元组信息以计算往返时间。文中提供了代码示例,展示了在Mac系统上实现这一过程的步骤。
by @技术头条 2024-08-06 07:53 查看详情
让AI 实现一个红黑树 (colobu.com)
文章探讨了使用AI帮助实现红黑树数据结构的过程。作者尝试使用多种AI工具模拟专家(如Rob Pike)实现红黑树,并进行了代码优化、单元测试和Fuzz测试。过程中发现AI生成的代码存在问题,但通过不断调整和AI协作,最终实现了功能完善的红黑树实现。文章强调AI在代码生成、测试和优化方面的潜力与不足。
by @技术头条 2024-08-06 07:52 查看详情
如何用简单的Web方法实现图片的马赛克效果 (www.zhangxinxu.com)
文章介绍了如何通过简单的Web技术实现图片的马赛克效果。作者主要讨论了使用SVG滤镜来实现此效果,尤其是通过使用像<feFlood>、<feComposite>和<feMorphology>等SVG元素。此外,文章还探讨了通过CSS属性image-rendering: pixelated来模拟马赛克效果的方法,即通过放大小图片来达到效果。文中提供了详细的示例和代码片段来帮助实现这些效果。
by @技术头条 2024-08-06 07:48 查看详情