首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用IOKit - Swift搜索串口

用IOKit - Swift搜索串口
EN

Stack Overflow用户
提问于 2014-08-15 01:55:38
回答 1查看 4.9K关注 0票数 1

我正在努力理解IOKit,以及它如何允许我在Swift程序中访问串口。

我目前正在处理的课程如下:

代码语言:javascript
复制
import Foundation

import Cocoa

import IOKit.serial.IOSerialKeys



class Serial {

    init() {
    }

    @IBOutlet var serialListPullDown : NSPopUpButton!

    func refreshSerialList(defaultprompt: String) {


        // remove everything from the pull down list
        serialListPullDown?.removeAllItems()

        // ask for all the serial ports
        IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching(kIOSerialBSDServiceValue), io_iterator_t)

    }
}

根据我所读到的,我认为我已经正确地设置了IOServiceMatchingServices,但是我得到了一些错误,例如“预期成员名或类型名称后的构造函数调用”和"'o_iterator_t.Type‘不能转换为'UnsafeMutualPointer'“。

这是什么意思?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-15 03:53:34

这里有几个不同的问题--让我们先把你的进口品整理一下。看起来你需要这两个:

代码语言:javascript
复制
import IOKit
import IOKit.serial

对于参数,如果将它们定义为局部变量,将更容易查看我们正在处理的内容,如下所示:

代码语言:javascript
复制
// this one's easy, just grabbing a constant from IOKit.serial
let masterPort: mach_port_t = kIOMasterPortDefault
// here we get back an Unmanaged<CFMutableDictionary> and need to convert it to
// a CFDictionary using takeRetainedValue()
let classesToMatch: CFDictionary = IOServiceMatching(kIOSerialBSDServiceValue).takeRetainedValue()
// the iterator that will contain the results of IOServiceGetMatchingServices
var matchingServices: io_iterator_t = 0

最后,调用该方法:

代码语言:javascript
复制
// note that the last parameter is an UnsafeMutablePointer<io_iterator_t>
// so we need to prefix matchingServices with an ampersand (&)
let kernResult = IOServiceGetMatchingServices(masterPort, classesToMatch, &matchingServices)
if kernResult == KERN_SUCCESS {
    // success
} else {
    // error
}

这感觉非常接近斯威夫特现在可以处理的边缘--在深入之前,一定要阅读这两页:

最后,确保可以进入转换后的IOKit框架的Swift声明。有很多有用的注释,您可以看到哪些参数和返回值是非托管的或指针(因为我认为这个框架的正式文档还没有更新)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25320213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档