我们有一些与内部研发工具通信的HID 设备(触摸数字化仪)。该工具解析来自设备的原始功能报告,以绘制触摸报告以及原始功能报告中存在但被 Windows 7 的 HID 驱动程序过滤掉的一些附加数据(例如,消息中不存在压力数据WM_TOUCH)。
然而,我们已经开始使用一些可能具有不同固件变体的设备,因此它们不共享相同的字段顺序或字节长度,我需要修改我们的研发工具,以便它能够透明地适应所有设备。
这些设备来自同一制造商(我们自己)并共享相同的设备信息,因此不能使用这些字段来区分不同的固件。我想要做的是获取设备发送的HID 功能报告描述符,并根据此信息动态更新我们的功能报告解析方法。
但是,在浏览 Windows API 时,我没有找到正确的调用方法来获取此描述符。到目前为止我发现的是MSDN 上的原始输入页面,但我不知道下一步该怎么做。我可以在RID_DEVICE_HID结构中找到所需的信息吗?或者我需要调用一个完全不同的 API 吗?
在此先感谢您的帮助!
Atmel 为 USB 设备提供的示例代码有一个具有两种备用设置的接口。第一个没有端点,第二个有 6 个端点。这有什么原因吗 - 为什么不只为所有端点设置一个备用设置?
我在互联网上发现了一个模糊的帖子,暗示这可能与省电有关。有人有什么主意吗?
我有一个带有 USB 设备接口的嵌入式 Linux 3.19 系统。设备需要向主机公开三个 USB 接口:一个虚拟网络接口(RNDIS 或 CDC ECM)和两个虚拟串行端口(CDC ACM)。该设备需要与现代Windows(7+)和Linux(3.16+)主机配合。
鉴于 Windows 本身不支持 CDC ECM,我们决定实现两种 USB 配置(这是一种流行的方法):
目的是让 Windows 使用本机支持的 RNDIS 第一个配置(Windows 始终选择第一个 USB 配置);并让非 Windows 主机使用带有 CDC ECM 的第二个配置。
我整理了一个脚本(基于 David Lechner 的类似脚本):http://pastebin.com/VtAusEmf。下面提供了脚本的相关部分(请点击链接查看完整的脚本,它相当大):
mkdir -p ${g}
echo "${usb_ver}" > ${g}/bcdUSB
echo "${dev_class}" > ${g}/bDeviceClass
echo "${vid}" > ${g}/idVendor
echo "${pid}" > ${g}/idProduct
mkdir ${g}/strings/0x409
echo "${mfg}" > ${g}/strings/0x409/manufacturer
echo …Run Code Online (Sandbox Code Playgroud) 我一直在寻找一种方法来为我缺少光传感器的笔记本电脑改装光传感器。
到目前为止,我发现的最好的规范是 ACPI 3b 规范的第 9.2 节,其中详细介绍了如何实现此类传感器。我认为 Linux 也会遵循该规范。
我的第一个问题:市场上有这样的设备吗?一个小型 USB 适配器,用于测量光并将其提供给操作系统。我已经有一台 Spyder i1 可以做到这一点,但它太大了而且太大了。
第二个问题:是否可以使用Arduino和V-USB来实现这一点?如果是,将如何开展该项目?
甚至可以通过 USB 来完成此操作吗?
背景:通过测量 LED 电容,小型 USB 微控制器和 LED 可以像光传感器一样发挥作用,无需其他外部部件。这是有据可查的,并且也经过我自己的测试。
FTDI 是否实现标准通信设备类 (CDC) USB 协议?
我需要在 STM32 上实现一个主机,以将设备连接到 FTDI 串行芯片。但谷歌搜索显示,使用 ST 的库时会出现问题。
我已经使用 USB-CDC 协议对我的 stm32f103 blue-pill 板进行了编程
我可以在这个端口上读写
但是执行硬件重置后,COM 端口不可用,我必须拔下 USB 连接并重新插入,然后 COM 端口才会出现。
有可能避免这种情况吗?
-谢谢
我不确定如何com.apple.developer.driverkit.transport.usb在我的 dext 权利文件中设置密钥。Info.plist 文件已经包含该IOKitPersonalities字典,并且阅读该com.apple.developer.driverkit.transport.usb字典后,它看起来应该包含与 的条目具有相同信息的条目IOKitPersonalities。
项目的权利文件与WWDC 驱动程序套件视频中显示的内容非常相似,将其设置为:
<key>com.apple.developer.driverkit.transport.usb</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
当我将其设置为 时<true/>,系统扩展启动。在看到应用程序的日志行之前,我确实看到了这样的一些行:
...
2020-05-06 12:23:19.229709+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)
Run Code Online (Sandbox Code Playgroud)
这个权利应该只反映字典中的内容吗IOKitPersonalities?
钥匙完全拔掉后,我得到:
...
2020-05-06 12:23:19.229709+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)
2020-05-06 12:23:19.253517+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aae)::exit(Entitlements check failed)
Run Code Online (Sandbox Code Playgroud)
..所以我想钥匙一定在那里。
我正在查看与应用程序相关的日志行log stream --source | grep MyUserUSBInterfaceDriver
任何人都知道如何为 Node.js 设置 USB 打印机。我无法为其配置界面。这是我的代码
enter code here const ThermalPrinter = require("../node-thermal-printer").printer;
const Types = require("../node-thermal-printer").types;
const electron = typeof process !== 'undefined' && process.versions &&
!!process.versions.electron;
async function testConnection () {
let printer = new ThermalPrinter({
type: 'star',
interface: "Gold" //name of the printer
});
printer.print("hi");
let isConnected = await printer.isPrinterConnected()
console.log("Printer connected:", isConnected);
}
testConnection();
Run Code Online (Sandbox Code Playgroud) 我目前正面临一个问题,即OS应用程序没有显示两个设备中的一个,因为根据控制台日志,这些设备具有相同的UUID.设备具有不同的供应商ID,不同的产品ID,供应商名称和设备名称.在数十亿可能的UUID组合中,他们不得不发生冲突.
操作系统如何计算USB设备的UUID?它基于什么USB信息?
附加信息:它们的序列号相同,目前都是零.UUID只是基于序列号吗?
我正在使用Magtek磁卡读卡器并通过USB将该MCR与Android设备连接.当我使用API 12及其以后它工作正常但当我将API版本更改为8时它崩溃并在Log cat中显示以下结果:
04-12 11:39:39.560: E/AndroidRuntime(276): java.lang.NoClassDefFoundError: android.hardware.usb.UsbManager
04-12 11:39:39.560: E/AndroidRuntime(276): at com.magtek.mobile.android.libDynamag.MagTeklibDynamag.openDevice(MagTeklibDynamag.java:98)
04-12 11:39:39.560: E/AndroidRuntime(276): at com.magtek.mobile.android.MagTekDemo.Dynamag.MagTekDemo.onResume(MagTekDemo.java:119)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.Activity.performResume(Activity.java:3823)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.os.Looper.loop(Looper.java:123)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-12 11:39:39.560: E/AndroidRuntime(276): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 11:39:39.560: E/AndroidRuntime(276): at java.lang.reflect.Method.invoke(Method.java:521)
04-12 …Run Code Online (Sandbox Code Playgroud)