找回密码
 加入FG

QQ登录

只需一步,快速开始

搜索
查看: 14116|回复: 8

Flightgear接口系列_1_参数解析

[复制链接]
发表于 2014-4-28 22:16:23 | 显示全部楼层 |阅读模式
本帖最后由 zk_sima 于 2014-4-28 22:20 编辑

第一次在论坛中发技术贴,潜水1年了,最新想应聘论坛IO技术模块的版主,所以迫使自己多发些帖子来吸引眼球,并希望大家一起来讨论。
好了,开始正文了。
背景:
本人计算机专业,大概1年前玩过flightgear,但没看过源码。工作中会接触到很多航电知识,最近需要用到飞行模型,所以就搭建了flightgear编译环境,学习和修改flightgear。
分割线

------------------------------------------------------------------------------------------------------------------------------------------------------
Flightgear的NetWork对应的是其数据的IO,flightgear定义了多种协议来对应各自的IO接口,每个协议都定义为FGProtocol类型。在程序中,如果需要flightgear提供这些接口则需要提供命令行参数来告知flightgear,flightgear在启动后会首先解析参数,根据不同的参数类型去初始化对应的IO,外部程序利用该IO与flightgear进行数据交互。
参数解析过程
Flightgear启动后开始调用fgMainInit,该函数是程序的入口函数,在该函数里通过调用fgInitConfig来解析参数。在fgInitConfig中创建Options对象,该对象用来解析和处理命令行参数,随后调用Options::init来对命令行的初步解析。在init中调用Options::parseOption,该函数判断参数的类型是否符合要求同时根据不同的参数类型进行不同的处理,如果类型为”—prop:”则直接创建参数类型描述和参数值对OptionValue(OptionDesc,cmdValue)并加入到Options对象中;如果类型为genric、mative等则调用addOption,在Options::addOption中创建OptionValue并加入到Options对象中。之后在fgInitConfig中调用Options::processOptions,在processOptions中对Options对象中的每个OptionValue调用Options::OptionsPrivate::processOption,在processOption中,首先判断参数的类型(在这里,我们暂时只讨论OPTION_CHANNEL),如果为OPTION_CHANNEL则调用add_channel把每个参数及值插入到FGGlobals::channel_options_list中。
流程图如下:
fg.JPG
如参数为:“--protocol=medium,direction,hz,medium_options,...“经过初始之后会以:“protocolmedium,direction,hz,medium_options,...”格式的字符串存储在FGGlobals::channel_options_list中。

明天继续更新,希望大家指正。
email:[email protected]

发表于 2014-5-5 09:20:26 | 显示全部楼层
看了之后,受益匪浅!
回复

使用道具 举报

发表于 2014-5-28 23:19:33 | 显示全部楼层
参数详解不错,受益匪浅!
回复

使用道具 举报

发表于 2014-8-7 20:10:46 | 显示全部楼层
辛苦了
回复

使用道具 举报

发表于 2014-9-18 07:58:40 | 显示全部楼层
非常精彩,省了很多时间自己研究,太好了,感谢楼主
回复

使用道具 举报

发表于 2015-1-5 16:44:59 | 显示全部楼层
大神,学习了~~~~~~~~~~~~~~~
回复

使用道具 举报

发表于 2015-4-28 11:25:03 | 显示全部楼层
不错不错。。好东东
~~
回复

使用道具 举报

发表于 2015-7-3 21:05:20 | 显示全部楼层
受益良多啊~最近正好在看FG接口的东西
回复

使用道具 举报

发表于 2015-7-3 21:06:28 | 显示全部楼层
刚开始接触这个东西,有点吃不消。。。。继续努力!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入FG

本版积分规则

QQ|小黑屋|手机版|联系我们|FlightGear ( 吉ICP备19002044号-7 )

GMT+8, 2025-7-26 19:59

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表