4

我正在为 ConfigurableFirmata 编写自定义模块,我看到库正在使用回调,例如:

void Class::handleCapability(byte pin);
boolean Class::handlePinMode(byte pin, int mode);
...
boolean Class::handleSysex(byte command, byte argc, byte *argv);

问题是,我不太明白为什么某些函数是布尔函数以及何时返回 TRUE 或 FALSE(以及返回 TRUE 或 FALSE 时会发生什么?)。

4

2 回答 2

2

答案在 FirmataExt.cpp 中。如果扩展返回 FALSE,它只是向firmata 发送一个字符串,用于调试目的。

于 2016-08-27T14:14:56.513 回答
0
boolean FirmataExt::handleSysex(byte command, byte argc, byte* argv)
{
  switch (command) {

    case PIN_STATE_QUERY:
      if (argc > 0) {
        byte pin = argv[0];
        if (pin < TOTAL_PINS) {
          //...
          return true;
        }
      }
      break;
    case CAPABILITY_QUERY:
      //...
      return true;
    default:
      for (byte i = 0; i < numFeatures; i++) {
        if (features[i]->handleSysex(command, argc, argv)) {
          return true;
        }
      }
      break;
  }
  return false;
}

如果命令有效,此函数返回 true。

于 2016-09-01T17:25:09.530 回答