Swift Xcode C++;cocoa应用程序中关于串行端口获取操作的代码不允许
我使用Swift Xcode C++;cocoa应用程序中关于串行端口获取操作的代码不允许,swift,xcode,macos,c++11,serial-port,Swift,Xcode,Macos,C++11,Serial Port,我使用C++项目在Xcode控制台中构建了一个代码,该项目在以下情况下运行良好: #包括“SerialPort.hpp” #包括“类型缩写.hpp” #包括 int main(int argc,const char*argv[]{ //*打开端口,然后连接到设备 const char devicePathStr[]=“/dev/tty.usbserial-A104RXG4”; 常数int波特率=9600; int sfd=打开并配置串行端口(devicePathStr,波特率); 如果(sfd
C++
项目在Xcode
控制台中构建了一个代码,该项目在以下情况下运行良好:
#包括“SerialPort.hpp”
#包括“类型缩写.hpp”
#包括
int main(int argc,const char*argv[]{
//*打开端口,然后连接到设备
const char devicePathStr[]=“/dev/tty.usbserial-A104RXG4”;
常数int波特率=9600;
int sfd=打开并配置串行端口(devicePathStr,波特率);
如果(sfd<0){
如果(sfd==-1){
printf(“无法连接到串行端口。\n”);
}
else{//sfd==-2
printf(“设置串行端口属性时出错。\n”);
}
返回0;
}
//*使用readSerialData读取(字符*字节,大小\u t长度)
//*使用writeSerialData写入(常量字符*字节,大小\u t长度)
//*记住在必要时刷新潜在的缓冲数据
//*完成后关闭串行端口
常量字符dataToWrite[]=“abcd”;
char-databuffer[1024];
而(1){
readSerialData(databuffer,4);
睡眠(2);
writeSerialData(数据缓冲区,4);
睡眠(2);
}
printf(“结束。\n”);
返回0;
}
在这个构建之后,我尝试使用下面的C++
wrappers将它迁移到我的Xcode
cocoa应用程序
我非常确定我的包装器
可以很好地用于测试C++
代码。这意味着,我可以从我的ViewController.swift
调用C++
函数
但有一件奇怪的事情发生了。我无法使用以下代码打开连接:
sfd = open(portPath, (O_RDWR | O_NOCTTY | O_NDELAY));
if (sfd == -1) {
printf("Unable to open serial port: %s at baud rate: %d\n", portPath, baudRate);
printf("%s", std::strerror(errno));
return sfd;
}
返回以下错误消息:
Unable to open serial port: /dev/tty.usbserial-A104RXG4 at baud rate: 9600
Operation not permitted
我已尝试更改应用程序沙箱配置
,设置我的系统首选项
以授予对我的应用程序
的访问权限,并且禁用了我的无根
。(csrutil
使用command+R
禁用)
但问题依然存在:
&
我想问:1.为什么我在
Xcode C++
项目上的代码运行良好,但在Xcode
上的swift's cocoa
应用程序上失败?2.如何解决
“不允许操作”
问题
我的
Xcode
版本是11.3.1
,Mac OS
是10.14.6 Mojave
我自己想出来的
它的应用程序沙盒困扰着我。
你所需要做的就是关闭沙盒
通过单击鼠标点上的X将其禁用。
如果您想重新添加,只需单击+功能并将其重新打开
参考:不要关闭沙盒,而是添加异常参考-