0

我正在使用 RedHawk 1.9。我有一个输出端口,我计划通过它发送字符串数据。在 IDE 的概览面板中,我添加了一个 BULKIO dataChar 类型的端口。当我尝试以下操作时:

   std::string cmd = "testCmd";
   this->dataChar->pushPacket( cmd.str(), bulkio::time::utils::now(), 
       false, this->ar8200CmdStream_id);

我收到一条错误消息,表明 pushPacket 需要 std::vector 而不是 char *。这看起来像手册中采用的方法。

我是否为字符串选择了错误的 BULKIO 类型?我考虑过使用 dataXML,但我预计那是期待 XML 格式。

PS:我注意到手册中没有在 pushPacket 调用中包含时间。

4

1 回答 1

0

你是对的。char 的 BULKIO 数据端口采用字符向量。您将在下面找到使用 bulkio char 输出端口发送字符串和使用 bulkio char 输入端口接收数据的代码片段。


从 pushString 组件的服务功能:

std::string str = "hello_world";
data = std::vector<char>(str.begin(), str.end());

stringOut->pushPacket(this->data, tstamp, false, this->stream_id);

从 receiveString 组件的服务函数:

bulkio::InCharPort::dataTransfer *tmp = stringIn->getPacket(-1);

if (not tmp) { // No data is available
    return NOOP;
}

std::string outputString(tmp->dataBuffer.begin(), tmp->dataBuffer.end());
std::cout << outputString << std::endl;
fflush(stdout);

但是,bulkio 端口类型通常用于流式数据传输。如果您打算将字符串用作命令和控制的手段,您可能需要重新考虑选择 bulkio char 端口以支持消息传递 API ( http://redhawksdr.github.io/Documentation/mainch17.html ) .

使用消息 API 还允许您利用 IDE 的事件查看器: http ://redhawksdr.github.io/Documentation/mainch19.html#x21-32900019.4.7

于 2013-11-04T19:24:47.023 回答