相关文章推荐
千杯不醉的牙膏  ·  Comparison Operators ...·  1 年前    · 
逃课的水龙头  ·  Bash shell,while ...·  1 年前    · 
强悍的蘑菇  ·  jpa(二)----jpa ...·  1 年前    · 
爱热闹的小马驹  ·  typescript - 'this' ...·  1 年前    · 

在PC与硬件通讯时常常需要用的USB通讯库。HIDLibrary就是个很好的选择

一、HIDLibrary是什么?

HIDLibrary是基于.Net 的一种使您能够枚举中的Hid兼容USB设备并与之通讯。该工具库是您能快速的读写USB数据。

二、使用步骤

1.下载并引用库

工具 ----NuGet包管理器----管理解决方案的NuGet程序包----浏览----搜索HidLibrary----安装

using HidLibrary;

2.变量声明

代码如下(示例):

private const int VendorId = 0x0483;
private const int ProductId = 0x5753;
private  HidDevice _device;

3.初始化

_device = HidDevices.Enumerate(VendorId, ProductId).FirstOrDefault();
if (_device != null)
    _device.OpenDevice();
    _device.Inserted += DeviceAttachedHandler;
    _device.Removed += DeviceRemovedHandler;
    _device.MonitorDeviceEvents = true;
   //var message = new byte[] { 0, 81, 80, 73, 71, 83, 183, 169, 13 };	
   //_device.Write(message);
    _device.ReadReport(OnReport);
    //_device.CloseDevice();
    Console.WriteLine("Could not find reader.");
    //Console.ReadKey();

4.发送信息

发送数据消息时,第一位bit需要发送0

bool isReady = _device.Write(new byte[] { 0X00,0XFA, 0XCD, 0X01, 0XF5 },1000);

5.数据接收

private void OnReport(HidReport report)
    if (!_device.IsConnected) { return; }
    var cardData = report.Data;
    Console.WriteLine(cardData.ToString());
    _device.ReadReport(OnReport);

6.USB插入触发

private void DeviceAttachedHandler()
    Console.WriteLine("Device attached.");

7.USB拔出触发

private void DeviceRemovedHandler()
    Console.WriteLine("Device removed.");

将就的用用吧!

