macOS Swift4 ORSSerialPort 串口开发

原作于1年前, 用USB转串口连接TFmini(北醒光子的一款Lidar)和macOS. 基于Xcode 9, Swift 4, ORSSerialPort开发.


安装USB转串口驱动

常用的USB转串口芯片有 CH341, CP210X, PL2303, FT232等, 点击相应的名称下载macOS驱动并安装. 我这里使用的是CP2104. 安装完成后连接TFmini到macOS:
在这里插入图片描述

安装USB转串口驱动后, 可以在Release中直接下载 .dmg 安装使用. 如果想知道工程怎么构建的, 可以往下读.


新建Xcode9/Swift4工程

新建Cocoa App工程, 命名为TFmini, 不勾选Storyboard.

关闭工程, 打开macOS终端, 切换到TFmini Xcode工程目录, 创建Podfile, 然后用文本编辑打开:

touch Podfile
open -a TextEdit Podfile

填入以下代码:

target "TFmini"
pod "ORSSerialPort"

其中target后面是工程名, 保存关闭.

使用Cocoapods导入:

pod install

完成后关闭终端, 打开工程目录下的 .xcworkspace 文件. 点击顶部的黄色小叹号, 更新到推荐的设置.

手动添加OC到Swift的桥接文件: TFmini-Bridging-Header.h, 其中TFmini是工程名, 内容为:

#import "ORSSerialPort.h"
#import "ORSSerialPortManager.h"

依次点击 工程名 -> Targets下的工程名 -> Build Setting -> Swift Compiler -General -> Objective-C Bridging Header, 双击右侧空白处, 填入以下代码后回车:

$(PROJECT_DIR)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h

如图所示:

在这里插入图片描述

新建一个TFmini类, 继承于NSObject.

然后在XIB文件中加入一个 Object, 在Identity Inspector中的Class, 选择刚刚创建的TFmini类, 这样, 就可以关联对象到TFmini类中了:

在这里插入图片描述

拖Label, Pop Up Button, Push Button, TextView各种控件到Window的View中, 给控件添加一些约束, 并设置Window的最小尺寸为480*360:

在这里插入图片描述

关联Open按钮和TextView接收框到TFmini中, 关联Open按钮的点击事件, 注意 NSTextView, 需要连点3下才能选中, 别拖成ScrollView或者ClipView了:

    @IBOutlet weak var openCloseButton: NSButton!
    @IBOutlet var receivedDataTextView: NSTextView!
    
    @IBAction func openOrClosePort(_ sender: Any) {
    }

把其余的代码添加进来, 主要是 ORSSerialPortDelegate, NSUserNotificationCenterDelegate的一些实现.
变量前的 @objc dynamic 是后面的Binding必须的.
TFmini的数据解析在 func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) 中, 数据接收超过10000帧, 会清空缓存.
参考工程源文件.

接下来就是Binding了.

串口弹出按钮的Binding:

在这里插入图片描述

波特率弹出按钮的Binding:

在这里插入图片描述

打开关闭按钮的Binding, 保证没有串口时不可被选中:

在这里插入图片描述

设置完毕, 运行, 串口号选择SLAB_USBtoUART, 波特率选择115200, open报错:

SerialPort SLAB_USBtoUART encountered an error: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" UserInfo={NSFilePath=/dev/cu.SLAB_USBtoUART, NSLocalizedDescription=Operation not permitted}

修改 工程名.entitlements, 增加 com.apple.security.device.serial, 设为YES, 如果想要应用上传到AppStore, 这个是必须的:

在这里插入图片描述

确保Team有效:

在这里插入图片描述

依次点击工程名 -> Targets下的工程名 -> Capbilities -> Keychain Sharing -> 打开开关.

再次运行, 就可以了:

在这里插入图片描述
左边是原始的9字节十六进制数, 右边是计算出来的实际距离值, 单位cm.

Github链接

https://github.com/TFmini/TFmini-macOS

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值