开发自己的元件

接下来,我们先尝试写两个简单的组件SfYFQSource 和SfYFQOutput

文件为:sf_yfq_output.cc,sf_yfq_source.cc

SfYFQSource 是数据源,所以没有input 端口,只有一个output 端口,它不断的产生数据"hello world" 给到下一个组件。

SfYFQOutput 是最后把数据展示的模块,所以没有output,只有一个input,它把接收到的数据不断的在屏幕上打印出来。


class SfYFQSource : public SfComponent

{

public:

SfYFQSource()

{

AddOutput_("output_yfq");

}

~SfYFQSource()

{

}

protected:

virtual void Process_(SfSignalBus& inputs, SfSignalBus& outputs)

{

std::string str = "hello world";

outputs.SetValue("output_yfq", str);

}

virtual bool ParameterUpdating_(int index, SfParameter const& param)

{

return true;

}

};

REGISTER_COMPONENT(SfYFQSource)

我们进行编译,执行,发现SfYFQSource 已经成功加入了senseflow 框架

#include <senseflow.h>

class SfYFQOutput : public SfComponent

{

public:

SfYFQOutput()

{

AddInput_("input_yfq");

}

~SfYFQOutput()

{

}

protected:

virtual void Process_(SfSignalBus& inputs, SfSignalBus& outputs)

{

std::string str;

if (!inputs.GetValue("input_yfq", str))

{

printf("get str error\n");

return;

}

printf("str = %s\n", (char*)str.c_str());

}

virtual bool ParameterUpdating_(int index, SfParameter const& param)

{

return true;

}

};

REGISTER_COMPONENT(SfYFQOutput)

我们建立一个yfq_test.sf, 把组件连接起来,内容如下:

{

"name":"YFQ_TEST",

"threadCount":1,

"components":[

{

"name":"yfq_source",

"class":"SfYFQSource",

"properties":{

}

},

{

"name":"yfq_output",

"class":"SfYFQOutput",

"properties":{

}

}

],

"wires":[

{

"from":{"component":"yfq_source","port":"output_yfq"},

"to":{"component":"yfq_output","port":"input_yfq"}

}

]

}

然后运行程序,就可以看到屏幕不断的打印:+

Hello world 了

results matching ""

    No results matching ""