问题标签 [libusbdotnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1066 浏览

c# - LibUsbDotNet - 找不到 USB 设备错误

使用以下 链接作为参考,我尝试从我的 PC 与 USB 通信。

下面的代码

返回异常 - 未找到设备。

libusbnet 是否需要安装任何驱动程序。我的默认 USB 设备列在驱动器中,但无法从程序中检测到。在 pid 和 vid 中应该给出什么值?如何从设备管理器中找到它?

我还尝试获取 USB 端口列表并从中找到 pid 和 vid,但它没有列出任何相关数据。 显示信息

0 投票
1 回答
544 浏览

c# - USB 设备在 MonoLibUsb 中无效

我正在尝试在 MonoLibUsb(在 Linux 上)中打开 USB 设备句柄,但每次打开它时,我都会IsInvalid == true进入设备句柄。

USB 设备绝对与 LibUsb 兼容,因为我已将它连接到我的 Windows PC 并且可以成功地使用 LibUsbDotNet 与之对话。如果我尝试在 Mono 中使用 LibUsbDotNet,则应用程序在尝试打开它时会挂起,所以我认为 LibUsbDotNet 是用于 Windows 的,而 MonoLibUsb 是用于 Mono 的(名称有点泄露)。但是,即使 MonoLibUsb 也无法正确使用该设备。

那么为什么返回的设备句柄无效呢?

代码

输出

0 投票
0 回答
977 浏览

linux - 将 LibUsbDotNet 用于在 Linux 下运行的 ASP.NET Core 应用程序 - 未找到 libusb-1.0 库

我开发了一个涉及与 USB 设备通信的 ASP.NET Core 应用程序。为此,它使用CoreCompat.LibUsbDotNet库的2.2.8-r101 版本,这是针对 .NET Standard 1.5 的 LibUsbDotNet 的一个端口。

当我在 Windows 上托管服务器(使用 IIS Express)时,一切正常 - 我能够毫无问题地与 USB 设备通信。但是,我也尝试在两个 Linux 设备上托管服务器:

  • 运行 Ubuntu 16.04 的 VMware 虚拟机
  • 基于官方 ASP.NET Core docker 镜像构建的 docker 容器(microsoft/aspnetcore:1.0.1

在这两种情况下,我的服务器都成功启动,但是当我尝试启动与 USB 设备的通信时(通过单击网页中的“开始”按钮),我看到浏览器控制台中显示以下错误:

在这两种情况下,我都使用以下命令集配置 Linux 设备:

在 docker 容器的情况下,我以特权模式运行它,并且使用它和 VMware 机器,我可以看到我的 USB 设备是使用lsusb.

我还能够在 Windows 和 Linux 上使用先前构建的面向 .NET Framework 的应用程序和使用 LibUsbDotNet 2.2.8 版与此设备进行通信(在 Linux 的情况下,这是通过在 Windows 上编译、复制二进制文件来完成的到 Linux VM 并使用mono) 运行。

这是安装 libusb 后我正在运行的 docker 容器的输出:

whereis

/lib

/usr/lib

/usr/local/lib

更新 1

这是我的project.json

此应用程序的想法是,它充当通信服务测试平台,将扫描其依赖项以查找 MEF 导出ICommunicationService并允许对其进行测试。这意味着它不直接使用 LibUsbDotNet,而是引用了一个项目。这是project.json为了:

0 投票
1 回答
1422 浏览

c# - 如何将供应商特定的命令(如“设置日期时间”)发送到 USB 设备

我在 C# 应用程序中使用 libusbdotnet 与 USB 设备进行通信。如何给供应商特定的命令,例如SET DATE TIME使用 libusbdotnet?

0 投票
1 回答
6947 浏览

c# - 使用 ASP.NET Core 的跨平台 USB 通信

概述

我已经将一个 Web 应用程序移植到 .NET Core,我发现它能够在 Windows 上运行时通过 USB 与微控制器通信,但在 Linux 上运行时却不能。我正在努力解决:

  • 为什么会这样(是我正在使用的库中的错误,还是我错误配置了 Linux 环境?)

  • 我如何解决或解决它(替代库、环境更改等)

如果有人成功地创建了一个基于 .NET Core 的应用程序,该应用程序可以通过 USB 以与平台无关的方式进行通信,我将非常感谢您的意见。

环境

作为本文其余部分的参考,以下是有关我当前环境的一些详细信息:

  • Windows 7 64 位主机
  • dotnet 版本 1.0.0-preview2-003131
  • Docker 版本 1.12.0,构建 8eab29e
  • Docker 工具箱(我相信 v1.12.3)
  • VirtualBox v5.0.30 r112061

细节

我以前有一个基于.NET Framework的 Web 服务,用于控制微控制器。基于 .NET Framework,它仅限于在 Windows 上运行。为了实现跨平台支持,我开始将应用程序移植到.NET Core。该任务现在或多或少已经完成了——例如,我现在可以将我的应用程序作为 Docker 服务构建和运行,我认为这将大有裨益。

我的应用程序分布在多个项目中,但出于本文的目的,我将只讨论两个:

  • 基于ASP.NET Core 的 Web 服务项目,它使应用程序的核心功能可以通过 Web 通信进行控制。1它将其他所有内容联系在一起,是我实际使用dotnet <<application.dll>>.

  • 一个处理与我的 USB 设备通信的USB 通信服务项目。2它目前使用CoreCompat.LibUsbDotNet库 (v2.2.8-r101),它分别作为Windows 和 Unix 上的WinUSB和库上的跨平台 C# 适配器。libusb该项目作为 Web 服务使用的 Nuget 包分发,这就是问题所在。

当我直接在 Windows 下运行该应用程序时,它运行良好。但是,如果我尝试在 Linux 虚拟机上运行它或将其作为 Docker 服务运行,Web 服务将无法初始化,并出现错误提示libusb-1.0 library无法定位。3

基于此错误消息,我尝试检查我尝试在其上运行应用程序的 Linux VM 和 Docker 容器的环境。 4

在 Docker 虚拟机上安装我的 USB 设备并以特权模式运行基于我的 Web 应用程序映像的容器后,我可以确认它看到了我的 USB 设备:

我还确认libusb-1.0已安装5并检查它是否可从ldconfig缓存中获得:

基于此,我不确定为什么CoreCompat.LibUsbDotNet会抛出无法找到的异常libusb-1.0,并且只能假设它是库中的错误。

有没有人成功地使用这个库在 Unix 环境下进行通信?或者,是否有人为基于 .NET Core 的应用程序找到了另一种以与平台无关的方式与 USB 设备通信的方式?

参考

[1]project.json用于 Web 服务项目

[2]project.json用于USB通讯项目

[3] USB通讯失败异常

[4] Web服务Dockerfile

[5] Docker容器上的输出find / -name libusb*

0 投票
0 回答
230 浏览

c# - LibUsbDotNet 在写入时仅发送第一个字节

我正在使用 LibUsbDotNet 在 C# 中读取和写入 usb,但是当写入 USB 时它只发送第一个字节,所以需要对 UsbEndpointWriter 或 UsbDevice 进行特殊配置?即使我测试 SerialPort 类以发送数据,我也有同样的问题。

PC 将 USB 检测为虚拟 COM 端口。

我的 USB 设备描述符:

配置 #1 长度:9

接口 (0,0) 长度:9

端点 0x82 长度:7

接口 (1,0) 长度:9

端点 0x01 长度:7

端点 0x81 长度:7

0 投票
1 回答
365 浏览

device-driver - 如何使用设备管理器上的 INF 文件更新 libusb 驱动程序

我正在开发一个程序,用于使用 libusbdotnet dll 在设备和 pc 之间进行通信。该设备在 USB 类中使用 CDC(通信设备类)。

我从 libusbdotnet inf 向导创建了一个 INF 文件。我用设备管理器上的 inf 文件更新了驱动程序。但在某些计算机上,inf 文件无法更新。并给出此错误:“您指定的文件夹不包含与您的设备兼容的软件驱动程序。如果该文件夹包含驱动程序,请确保它设计为适用于基于 x64 的系统的 Windows。

但是一些 64 位计算机(W7、W8 或 W10)接受 inf 文件。所以它似乎与操作系统或系统类型无关。

我从一些来源尝试了很多关于这个错误的解决方法。但我没有找到正确的解决方案。

你怎么看这个问题?

0 投票
1 回答
207 浏览

usb - LibUsbDotNet 批量传输 Usb 通信 Win32Error

我们有用于 USB 连接的供应商特定设备。

我们使用了 LibUsbDotNet批量传输通信。在第一种情况下,我进行了64 字节的数据传输。在第二种情况下,我进行了1024 字节的数据传输。在64 字节传输的情况下,通常没有问题(问题很少)。如果传输1024 字节,就会出现问题(几乎总是在USB 2.0 端口中,在USB 3.0 端口中也很少见)。

是什么导致了这个问题?

0 投票
0 回答
754 浏览

c# - 如何在 USB 通信 C# 中使用批量传输

我对 USB 通信有一点问题。我可以连接到 USB 设备,但我无法将任何数据写入 USB 设备。

这是我将数据写入 USB 设备的代码:

当我使用 checkUID() 或 checkSCardConnect() 时,它总是返回 false。是否有任何其他程序可以使用 USB 通信进行编写?

0 投票
2 回答
9611 浏览

c# - 使用 LibUsbDotNet C# USB 库写入 USB PORT C#

我想将一些数据写入 USB 端口并从中接收答案。我实际上使用了相同的

并使用 SerialPort 对象并使用 rs235 端口将其发送到同一台机器。它做得很好..我使用这些方法得到了正确的答案:

对于下一个代码,我尝试使用 USB 端口并写入同一行...但是当我读回答案时我什么也没得到,我的 bytesWritten 中得到 (bytesRead = 0),我得到 15...

我不知道,我做错了,谢谢。