|
本帖最后由 zk_sima 于 2014-5-5 21:15 编辑
继续前面的 Flightgear接口系列_3_Flightgear支持的基本接口协议介绍
这里我们来介绍下如何扩展flightgear的接口协议。
扩展flightgear接口协议涉及到对flightgear源码的修改。
下面的介绍中,以扩展myProp协议来讲解。
扩展协议名称: myProp
支持的数据流方向:in,out,bi
支持的数据传输类型:socket,file,serial
支持的网络数据传输模式:udp,tcp
命令行实例: myProp=socket,in,10,127.0.0.1,5050,udp
为了扩展myProp协议需要进行下面3不操作:
1. 命令行的支持:前面介绍了,flightgear在初始阶段会通过fgInitConfig来解析命令行,为了是程序能够支持自定义协议 myProp的解析,需要在option中增加myProp,即在fgOptionArray结构体中添加一项:{"myProp", true, OPTION_CHANNEL, "", false, "", 0 }
2.FGIO的支持:fgio在初始化过程中会对每个channel生成对应的FGProtocol对象,因此需要在FGIO中进行修改以生成自定义的FGProtocol对象,即在parse_port_config函数中,增加了:else if (protocol == "myProp")
{
FGMyProp *myprop = new FGMyProp;
io = myprop;
}
3.自定义协议的实现,需要增加自定义的FGProtocol子类来实现我们的myProp协议:
class FGMyProp : public FGProtocol {
/*数据收发的本地缓冲区*/
char buf[2048];
/*缓冲区大小*/
int length;
public:
FGMyProp();
~FGMyProp();
// open hailing frequencies
bool open();
// process work for this port
bool process();
// close the channel
bool close();
bool parseInputData();
};
完成上面3部操作即可实现自定义协议的扩展。
至此flightgear的IO系列算是完结了,2周后继续对flightgear的其它模块i进行学习,大家可以通过留言回复或邮件的方式来交流。
希望能成功的申请到论坛的接口版块的版主!
email: [email protected]
|
|