Arduinos IDE串行监视器工作,而XCode popen()不工作。

Arduinos IDE串行监视器工作,而XCode popen()不工作。,xcode,macos,arduino,popen,Xcode,Macos,Arduino,Popen,我正试图通过popen()函数与我的Arduino通信。我用XCode编写了一个简单的Mac应用程序: - (IBAction)ButtonPressed:(id)sender { popen("echo hello world > /dev/tty.usbmodem1411", "r"); } 这是Arduino代码: int redPin = 8; int greenPin = 9; int bluePin = 10; int inByte = 0; // f

我正试图通过popen()函数与我的Arduino通信。我用XCode编写了一个简单的Mac应用程序:

    - (IBAction)ButtonPressed:(id)sender {

    popen("echo hello world > /dev/tty.usbmodem1411", "r");
}
这是Arduino代码:

int redPin = 8;
int greenPin = 9;
int bluePin = 10;

int inByte = 0;   // for incoming serial data

void setup()
{
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT); 
  Serial.begin(8000); 
}

void loop()
{

  if (Serial.available() > 0) {
    // get incoming byte:
    inByte = Serial.read();
    Serial.print(inByte);
    setColor(inByte,inByte,inByte);
    delay(1000);
    setColor(0,0,0);
  }
}

void setColor(int red, int green, int blue)
{
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}

现在,当我尝试使用Arduino串行监视器并在那里写一些乱七八糟的话时,我的LED灯亮得很好,我看到它正在工作。当我运行XCode程序时,按下按钮,什么也没发生。我设置了断点,并检查了代码行是否被执行。我仔细检查了串口,一切正常,但运气不好。它仍然不起作用。

基本上我通过使用IOKit/ioctl解决了这个问题。我仍然不确定为什么popen()不起作用,可能是因为Arduino IDE正在使用该端口,因此它不可用,但是IOKit的工作方式很有魅力。此外,它允许更多的控制和灵活性,您可以在开始之前搜索端口,并查看它们是否可用。如果有人遇到同样的问题,请检查。谢谢您的帮助。

您是否尝试过将
if
更改为
呢。还是一样-串行端口工作,而popen()不工作。您是否尝试过在命令行中使用
echo hello world>/dev/tty.usbmodem1411