问题标签 [plug-and-play]

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 回答
1710 浏览

language-agnostic - 如何检测网络上的设备?

某些打印机包含一张 CD,它能够检测未分配 IP 地址或 LAN 中 IP 无效的设备。

我们正在开发一种设备,希望能够让用户以相同的方式操作:他们将设备连接到网络上,然后从客户端一个微型软件检测配置、启动向导,...

我怎样才能做到这一点?如何编写一些软件来检测网络上的设备并进行配置?有什么指导方针吗?

0 投票
2 回答
2217 浏览

ruby-on-rails - 如何在 Ruby on Rails 中拥有插件架构?

我必须在 Ruby on Rails 上建立一个社交网站。网站中的功能可能会不时更改;所以我们需要轻松添加/删除功能。此外,我们可能正在建立另一个社交网站。由于这些原因,我们正在考虑为 RoR 中的社交网站构建一个基本框架,该框架具有安装或卸载框架扩展的功能。

我以前在 Joomla 工作过!CMS 及其用于添加/删除扩展的架构是我所关注的。在 Joomla 中!安装通常有一个管理端,您可以从中添加/删除/自定义扩展。

我是 RoR 的新手,发现很难决定如何做到这一点。任何帮助将不胜感激。

0 投票
1 回答
449 浏览

windows - 用于检测/连接闪存驱动器插入的即插即用 API?

在插入即插即用闪存驱动器并被 Windows 检测到后,有没有办法提供对用户定义程序的调用?

0 投票
1 回答
548 浏览

file - 在插入式 USB 上打开文件

当您将 USB 插入笔记本电脑时,谁能告诉我如何打开 .jar 文件?写一个批处理文件?或者我需要什么?

我读过它只在 Windows 上可用,所以在 MAC 上是不可能的。但是有没有办法在mac上打开一个窗口,然后说“点击这里开始”?

所以这个问题有两个部分:

  1. 在 windows 上插入 USB 时如何打开文件?
  2. 如果它在 mac 上不可用 - 我还有什么其他可能性?

谢谢!

0 投票
9 回答
58907 浏览

windows - 设备被误检测为串行鼠标

我正在开发一种通过(虚拟)串行端口与 PC 通信的设备。问题是我们发送的数据偶尔会被 Windows 错误地识别为总线鼠标,之后加载“Microsoft Serial Ballpoint”驱动程序,鼠标指针开始在屏幕上跳跃并随机点击。

一些谷歌搜索表明这是串行设备的一个古老而众所周知的问题,通常的解决方法是一些注册表黑客来禁用有问题的驱动程序。然而,我们的用户有很多要求,我宁愿不要让我们的应用程序弄乱用户的注册表。尤其是当修复依赖于 Windows 版本并且用户很可能正在使用总线鼠标时。

相反,我想通过更改我们的协议以不发送任何可能使我们被误认为鼠标的数据来避免这个问题。唯一的问题是我不太确定要避免哪些模式。显然,微软的鼠标协议由四个字节的数据包组成,其中第一个的 MSB 已设置,后三个的 MSB 是明确的。

只发送 7 位 ASCII 就足够了吗?我还需要担心被检测为其他设备吗?

0 投票
1 回答
1425 浏览

c# - 如何检测音频设备何时插入和拔出?

如何使用 C# 检测音频设备何时插入和拔出?

0 投票
2 回答
2349 浏览

dos - 通过即插即用 BIOS 分配资源

即插即用 BIOS 规范说,如果您有 PnP BIOS,它可以配置硬件。

这意味着您的 BIOS 读取所有设备的资源需求并配置它们(为它们分配总线资源)。

PnP 是否总是为嵌入/集成在主板上的设备分配资源(即分配 I/O 或内存地址和中断)?

PnP BIOS(即存在 $PnP 结构)是否总是将资源(I/O 和内存地址)分配给主板上存在的所有设备(即嵌入式/集成在主板上)以及PCI 扩展卡上。

虽然 BIOS 可能不知道如何“配置”非嵌入式设备(即未嵌入主板上的设备),并且只会配置嵌入式/集成在主板上的设备,但它“应该”分配地址(I/O 和内存)和 irq 以避免在使用像 DOS 这样的非 PnP 操作系统时发生冲突。

我的问题是:

PnP BIOS 是否必须在 POST 期间(即在加载和将控制权转移到 OS bootlader 之前)将 I/O、内存地址和 irq 分配给PCI 扩展卡设备?所有 PnP BIOS 都是这样吗?

假设 [Plug-and-Play OS] 选项设置为No。即我们告诉 BIOS 我们没有 PnP 操作系统,而是像 DOS 这样的非 PnP 操作系统。

某些 BIOS 没有此选项。他们是否总是将资源分配给所有设备(即嵌入式设备和扩展槽上的设备)?

2012-08-01 更新:

PnP BIOS 规范 v1a 标题为“系统 BIOS POST 要求”的第 2.1 节说:

(我只提到了与这篇文章相关的 3 点。(*)标记的信息是对标准声明的解释。)