C# usb Hid 设备通讯示列(连接hid设备,发送指令,接收数据等),win xp/win7/win10均测试通过给有需要的人 需要设置正确的vid和pid,代码比较简单一般人应该都能看懂 vid和pid查看方法,我的电脑--右键--设备管理器--人体学输入设备-- 选择要查看的设备--右键属性--详细信息--硬件ID就可以看到了
赋所有源代码,开发工具vs2010 framework3.5 baidu搜索c# HidUsb都是大同小异案例,而且拿下来基本不能用。大都是围绕public static extern int CreateFile(省略众多参数..);发现没有,copy下来测试基本都是用不了的。 原因很简单:windows不允许你用程序随便就去访问硬件设备。所以在此把之前做过的基于C#开发读写HidUsb设备的项目整理成一个简单的小案例,分享给大家,开发环境VS2010。 该案例重点在public static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, IntPtr lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile); 看着貌似也是用到CreateFile这个函数,其实并不然,注意到没有"SafeFileHandle",这就是重点! 这样windows是允许程序访问外接hidusb设备的。 当然具体如何运用这个函数现在已经不是您应该 关心的了,因为我已经为您把它封装成一个类,您只要调用相应的方法就OK. //第一步:获取HidUsb设备信息 List slist = new List(); UsbHidDevice usbhid = new UsbHidDevice(); usbhid.GetDeviceList(ref slist); //HidUsb设备信息包含在List数据集 注:当获取到HidUsb设备信息为:\\?\hid#vid_0e2c&pid;_0112#6&1b44c403;&0&0000;#{4d1e55b2-f16f-11cf-88cb-001111000030}, 注意该字符串里的“vid_0e2c”和“pid_0112”部分,那么: vid为0e2c, pid为:0112 //第二步:创建一个HidUsb设备访问实例 UsbHidDevice Device = new UsbHidDevice(vid, pid); //第三步:连接HidUsb设备 Boolean connBool = Device.Connect(); //第四步:实现数据接收事件 Device.DataReceived += new UsbHidDevice.DataReceivedDelegate(Device_DataReceived); //当HidUsb设备返回信息时触发此事件 void Device_DataReceived(byte[] data) //处理接收到的数据逻辑 //第五步:向Hid设备发送数据"0xa0 00 0x12 0x9 0x22" string txt = "0xa0 00 0x12 0x9 0x22"; //把数据转换为字节数组 byte[] data = ConvertHelper.StringToByte(txt2); byte bt = 0; CommandMessage cmdMsg = new CommandMessage(bt, data); Boolean sbool = Device.SendMessage(cmdMsg); //发送数据 //第六步:释放所有资源 Device.Dispose();
注意:此库的支持非常有限。 解决这么多设备和配置的问题几乎是不可能的。 社区可能会提供一些帮助,但您将主要靠自己。 如果您提交问题,请提供相关代码片段以及有关您的操作系统、.NET 版本和设备的详细信息。 欢迎和赞赏拉取请求。 隐藏图书馆 该库使您能够枚举 .NET Hid 兼容 USB 设备并与之通信。 它提供同步和异步读写功能以及插入和移除设备的通知。 这个库适用于 x86 和 x64。 PM> Install-Package hidlibrary 本杰明·韦格曼 jwelch222 托马斯·哈默 朱利安西伯特 乔治·哈恩 里克·范·利斯霍特 保罗·特兰登 尼尔·泰森 布鲁诺·尤奇利 斯布莱克莫尔 马雷克·罗斯科 比尔普雷斯科特 阿南斯·雷切拉 感谢 JetBrains 为R#和dotTrace提供 OSS 许可证! write(startByte); enableUsbBufferEvent(new System.EventHandler(myEventCacher)); Thread.Sleep(5); startRead(); stopRead(); write(stopByte)
c# 下收发usb消息,usb通信程序,大概流程和这篇博客写的差不多(https://www.cnblogs.com/xidongs/archive/2011/11/28/2266100.html)。 这个github上的库也很好,个人觉得用库更方便,地址(https://github.com/mikeobrien/HidLibrary)。 两者底层都是调用setupapi.dll,hid.d...
HidLibrary - 强大的 HID 设备访问库 HidLibrary 是一个开源的 C# 库,用于在 Windows、Linux 和 macOS 上访问硬件设备,尤其是那些遵循 HID(人类接口设备)协议的设备。通过这个库,开发者可以轻松地与 USB 控制器、游戏手柄、键盘等 HID 设备进行交互。 为什么选择 HidLibrary? 跨平台:HidLibrary 支持 Windows、...
USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB HID测试工具(C#)USB H
C#和USB HID进行通讯,实现发送、接收数据主要是通过两个函数实现的FileStream.Write(...)(发送数据)、FileStream.Read(...)(接收数据)。Write和Read是同步,BeginWrite和BeginRead是异步。 或者是c++的库函数WriteFile()、ReadFile(),在库kernel32.dll。(但是我的项目发现WriteFile()
本文转载于:https://blog.csdn.net/u010875635/article/details/73321066 Windows使用HID通信相对比较简单,HID都是通过PID、VID信息来查找连接的,相比于串口,几乎无变化,连接无需人工选择,十分方便,也不需要驱动。 下面上实例,PID为0x003f,VID为0x04D8,支持发送接收数据显示到UI,使用C#来编...
写一个Converter就好了,具体怎么转是你的需求了 [code=java] public class Double2TimeConverter : IValueConverter const int minutes = 60; const int hours = 60 * 60; public object Convert(object value, Type targetType, object parameter, CultureInfo culture) return D2t((int)(double)value); public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) throw new NotImplementedException(); private string D2t(int seconds) int convertHours = seconds / hours; int convertMinutese = seconds % hours / minutes; int convertSeconds = seconds % hours % minutes % minutes; string result = string.Empty; if (convertHours == 0) result = string.Format("{0}:{1}", convertMinutese.ToString("d2"), convertSeconds.ToString("d2")); [/code]
HP 笔记本电脑 - 设置 FN 键开关 benbolaolei: 牛的,很有用 WPF学习:Slider — 冒泡显示值 youngqc: 找不到Double2IntConverter怎么办啊 C# 中HIDlibrary的使用 茶香排骨: 我测试了一下,可以接收arm嵌入式返回的数据 C# 全局监听键盘事件 u014432583: 它这个按键事件好像也包括了鼠标按键,但无鼠标移动事件的监听,大佬可还有鼠标钩子的监听例子?实在不行只能Winfrom里沿着事件找元数据了。