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