2013-10-04 2 views
0

popen() 함수를 통해 내 Arduino와 통신하려고합니다. 나는 엑스 코드에 간단한 맥 앱을 썼다 :Arduinos IDE 직렬 모니터는 XCode popen()이 작동하지 않는 동안 작동합니다.

- (IBAction)ButtonPressed:(id)sender { 

    popen("echo hello world > /dev/tty.usbmodem1411", "r"); 
} 

을 그리고 여기에 아두 이노 코드입니다 : 내가 아두 이노 시리얼 모니터를 사용하려고 벌금이 내 LED의 빛을 약간 횡설수설을 쓸 때, 이제

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); 
} 

나는 그것이 작동하고있는 것을 본다. 내 Xcode 프로그램을 실행할 때 버튼을 누르면 아무 일도 일어나지 않습니다. 나는 중단 점을 설정했고 코드 줄이 실행되는지 확인했습니다. 나는 직렬 포트를 두 번 확인했는데 괜찮습니다.하지만 운이 없습니다. 여전히 작동하지 않습니다.

+0

'if'를'while'으로 변경해 보셨습니까? – ladislas

+0

나는 그것을 시도했다, 도움이되지 않았다. 여전히 똑같은 - 직렬 포트가 popen()이 작동하는 동안 작동합니다. –

+0

커맨드 라인에서'echo hello world> /dev/tty.usbmodem1411'을 시도해 보셨습니까? – ladislas

답변

0

기본적으로 IOKit/ioctl을 사용하여이 문제를 해결했습니다. Arduino IDE가 포트를 사용하고 있었기 때문에 popen()이 작동하지 않는 이유는 아직 모르지만 따라서 IOKit는 매력처럼 작동합니다. 또한 더 많은 제어와 유연성을 제공하므로 시작하기 전에 실제로 포트를 검색하여 포트를 사용할 수 있는지 확인할 수 있습니다. 같은 문제가있는 사람이 있다면 http://playground.arduino.cc/Interfacing/Cocoa#IOKit을 확인하십시오. 모든 도움에 감사드립니다.