2022年FlightGear软件的IO系统 .pdf
《2022年FlightGear软件的IO系统 .pdf》由会员分享,可在线阅读,更多相关《2022年FlightGear软件的IO系统 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.FGFS 的 IO 系统FGFS 是一个做研究的非常优秀的系统,飞行,气动,控制等,做这些免不了要和FG 进行数据交换,本文主要说说FG 的 IO 系统,包括 FG 的 IO 架构,支持的 IO 协议,及与FG 的通信。1.1.FG 的 IO 系统架构FG 支持许多IO 协议,这些协议均由一个simgear 的 SGSubsystem模块形式实现的FGIO 子系统来进行管理。这些协议在功能和作为可能有相同的以可能不同,并且这些模块可以同时启动。在一个FG 运行实例中可以同时使用多种协议与其进行通信。FG 支持的协议有generic,garmin,joyclient,jsclient,nat
2、ive-ctrls,native-fdm,native-gui,native,nmea等等,详细的列表参见fgfs 的手册。1.2.IO 架构每个协议模块都是一个FGProtocal 的子类,实现了相应的操作接口。主程序先根据命令行的参数确定要启用哪些IO 协议,然后创建对应的io 协议的实例,并以指定的参数初始化。主程序起动后,使用Options 对像来处理命令行参数,所有支持的参数在 options.cxx:struct OptionDesc 结构中定义,该结构还定义的参数的类型,类型是 OPTION_CHANNEL的都是 IO 子系统的。通过在 Options:init()-parseO
3、ption()-addOption()将参数以参数名、参数值创建一个OptionValue 对像实例,保存到一个vector 中。然后主程序调用Options:processOptions()-Optons:ptionsPrivate:processOption()来处理每个参数。如果参数类型为OPTION_CHANNEL,就将其添加到全局的FGGlobals:channel_options_list 中,至此参数处理完成。主程序在 fg_init.cxx:fgInitSubssytems()中加载各个子系统,其中就包括 FGIO 子系统,最后调用globals.get_subsystem_m
4、gr().init()初始化所有注册的子系统,对于IO 子系统来说,前面已经将从参数指定的要启动的IO 协议保存到了列表中,在FGIO:init()中遍历已经从命令行分析到的要使用的IO 协议的信息,根据参数指定的协议创建相应的IO 协议的实例,见FGIO:parse_port_config()函数.每种协议参数配置不尽相同,后面在说.FGProtocal 主类定义一操作框架的接口,及几个主要的属性,hz:数据更新/发送的频率;dir:数据的方向,指定 FG 是发送还是接收都,in 表示接收,out 表示是发送;io:数据收发通道,根据协议不同,通道可以是串口,socket,文件等,这些属性在
5、FGIO:parse_port_config()的后半部分中设置的。初始化完成后,就进入工作准备,当主系统调用FGIO:update()时,IO 子系统遍历已经注册的协议,分别调用每个协议的 update()函数。FG 启动时设置IO 系统的参数一般如下面的格式:-protocol=medium,direction,hz,medium_options,.protocol=指定的协议名,如native,nmea,garmin,fgfs,rul,pve,ray等medium=IO 使用的媒体,可以是serial,socket,file,有些协议不需要指定该参数,如httpd,就只有一个设定端口的参
6、数。direction=数据方向,如in,out,有些协议只支持输入或输出hz=数据更新的频率,单位秒,可以使用浮点数名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -medium_options 为与选择的IO 像媒体相关的选项,如串口(serial)就需要指定串口的名字和波特率。以上这些参数,不是所有的都需要,是根据使用的媒体需定和协议而定的。1.3.IO 协议介绍本节简单介绍一下一些主机IO 协议的使用方式,只选了几个比较典型和我知道是什么的来介绍,有些协议我以不知道具体的情况,就不说了,有了解的同学请补充。下面的协议名已options.cxx 中的 struct
7、OptionDesc 结构中的定义为准,至于标准名是什么不于追究。使用这些协议与FG 进行通信,先对SimGear 的属性系统及FlightGear 的各种属性有所了解,就很容易使用了,当然有些协议不需要,如 joyclient 1.3.1.atcsim这个好像需要ATC 硬件支持,没法玩,以没玩过。1.3.2.atlasatlas 是一个用于显示飞行地图的程序。1.3.3.httpd指定了 httpd 选项后,FG 在运行时会在指定的端口创建一个http 服务器,这样就可以有 http 协议访问FG 的各种数据,可以使用浏览器打开http:/localhost:port 来打开FG 的属性查
8、看页面,并且还可以直接修改其中的一些属性。具体的属性的意义参考SimGear 的手册。1.3.4.jpg-httpd指定 jpg-httpd 选项后,FG 在运行时会在指定的端口创建一个简单的http 服务器,当访问一个端口时,FG 会返回一张当前FG 运行的屏幕的截图。用浏览器访问就能看到截图。1.3.5.native Native 以是一个二进行协议,不过和前面几个不同的时,数据来由于FG 运行时的全局 FGInterface 类对象 evil_global_fdm_state,在 flight.hxx 文件中定义FDM(Flight Dynamics Model)中的各种数据。这些数据可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年FlightGear软件的IO系统 2022 FlightGear 软件 IO 系统
限制150内