一次发布多个数据

Publishing multiple data at a time

本文关键字:布多个 数据 一次      更新时间:2023-10-16

我有一个标头文件,该文件具有以下格式的宏列表 #define <name_of_error> <word>,<bit> "<name_of_error>

以下是标题文件的一部分 -

#define CAMERA_ERROR 0,0, "CAMERA_ERROR"
#define IMAGE_NOT_DISPLAYING 0,1, "IMAGE_NOT_DISPLAYING"
#define CHANGE_IMAGE_CONSISTENCY 1,2, "CHANGE_IMAGE_CONSISTENCY"

现在,我有一个CPP源文件,其中我创建了一个函数pubError并将标题文件信息作为参数 -

void pubError(int word, int bit, string name_of_error)
{
  // Body of the function
}

我有一个回调函数,我尝试从其中(并传递name_of_error)调用 pubError,如以下 -

void sensorCallback(const diagnostic_msgs::DiagnosticArrayPtr &msg)
{
  msg->status[0].level == diagnostic_msgs::DiagnosticStatus::ERROR
  this->sc_.pubError(CAMERA_ERROR);
}

通过这种方式,我只能在特定时间发布1个错误。如何通过函数pubError从标题文件中发布多个错误?

有多种方法可以解决此问题。假设您不想更改#define s,则可以按以下方式更改pubError功能:

struct Error { int e1; int e2; std::string error; };
void pubError(std::vector<Error> errors)
{
    for (auto e : errors) std::cout << e.error.c_str() << std::endl;
}

您可以这样调用:

#define CAMERA_ERROR 0,0, "CAMERA_ERROR"
#define IMAGE_NOT_DISPLAYING 0,1, "IMAGE_NOT_DISPLAYING"
#define CHANGE_IMAGE_CONSISTENCY 1,2, "CHANGE_IMAGE_CONSISTENCY"
pubError({ { CAMERA_ERROR }, { IMAGE_NOT_DISPLAYING } });