Как я могу получить доступ к второй, если оценка после выбора первой, если оценка без перезапуска сериала? - PullRequest
0 голосов
/ 05 ноября 2019

Я написал программу для отправки ИК-сигнала на мой аудиоплеер, SendChannelUpCode и SendChannelUpCodeONE отвечают за отправку двух типов ИК-сигналов: один для воспроизведения компакт-диска, а другой для режима AUX, если я открываю серийный номер и если я печатаю 1Режим CD будет работать, но я не могу набрать «2» снова и отправить другой сигнал, который я должен выключить, затем на последовательном порту, а затем нажать 2 для запуска, любые предложения о том, как не перезапускать последовательный порт каждый раз, чтобы переключаться между режимами?

Я пытался использовать return для функции SendChannelUpCode и пытался поместить exit (1) после того, как я вызвал эту функцию, но у меня все еще возникла та же проблема, и я не могу использовать функции прерывания, потому что в операторе IF ошибка

void setup(){
pinMode(IRledPin, OUTPUT);  

Serial.begin(9600);

while (!Serial);

Serial.println("Input 1 to Turn CD on  and 2 to turn AUX mode");

}

void loop() {

if (Serial.available())

{

int state = Serial.parseInt();

if (state == 1)

{


Serial.println("Command completed, CD MODE ON");
delay(100);
SendChannelUpCode();


}

if (state == 2)

{

Serial.println("Command completed, AUX MODE ON");
delay(100);
SendChannelUpCodeONE();


}

}

}


 void pulseIR(long microsecs) {


   cli();  
   while (microsecs > 0) {
    digitalWrite(IRledPin, HIGH); 
    delayMicroseconds(10);   
    digitalWrite(IRledPin, LOW);   
    delayMicroseconds(10);        
    microsecs -= 26;
   }
 }

void SendChannelUpCode() {  


     delayMicroseconds(28136  );      //Time off (LEFT column)
   pulseIR(9280  );

   delayMicroseconds(4600 );
   pulseIR(600  );
 } 


void SendChannelUpCodeONE() {  

       delayMicroseconds(28136  );      //Time off (LEFT column)
   pulseIR(9280  );

   delayMicroseconds(4600 );
   pulseIR(600  );
} 
...