Mac OS -- ORSSerialPort打开serialPort时提示错误Operation not permitted

导入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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章