在 C# 中引用 GitHub 库中的 Hid 库并使用它

本文关键字:Hid 引用 GitHub | 更新日期: 2023-09-27 17:56:32

我刚刚开始学习C#,所以如果这是一个基本问题,请原谅我。我正在尝试开发一个应用程序,该应用程序将 USB-HID 刻度的值读取到 Excel 中。首先,我将使用这个 github 库(已经下载):https://github.com/mikeobrien/HidLibrary然后使用 closedxml.codeplex.com 创建电子表格并在其中传输数据。

我正在尝试弄清楚如何在我的 C# 项目中引用此库并使用它来从规模中获取信息。我对 C# 或 .NET 了解不多,希望得到一些帮助,大多数谷歌搜索都没有太大帮助,所以任何潜在客户将不胜感激。谢谢!

在 C# 中引用 GitHub 库中的 Hid 库并使用它

您从 GitHub 提供的链接指定了在项目中引用它的库的名称。请查看"安装"部分。此代码用于在项目的 Nuget 包控制台上使用。

PM> Install-Package hidlibrary

在此链接上查看如何使用适用于 Visual Studio 的 Nuget 包控制台https://docs.nuget.org/consume/package-manager-console

尝试 Hid.Net

您可以在此处的文档中阅读有关 Hid 传输的信息。

这是从温度计读取的,温度计可能类似于刻度。

参考

    private static async Task DisplayTemperature()
    {
        //Connect to the device by product id and vendor id
        var temperDevice = await new FilterDeviceDefinition(vendorId: 0x413d, productId: 0x2107, usagePage: 65280)
            .CreateWindowsHidDeviceFactory(_loggerFactory)
            .ConnectFirstAsync()
            .ConfigureAwait(false);
        //Create the observable
        var observable = Observable
            .Timer(TimeSpan.Zero, TimeSpan.FromSeconds(.1))
            .SelectMany(_ => Observable.FromAsync(() => temperDevice.WriteAndReadAsync(new byte[] { 0x00, 0x01, 0x80, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00 })))
            .Select(data => (data.Data[4] & 0xFF) + (data.Data[3] << 8))
            //Only display the temperature when it changes
            .Distinct()
            .Select(temperatureTimesOneHundred => Math.Round(temperatureTimesOneHundred / 100.0m, 2, MidpointRounding.ToEven));
        //Subscribe to the observable
        _ = observable.Subscribe(t => Console.WriteLine($"Temperature is {t}"));
        //Note: in a real scenario, we would dispose of the subscription afterwards. This method runs forever.
    }