如何在delphi中与HID USB设备通信

时间:2011-11-21 16:58:24

标签: delphi usb hid

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

2 个答案:

答案 0 :(得分:6)

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

另见Robert Marquardt's HID controller suite for Delphi

如果您使用的是Delphi 2009或更新版本,请按照回答中提供的链接进行搜索:using-hidcontroller-on-delphi-2010

答案 1 :(得分:3)

您可以使用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);