默认标签显然在switch语句中不起作用

问题描述 投票:-1回答:1

我已经看到了有关此问题的相关帖子的一些答案,但并不能完全解决我的问题。这是我的代码:

#include <VirtualWire.h>
uint8_t RFbuff[VW_MAX_MESSAGE_LEN];   
uint8_t RFbuflen = VW_MAX_MESSAGE_LEN;
const int REMOTE = 0; 
String remoteScriptName(){
  String scriptName;
  switch(REMOTE){

    case 1:
      vw_get_message(RFbuff, &RFbuflen);
      String RFSTRBUFF = RFbuff;
      scriptName = RFSTRBUFF; 
      delay(1200);
      break;
    default:
      scriptName = "script"; 
      delay(500); 
    }
  return(scriptName);
}

void setup() {
  pinMode(LED_BUILTIN, HIGH);
  switch(REMOTE){
    case 1:
      vw_set_rx_pin(8);
      vw_setup(2000);
      vw_rx_start();
      break; 
    default: 
      digitalWrite(LED_BUILTIN, LOW); 
      delay(500);
      digitalWrite(LED_BUILTIN, HIGH);
      delay(500);
      digitalWrite(LED_BUILTIN, LOW); 
      delay(500);
      digitalWrite(LED_BUILTIN, HIGH);
  }
}

void loop(){}

remoteScriptName()switch(REMOTE)功能中,有case:default:。当我将代码上传到Arduino micro时,它会跳过default中的switch(REMOTE)。但是然后在void setup,我有相同的switch语句,但是在这种情况下(上传代码后)它确实执行了default:

我在switch()方面没有太多经验,因此任何建议都很受欢迎。

c++ arduino switch-statement arduino-c++
1个回答
0
投票

可能范围不足,因此请尝试每种情况

//..

     case 1:{
          vw_get_message(RFbuff, &RFbuflen);
          String RFSTRBUFF = RFbuff;
          scriptName = RFSTRBUFF; 
          delay(1200);
       }
          break;
        default:
          scriptName = "script"; 
          delay(500); 
        }
 //...
© www.soinside.com 2019 - 2024. All rights reserved.