QQ登录

只需一步,快速开始

查看: 12040|回复: 9
打印 上一主题 下一主题

Flightgear接口系列_2_FGIO初始化过程

[复制链接]

主题

好友

5440

积分

版主

跳转到指定楼层
楼主
发表于 2014-4-30 23:42:21 |只看该作者 |倒序浏览
本帖最后由 zk_sima 于 2014-4-30 23:44 编辑

今天来继续更新,接着上一节Flightgear接口系列_1_参数解析


今天继续fg接口代码的分析,主要内容是 FGIO初始化过程
FGIO初始化过程
Flightgear的所有IO是通过FGIO对象进行管理的,FGIO对象是SGSubsystem子类,在flightgear中是通过FGGlobals::subsystem_mgr来管理,并在初始阶段调用每个subsystem 的init来对所有的subsystem进行初始化。具体过程如下:
Flightgear在fgMainInit中经过基本的初始化后,进入了主循环过程fgOSMainLoop,在fgOSMainLoop中会循环调用fgIdleFunction,fgIdleFunction中存在一个计数器,在计数器到7时(即进入了第七次循环)会调用全局函数fgCreateSubsystems,在该函数过程中flightgear会创建所有的subsytem包括FGIO(globals->add_subsystem("io", new FGIO )),并加入到全局变量globals 的subsystem_mgr中,该变量用于统一管理所有的subsystem;当fgIdleFunction运行到第九次循环时会调用globals->get_subsystem_mgr()->incrementalInit(),在incrementalInit中会调用subsystem的初始化函数init,此时fgIdleFunction中的计数器并不会增加,所以每次循环都会进入该过程,直到初始化完所有的subsystem才会增加计数器并进入下一个过程。
在FGIO::init中,会依次遍历FGGlobals::channel_options_list(即之前提到的CHANNEL类型的参数)中的每个参数字符串,并调用FGIO::add_channel,在add_channel中flightgear调用FGIO::parse_port_config,为每一个参数生成一个FGProtocol对象,并加入到FGIO支持的协议列表中。
在此之后,fgIdleFunction进入后面的循环过程,并注册循环函数为:fgMainLoop,在fgMainLoop中每次循环都会调用globals->get_subsystem_mgr()->update(sim_dt),在update中会根据时间戳依次调用子系统subsystem的update函数。
在子系统FGIO的update中,系统会根据时间戳,依次调用每个支持的协议的处理函数:FGProtocol::process。每个协议的process会进行详细的数据IO通信。
综上所述,在后续的详细分析中,我们主要关注于:FGIO::parse_port_config和FGProtocol::process,其中FGIO::parse_port_config包含了FGProtocol生成的过程,FGProtocol::process包含了FGProtocol的处理过程。


email:zk.sima@gmail.com
分享到: QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0

主题

好友

77

积分

航院新生

沙发
发表于 2014-5-5 09:22:14 |只看该作者
看了之后,受益匪浅!
回复

使用道具 举报

主题

好友

14

积分

报考学院待录取

板凳
发表于 2014-6-15 15:47:17 |只看该作者
楼主辛苦,接口讲的很清楚,谢谢
回复

使用道具 举报

主题

好友

23

积分

报考学院待录取

地板
发表于 2014-8-5 15:02:56 |只看该作者
学习中,楼主很猛奥,能留个Q么,方便今后交流,我的Q是826940559
回复

使用道具 举报

主题

好友

34

积分

报考学院待录取

5#
发表于 2014-9-18 09:07:49 |只看该作者
这个有逆向工程的味道,真心不错
回复

使用道具 举报

主题

好友

16

积分

报考学院待录取

6#
发表于 2015-1-5 16:45:44 |只看该作者
大神,学习了~~~~~~~~~~~~~~~~~
回复

使用道具 举报

主题

好友

13

积分

报考学院待录取

7#
发表于 2015-7-3 21:08:21 |只看该作者
不错不错。。好东东
~~
回复

使用道具 举报

主题

好友

17

积分

报考学院待录取

8#
发表于 2015-7-29 14:18:26 |只看该作者
分析的好详细,非常感谢楼主,谢谢!
回复

使用道具 举报

主题

好友

10

积分

报考学院待录取

9#
发表于 2015-11-27 23:24:28 来自手机 |只看该作者
谢谢楼主分享,学习下
回复

使用道具 举报

主题

好友

13

积分

报考学院待录取

10#
发表于 2016-3-31 18:32:13 |只看该作者
大牛啊,膜拜,虽然看不太懂
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 03:18

Powered by Discuz! X3.2

© 2001-2013 FlightGear Inc.

返回顶部