为了实现即插即用的目标,系统 BIOS POST负责实现下列要求:

  1. 系统 BIOS已知的所有“静态”设备的配置:

    至少包括系统板设备。它“可以”还包括“即插即用 ISA 卡”位于 EISA、ISA、PCI或任何其他可用静态总线架构上的设备。

    *实际上,上述声明表明,设备“嵌入/集成”在系统板上的任何静态总线(例如,PCI、ISA 或 EISA)上。)“必须”由 BIOS 配置,因为 *BIOS 知道“所有嵌入在主板上的设备,作为设计部分。* 系统 BIOS 程序员必须结合规定将嵌入主板上的设备配置为系统设计部分。

    这是否还包括“安装在 PCI/ISA/EISA 卡插槽中的卡”?

  2. BIOS POST 资源仲裁:系统 BIOS 现在必须知道系统资源的使用情况。使用通过运行时服务提供的信息(将在后面的部分中描述)以及系统 BIOS 已知的资源信息,可以避免关键的资源冲突。“在禁用冲突设备的情况下加载操作系统比导致资源冲突和可能的系统故障要好。”

    *这似乎适用于嵌入/集成在主板或 ISA/EISA 扩展卡插槽上的 ISA/EISA 设备。 由于 PCI 设备的资源在 I/O(或内存)地址分配方面不会发生冲突(因为 PCI 设备的地址不是硬连线的,因此在BIOS 的“手中”分配不冲突的地址。)和 irq 分配(因为 PCI 中断在设计上是可共享的。),因此这意味着“所有”PCI 设备(嵌入式或非嵌入式)将被初始化/分配内存或 I/O 地址和 irq 分配。

  3. 支持即插即用和非即插即用操作系统:即插即用系统 BIOS POST “必须”配置系统以“既”即插即用感知,“以及”非即插即用操作system.* 在非即插即用环境中,“要么”系统 BIOS ,“要么适当的系统软件(设备驱动程序),“必须”配置“所有”设备(即插即用 ISA 卡、PCI 设备等)。这将允许所有环境“完全像在标准 PC 兼容系统上那样加载”。但是,在即插即用环境中,系统 BIOS 现在可以协助操作系统执行功能,例如系统板设备的运行时配置和系统板设备发生变化时的事件识别。

*规范中的所有这 3 条语句似乎都表明,如果要启动非 PnP 操作系统(例如 DOS),那么系统 BIOS 必须“必须”配置(或者,至少分配地址和 irq)“全部” PCI 设备,无论是否嵌入/集成在主板(主板)上。对于 ISA 和 EISA 设备,BIOS“不得”为那些 ISA/EISA 设备(无论是嵌入式还是非嵌入式)启用/分配资源,这将导致资源分配冲突。

从规范的上述陈述中得出结论是否正确。那:“如果 BIOS 必须启动非 PnP 操作系统,它必须启用(即启用即分配资源)系统中的‘每个’PCI 设备(无论是嵌入在主板上还是在 PCI 扩展卡插槽上),以便它们可用供操作系统和应用程序使用”?

2012-08-04 更新:

查看Linux Device Drivers 3rd ed 的第 12 章。. 作者在很多地方明确指出,I/O 或内存地址和 IRQ 分配在 linux 内核开始执行时已经由 bios 完成,linux 内核可以根据需要定制分配。

可能是另一个提到我们想要达到的目标的参考。

0 投票
2 回答
5566 浏览

bios - 定位 PCI 并口的基地址

我正在为 DOS 开发一个应用程序。我需要通过并行端口进行通信。

目前我被困在如何确定哪个 PCI 功能的 BAR(基地址寄存器)包含该并行端口的基地址(即数据端口地址)?:?

准确地说,是否存在特定 BAR 将始终包含该并行端口的基地址的行业约定或标准或事实上的标准?

如果不是,那么我如何确定该 PCI 并行端口的基地址(无论是在 pci 扩展卡上还是集成在主板上)?

实际上我关心的是PCI 扩展卡上的并行端口。AFAIK,BIOS 不知道这些。BIOS 只会将资源分配给 pci 卡,仅此而已。因此,BDA 中可能没有此类并行端口的条目,因为 BIOS 制造商只知道他们的主板拥有的所有设备。

例如,在 PC 上,我在 pci 扩展卡上安装了 4 个并行端口,并且在主板上集成了 1 个并行端口。现在其他 2 个并行端口的条目在哪里?

这就是为什么 BIOS 似乎只包含集成在芯片组或主板上的三个并行端口的条目。所以,我认为我们必须读取 PCI BAR 以获取安装在主板上的 pci 扩展卡上的任何并行端口的基地址。

谢谢

0 投票
3 回答
13507 浏览

c# - 如何识别插入 USB 插槽的设备?

我想检测用户何时插入或移除 USB 声卡。当这种情况发生时,我已经设法真正捕捉到事件,但我不知道刚刚插入了什么。

我尝试了一种基于这个问题的方法:

虽然我通过 EventArrived 事件获得通知,但我不知道如何确定刚刚插入的设备的实际名称。我已经检查了每个属性,但无法从中得出正面或反面。

我还尝试了一个不同的查询:

但也无济于事。有没有办法找到插入或移除的设备的名称。

最重要的是,我想知道 USB 声卡何时插入或从系统中移除。它应该可以在 Windows 7 和 Vista 上运行(尽管我只会满足于 Win7)。

编辑:根据获胜提交者的建议,我创建了一个包含所有功能的完整解决方案。

0 投票
1 回答
1586 浏览

c# - c#接收即插即用事件

我想知道是否有关于如何处理 Windows 中使用的即插即用事件消息的示例和/或文档。理想情况下,我想要完成的是能够让我的应用程序检测到已连接到机器的设备,而无需使用计时器,该计时器在滴答时将轮询所有 COM 端口。我发现这样做效率极低,并且会使我的应用程序的 CPU 使用率增加十倍。我的应用程序使用 C#,目前正在利用 .NET 4.0,我们希望在下个月内升级到 .NET 4.5。所以我正在寻找一些关于如何做到这一点的文献。由于这是我对支持即插即用设备的第一次研究,请对批评保持温和。

编辑:此应用程序也将在 Windows 7 和 Windows XP 上运行