导入ORSSerialPort, 实现其delegate方法, 并设置代理
-(void)serialPort:(ORSSerialPort *)serialPort didEncounterError:(NSError *)error{
NSLog(@"error:%@",error);
}
在操作 [serialPort open] 时, 系统报出来一下错误, 导致打开serial port 失败
Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" UserInfo={NSFilePath=/dev/cu.usbserial-Fixture1, NSLocalizedDescription=Operation not permitted}
原因及解决办法:
1. 权限问题,
原因: 电脑启用了SIP(System Integrity Protection),增加了rootless机制
在terminal中输入csrutil status, 检查SIP状态, 当显示enabled时, 表示需要修改权限
$ csrutil status
System Integrity Protection status: enabled.
解决办法:
a). 重启电脑,屏幕暗下后立马按住 command+R,进入保护模式, 开启terminal执行csrutil disable
b). reboot重启电脑
c). 启动电脑后, 在terminal中输入csrutil status, 检查状态, 显示如下状态表示修改成功.
$ csrutil status
System Integrity Protection status: disabled.
d). 如果想要再次启动SIP, 只需再次进入保护模式后, 终端中执行csrutil enable, 其它过程相同
2. app软件权限赋予问题
原因: 未赋予串口硬件访问权限
解决办法:
项目名称.entitlements 文件手动加上如下键值对
key: com.apple.security.device.serial == type:Boolean == value: YES
如下图所示:
经验证, 第二种方法有效.
更多的Entitlement key权限设置, 可查阅官方文档Entitlement Key Reference