Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从不同键盘C#.Net读取输入_C#_.net_Keyboard_Input Devices - Fatal编程技术网

从不同键盘C#.Net读取输入

从不同键盘C#.Net读取输入,c#,.net,keyboard,input-devices,C#,.net,Keyboard,Input Devices,我正在开发一个Windows窗体应用程序,它应该可以从USB秤上获取数据。 USB电子秤的操作方式与键盘类似。如果有人在秤上放东西,秤就会像USB键盘一样开始输入重量字符串。之前,我让磅秤在Forms应用程序中单击文本框,将重量字符串输入文本框。但现在我需要获得重量字符串实习生,而不让秤直接写入文本框。这样程序就可以在天平处于后台时处理天平上的数据 所以首先我想我必须选择一个设备作为输入。(类似于Com端口XY上的Keyborad)所以我需要创建一个包含所有输入设备的列表。 如何在C#Net中实

我正在开发一个Windows窗体应用程序,它应该可以从USB秤上获取数据。 USB电子秤的操作方式与键盘类似。如果有人在秤上放东西,秤就会像USB键盘一样开始输入重量字符串。之前,我让磅秤在Forms应用程序中单击文本框,将重量字符串输入文本框。但现在我需要获得重量字符串实习生,而不让秤直接写入文本框。这样程序就可以在天平处于后台时处理天平上的数据

所以首先我想我必须选择一个设备作为输入。(类似于Com端口XY上的Keyborad)所以我需要创建一个包含所有输入设备的列表。 如何在C#Net中实现这一点

我已经试过了:

string[] devices = GetRawInputDeviceList;
textBox1.Text = devices[0];
textBox2.Text = devices[1];
但这是行不通的。 也许有人能告诉我怎么做吗?或者你们认为解决我问题的最好办法是什么?
请帮忙

我想通知您,以下代码帮助我解决了问题。 您将需要Mike O'Brien的USB HID库。您可以在VisualStudio(NuGet软件包)中下载,也可以在此处下载:


“但这不起作用”--想详细说明一下吗?这篇文章有关于这个主题的有趣链接:当试图写入文本框时,它说:“ScaleCalc75.exe中发生了未处理的'System.NullReferenceException'类型的异常”。谢谢你的链接!在调试模式下,VisualStudio会告诉您发生异常的文件名、行号和列号。在那里设置断点并调试!
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.");
        }
    }
}