来自不同键盘C#.NET的RAWINPUT



我正在处理Windows表单应用程序,该应用程序应从USB量表中获取数据。USB量表像键盘一样处理。如果有人将某些内容放在刻度上,则秤将开始键入"权重"字符串,例如USB键盘。之前,我将量表通过单击表单应用中的文本框输入文本框中。但是现在,我需要获取权重字符串实习生,而无需让比例直接写入文本框。因此,该程序可以在其背景时从量表中处理数据。

首先,我认为我必须为输入选择一个设备。(类似于com port xy上的keyborad),所以我需要创建一个包括所有输入设备的列表。我该如何在c#.net中执行此操作?

我已经尝试过:

string[] devices = GetRawInputDeviceList;
textBox1.Text = devices[0];
textBox2.Text = devices[1];

但这不起作用。也许有人可以告诉我该怎么做?还是你们认为解决我的问题的最佳方法是什么?请帮助!

我想通知您,以下代码帮助我解决了问题。您将需要Mike O’Brien的USB HID库。您可以在VisualStudio(Nuget软件包)或此处下载:https://github.com/mikeobrien/hidlibrary

using System;
using System.Linq;
using System.Text;
using HidLibrary;
namespace HIDProject
{
    class Program
    {
        private const int VendorId = 0x0801;
        private const int ProductId = 0x0002;
        private static HidDevice _device;
        static void Main()
        {
            _device = HidDevices.Enumerate(VendorId, ProductId).FirstOrDefault();
            if (_device != null)
            {
                _device.OpenDevice();
                _device.Inserted += DeviceAttachedHandler;
                _device.Removed += DeviceRemovedHandler;
                _device.MonitorDeviceEvents = true;
                _device.ReadReport(OnReport);
                Console.WriteLine("Reader found, press any key to exit.");
                Console.ReadKey();
                _device.CloseDevice();
            }
            else
            {
                Console.WriteLine("Could not find reader.");
                Console.ReadKey();
            }
        }
        private static void OnReport(HidReport report)
        {
            if (!_device.IsConnected) { return; }
            var cardData = new Data(report.Data);
            Console.WriteLine(!cardData.Error ? Encoding.ASCII.GetString(cardData.CardData) : cardData.ErrorMessage);
            _device.ReadReport(OnReport);
        }
        private static void DeviceAttachedHandler()
        {
            Console.WriteLine("Device attached.");
            _device.ReadReport(OnReport);
        }
        private static void DeviceRemovedHandler()
        {
            Console.WriteLine("Device removed.");
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新