在运行时切换选择

Switch selection in runtime

本文关键字:选择 运行时      更新时间:2023-10-16

情况:有 5 个通道,它们被分配给 5 个传感器中的任何一个(运行时可以更改)。Ex- 通道 1 和 2 可以分配给传感器 1。但是,我希望无论分配如何,第二个开关中的所有传感器外壳在完整的"For"循环周期中只执行一次。我写了以下代码,但它不起作用。谁能说出解决方案?

for(uChannel = 0; uChannel < 5; uChannel++) {
    switch(uChannel)
    { 
      case 0: sensor= calibrate.channel1;
       break;
      case 1: sensor= calibrate.channel2;
       break;
      case 2: sensor= calibrate.channel3;
       break;
      case 3: sensor= calibrate.channel4;
       break;
      case 4: sensor= calibrate.channel5;
       break;
      default:
    }
    switch(sensor)
     {
       case 1:     function(a,b);
    break;
   case 2:     function(c,b);
    break;
   case 3:     function(d,b);
    break;
   case 4:     function(e,b);
    break;
   case 5:     function(f,b);
    break;
   default                   
     }

}

您可以为第二个开关案例编写函数,并从第一个开关的每个案例中调用它 例如:

void executeSensor(int sensor){
     switch(sensor)
     {
       case 1:     function(a,b);
       break;
       case 2:     function(c,b);
       break;
       case 3:     function(d,b);
       break;
       case 4:     function(e,b);
       break;
      case 5:     function(f,b);
       break;
      default:
      break;              
     }
}

以这种方式调用:

for(uChannel = 0; uChannel < 5; uChannel++) {
 switch(uChannel)
 { 
   case 0: sensor= calibrate.channel1;
    executeSensor(sensor)
    break;
   case 1: sensor= calibrate.channel2;
    executeSensor(sensor)
    break;
   case 2: sensor= calibrate.channel3;
   executeSensor(sensor)
    break;
   case 3: sensor= calibrate.channel4;
   executeSensor(sensor)
    break;
   case 4: sensor= calibrate.channel5;
   executeSensor(sensor)
    break;
   default:
    break;
  }
}

在上面的代码中有两个编译错误。

首先,您应该解决此问题。默认大小写应以语句结尾break;

for(uChannel = 0; uChannel < 5; uChannel++) {
    switch(uChannel)
    { 
      case 0: sensor= calibrate.channel1;
       break;
      case 1: sensor= calibrate.channel2;
       break;
      case 2: sensor= calibrate.channel3;
       break;
      case 3: sensor= calibrate.channel4;
       break;
      case 4: sensor= calibrate.channel5;
       break;
      default:
       break;
    }
    switch(sensor)
     {
       case 1:     function(a,b);
    break;
   case 2:     function(c,b);
    break;
   case 3:     function(d,b);
    break;
   case 4:     function(e,b);
    break;
   case 5:     function(f,b);
    break;
   default:
     break;              
     }
  }