2013-04-02 7 views
1

Serial과 Serial1을 동시에 사용할 수 있습니까? 나는 시리얼 모니터를 열면Arduino Leonardo의 시리얼 루프 문제

void setup() { 
    Serial.begin(9600); 
    while (!Serial);      // while not open, do nothing 
    Serial1.begin(9600); 
} 

void loop() { 
    while (Serial.available() > 0) {  // if at least one char is available 
    /* CODE */ 
    //Serial.write(Serial.read()); 
    } 

    while (Serial1.available() > 0) { 
    /* CODE */ 
    //Serial.write(Serial1.read()); 
    } 
} 

첫 번째 동안 잘 작동하지만 내가 모두있는 경우, 두 번째는 무한 루프에 인쇄 결과입니다. 이 문제를 어떻게 해결할 수 있습니까?

»»Arduino Leonardo 보드는 Serial1을 사용하여 RS232를 통해 핀 0 (RX) 및 1 (TX)에서 통신합니다. Serial은 USB CDC 통신용으로 예약되어 있습니다.

과 똑같은 Serial1을 사용할 수 있습니까? Serial1에서 어떤 종류의 신호가 읽습니까?

+0

while (! Serial1); – thejh

+0

이 해결되지 않았고 serial1이 루프를 계속합니다. – mafap

+0

하위 하나가 실제로'Serial.write'입니까? 'Serial1.write'가 아닌가요? – thejh

답변

0

여기서 추측 할 것이지만, 그 이유는 작성한 데이터를 소비하는 Serial1에 연결된 것이 아무것도 없다고 생각합니다. 따라서 코드가 write 호출에서 중단되었습니다.

이것이 사실인지 확인하려면 Serial1.write(Serial1.read()); (두 번째 루프에서)을 Serial.write(Serial1.read());으로 변경할 수 있습니다. 이것이 막히지 않는다면 내 추측이 맞을 것입니다.

http://arduino.cc/en/Guide/ArduinoLeonardo#toc6는로 Serial0가 무엇인지 말한다 :

이로 Serial0를 사용하는 하드웨어 시리얼 포트 (핀 0과 1, RX 및 TX)를 사용합니다. (자세한 내용은 직렬 참조 페이지를 참조하십시오.) 당신이 보드의 모서리에 볼 수있는 RX 및 TX 포트/0과 1 개 핀을 통해 통신 할 때

그래서,로 Serial0를 사용합니다.

+0

사실 Serial1에는 아무 것도 연결되어 있지 않습니다. 몇 가지 테스트를하기 위해 LED 또는 다른 것을 연결할 수 있습니까? – mafap