繁体   English   中英

如何快速编写HID函数Handle_DeviceMatchingCallback?

[英]How to write HID function Handle_DeviceMatchingCallback in swift?

我有一个关于HID的程序。 但这是用Objective-C编写的。 这是一个项目,我的朋友们只知道敏捷。 所以我想将其转换为swift,但我不知道如何编写该函数。

对象代码:

 /* Creating The HID Manager */
 IOHIDManagerRef manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
 /* Dictionary Matching - All the devices */
 IOHIDManagerSetDeviceMatching(manager,NULL);
 /* Connected and Disconnected Call Backs */
 IOHIDManagerRegisterDeviceMatchingCallback(manager,  &Handle_DeviceMatchingCallback , NULL);
 IOHIDManagerRegisterDeviceRemovalCallback(manager, &Handle_DeviceRemovalCallback,NULL);

回调函数为:

static void Handle_DeviceMatchingCallback(void *inContext,
                                          IOReturn inResult,
                                          void *inSender,
                                          IOHIDDeviceRef inIOHIDDeviceRef)
{
    printf("Connected\n");



}


static void Handle_DeviceRemovalCallback(void *inContext,
                                         IOReturn inResult,
                                         void *inSender,
                                         IOHIDDeviceRef inIOHIDDeviceRef)
{
    printf("Disconnected\n");
}

很快

我写了Handle_DeviceMatchingCallback()

func Handle_DeviceMatchingCallback(inContext: UnsafeMutableRawPointer!, inResult: IOReturn, inSender: UnsafeMutableRawPointer!, inIOHIDDeviceRef: IOHIDDevice)
{
    print("Connected")
}

但是我不能将函数传递给IOHIDManagerRegisterDeviceMatchingCallback()

怎么做?

处理您的情况的一种方法是将回调设为闭包:

let Handle_DeviceMatchingCallback: IOHIDDeviceCallback = {context, result, sender, device in
    print("Connected")
}
let Handle_DeviceRemovalCallback: IOHIDDeviceCallback = {context, result, sender, device in
    print("Disconnected")
}

否则,您需要声明具有与IOHIDDeviceCallback定义的签名完全相同的签名的回调函数。

 typealias IOHIDDeviceCallback = (UnsafeMutableRawPointer?, IOReturn, UnsafeMutableRawPointer?, IOHIDDevice) -> Void 

(摘自Xcode的快速帮助。)

func Handle_DeviceMatchingCallback(_ context: UnsafeMutableRawPointer?, _ result: IOReturn, _ sender: UnsafeMutableRawPointer?, _ device: IOHIDDevice) {
    print("Connected")
}
func Handle_DeviceRemovalCallback(_ context: UnsafeMutableRawPointer?, _ result: IOReturn, _ sender: UnsafeMutableRawPointer?, _ device: IOHIDDevice) {
    print("Disconnected")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM