【问题标题】:Using HIDController on Delphi 2010在 Delphi 2010 上使用 HIDController
【发布时间】:2011-09-10 09:57:35
【问题描述】:

我有一个在 delphi 7 上使用 HID Controller 的应用程序,但现在我需要在 Delphi 2010 上使用它(许可证问题),但我在这个 delphi 2010 中发现了这个 HIDController 的一些兼容性问题。这个库是绝地计划。

我注意到在 Delphi 2010 和 Win7 中使用这个库(JvHidDeviceController 组件)的人提出了一些问题。也许遇到同样问题的人可以帮助我。我现在有可能我只是想不通。

【问题讨论】:

  • 您在 Delphi 2010 中使用的版本与在 7 中使用的版本相同吗?它们可能不兼容。
  • 什么是“一些兼容性问题”?我们无法从这里看到您的屏幕,您也没有提出任何可以在这里回答的问题。你提到“同样的问题”,但由于你没有说问题是什么,所以没有人能说他们是否面临同样的问题。您需要提供更多信息,然后才能有人帮助您。
  • 我只使用在 Delphi 7 和 2010..XE 中也可以使用的单元“JvHidControllerClass”。它位于我编译并安装到新 IDE 中的 HidController.dpk 包中。它的自述文件显示“1.0.34 引入了几个 Windows 版本相关的方法”。所以这应该给你版本。
  • Brian,我用的是和你一样的版本。我可以在 Delhpi 2010 上安装组件,但是当我尝试使用“JvHidDeviceController”编译项目时,它会给出错误:“设备无法打开”。在网上搜索时,我发现有些人在谈论 Delphi 2010 不兼容。现在我不知道真正的问题是什么......
  • @Nathalia:那么我就处于困境之中,我只是用它来获取一个已知为 HID 设备的温度探头。您是否尝试过 JvHid 附带的示例代码?我敢肯定,测试打开鼠标什么的应该很容易。还要检查您是否可以看到带有断点的“插入”和“删除”事件。这可能会指出您处理事件的方式存在问题。

标签: delphi delphi-2010 hid


【解决方案1】:

这是 D2010 的工作代码: 使用来自本站的包:HIDController DPK

并将 JvHidControllerClass.pas 替换为来自该站点的版本:Modified source file

主要问题在于字符串和 AnsiString 声明,所以这个文件解决了这个不兼容问题。

附:使用帖子中文件的zipped version

【讨论】:

    【解决方案2】:

    显然“设备无法打开”问题(​​Natalia)也与 unicode 字符有关。答案1中提到的新版HIDController并没有解决这个问题。

    解决方案: 将“PAnsiChar”中TJvHIDPnPInfo.Create的最后一个参数(单位JvHIDController.pas)的类型改为“PChar”。不要忘记更改“调用”例程的类型转换。

    附言答案 1 中“修改后的源文件”和“压缩版本”的链接已失效。

    【讨论】:

      【解决方案3】:

      在 Delphi 2010 中,所有声明为字符串的变量都是 unicode 类型(宽字符串)。将组件从早期版本(Delphi 7)移植到较新版本时,始终检查所有声明为字符串和 pchar 的变量。在较新的版本中,需要将此变量声明为 AnsiString 和 PAnsyChar,这很可能会解决您的问题。当然,您必须确保调用任何 dll 函数以调用正确的 _W(调用具有宽字符串参数的函数时)或使用 AnsiString 时的 _A。但是要提到的另一件事是检查 HID 的文档以查看接受哪些类型的参数并在较新的 delphi 版本中正确使用它们。我从头开始编写了我的 hid 控制器(类似的),当时还没有,当然当我将它移植到 Delphi2010 时,不同的字符串类型是我的主要问题。当我编写 WinUsbController 以使用 WinUSB 驱动程序时,情况类似。必须阅读手册 (MSDN)、签入标题 (.h) 并阅读 delphi 帮助(用于字符串)以匹配正确的数据类型。

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        • 2011-11-10
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-02-23
        相关资源
        最近更新 更多