如何在Mac环境下使用带有objective-c的USB / HID端口

时间:2011-10-07 07:30:52

标签: objective-c c usb osx-snow-leopard hid

我尝试在Snow Leopard中实现一个应用程序,从USB / HID设备读取数据。在我的应用程序中,我尝试了以下步骤:

  1. IOHIDManagerCreate()
  2. CreateDeviceMatchingDictionary()
  3. IOHIDManagerSetDeviceMatching()
  4. IOHIDManagerOpen()
  5. IOHIDManagerCopyDevices()
  6. 为设备创建参考(IOHIDDeviceRef)
  7. 基于IOHIDDeviceRef i获取设备详细信息,例如(Device ProductIDKey,Device VendorIDKey,Device ProductKey,Device Serial NumberKey,Device VersionNumberKey等)
  8. IOHIDDeviceOpen(),即:使用IOHIDDeviceRef打开设备;
  9. IOHIDDeviceCopyMatchingElements();即从设备复制匹配元素;
  10. 创建一个Reference元素(即IOHIDElementRef);
  11. 使用IOHIDElementRef检索设备使用情况,Device Cocookie,Device UsagePage等。 到目前为止我的应用程序工作正常。
  12. 我的怀疑是

    1. 如何从端点1读取数据,我的设备是只有一个端点的专用设备(中断无同步数据端点)?
    2. 他们的任何管道是否与终点1(HID设备)相关联?
    3. 他们的任何ReadPipe和WritePipe功能是否在基于HIDManager的应用程序中?
    4. 是否可以使用IOHIDDeviceSetReoprtWithCallback()从USB / HID检索数据?
    5. 每件事都基于此链接: http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html#//apple_ref/doc/uid/TP40000970-CH214-SW7 ......

      非常感谢你的帮助..

1 个答案:

答案 0 :(得分:1)

您正在尝试将HID功能与非HID设备配合使用。 HID是人机接口设备。任何HID设备必须符合“HID的设备类定义”。

我怀疑,您的设备不符合此规范。

因此,您应该使用其他操作系统界面来使用您的设备。我建议使用libusb。这是一个跨平台的库,用于在低级别上使用USB设备。它允许您直接读/写您的终端。