【问题标题】:How can i communicate with an HID USB device in delphi [closed]我如何在delphi中与HID USB设备通信[关闭]
【发布时间】:2011-11-21 16:58:23
【问题描述】:

我已经研究这个问题一段时间了,但我似乎无法正确解决这个问题。我有一个我想在 delphi 中制作的软件的 C++ 版本,但我无法让它在 delphi 中工作。我需要某种教程或指南,向我展示如何连接、读取和写入数据到 HID USB 设备。

【问题讨论】:

  • 票数接近可能意味着您的问题缺乏足够的细节来直接回答。我们是否应该通过魔术知道您的 C++ 程序做了什么?为什么不拼出来呢?
  • 我希望我能投票不关闭。请不要。这是一个关于与不常见设备对话的方法的一般性问题。具体可以稍后来。我,我也想知道这个高水平的答案。

标签: delphi usb hid


【解决方案1】:

有关示例,请参阅Jan Axelson's USB page。他还写了一本书。 USB Complete.

另见Robert Marquardt's HID controller suite for Delphi

如果您使用的是 Delphi 2009 或更新版本,请点击 SO 问题答案中给出的链接:using-hidcontroller-on-delphi-2010

【讨论】:

  • 每次看到有人使用 Robert 的遗产时,我都会微笑 :) ... +1 指出他的组件。
  • 谢谢,这个组件,有没有使用指南。
  • HID 组件中有演示,说明了与 USB 设备的基本通信以及帮助文件。在 Jan Axelson 的 HID 页面上,还有一些由 Robert Marquardt 编写的 Delphi 示例。
  • OK 我浏览了帮助和演示,我已经能够获得供应商名称和产品名称。如何写 Buffer[1] = 0x80;
  • Robert Marquardt 的软宝石链接已损坏。现在:soft-gems.net/index.php/controls/…
【解决方案2】:

您可以使用QueryDosDevice 获取完整的设备名称。在插入设备之前和之后列出所有条目,并查看列表中出现的新条目。 (我发现大多数 HID 设备在列表中出现了两次,还没有找到原因)。该代码将包含“USB”“VID”“PID”和一个 GUID。

您可以将此代码与CreateFile 一起使用,前提是您将其前缀为“\\?\”并将此句柄用作串行端口(我个人更喜欢使用THandleStream)。代码可能如下所示:

var
  h:THandle;
begin
  h:=CreateFile(
    PChar('\\?\'+MyPortName),
    GENERIC_WRITE or GENERIC_READ,FILE_SHARE_WRITE or FILE_SHARE_READ,
    nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if h=INVALID_HANDLE_VALUE then RaiseLastOSError;
  MyPort:=THandleStream.Create(h);
  SetCommTimeouts(h,MyFCommTimeouts);

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 2014-04-18
    • 2023-04-07
    • 2021-01-24
    • 2012-07-26
    • 2012-04-28
    • 2012-12-19
    • 1970-01-01
    相关资源
    最近更新 更多