【问题标题】:Reading data from USB using C#?使用 C# 从 USB 读取数据?
【发布时间】:2011-03-04 11:54:51
【问题描述】:

我不想读取串行端口或其他可能的简单快捷方式。我想知道如何使用 C# 读取笔记本电脑中的 USB 端口。 您是否可以建议一个网站或解释流程的流程,我将非常感谢您的帮助

【问题讨论】:

  • 从您的 USB 读取什么?有什么插的吗?如果连接了 RS232 设备,我知道一些简单的快捷方式。哦,等等……
  • 您想从原始设备(如驱动程序)读取还是从特定设备类型读取?第一个可能只有通过繁重的 P/Invoke 才能实现(不值得麻烦)。后者将取决于设备。
  • 从什么读取数据?是否来自设备,例如打印机? USB 只是一种标准介质。数据的来源是什么。

标签: c# usb


【解决方案1】:

如果您想进行 USB 开发,Jan Axelson(USB Complete 的作者)website 通常是一个不错的起点。

编辑:假设它是您想要与 this 通信的 HID,文章可能很有用,并且包含 C# 示例。

【讨论】:

  • @developerwjk 谢谢,现已修复。
【解决方案2】:

这里的假设是您想在 Windows 上读取数据。这是一个代码示例:

    public override async Task<byte[]> ReadAsync()
    {
        return await Task.Run(() =>
        {
            var bytes = new byte[ReadBufferSize];
            //TODO: Allow for different interfaces and pipes...
            var isSuccess = WinUsbApiCalls.WinUsb_ReadPipe(_DefaultUsbInterface.Handle, _DefaultUsbInterface.ReadPipe.WINUSB_PIPE_INFORMATION.PipeId, bytes, ReadBufferSize, out var bytesRead, IntPtr.Zero);
            HandleError(isSuccess, "Couldn't read data");
            Tracer?.Trace(false, bytes);
            return bytes;
        });
    }

    [DllImport("winusb.dll", SetLastError = true)]
    public static extern bool WinUsb_ReadPipe(SafeFileHandle InterfaceHandle, byte PipeID, byte[] Buffer, uint BufferLength, out uint LengthTransferred, IntPtr Overlapped);

所有代码和示例(包括其他平台)都可以在这里找到:https://github.com/MelbourneDeveloper/Device.Net

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多