找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15323|回复: 37

[外设交流] 【原创+金币】浅谈A320模拟机制作思路及流程

  [复制链接]
发表于 2016-3-13 14:52:24 | 显示全部楼层 |阅读模式
本帖最后由 PJones 于 2017-8-28 11:48 编辑

先安利一下自己的Project:http://bbs.sinofsx.com/forum.php ... 60501&extra=&page=1


在正扎头做API,AS比较欠*,不是那么好调教,看之前给我留言的飞友们对这个很感兴趣,不妨稍作注释。


文由本人积累的经验汇总而成,任何个人/组织(除SINOFSX)以外转载。


如有不足之处,请多多海涵,谢谢您的支持!




【综述】


  首先,大家必须明白,由于国内并没有成熟的高端模拟飞行市场,而且相应的设备无论从何处采购都是极其高昂的,意味着,您的模拟机项目可能会耗费您大量的金钱和时间。保守的估计,一台完整的模拟机至少需要10万+人民币左右的预算和至少2-3年的时间。

  其实,不论空客抑或波音机,所有的系统都是模块化的,比如MCP/FCU是一个模块,FMC/MCDU又是一个模块,诸如此类;也就是说,所有的部件都是可以模块化设计的。比如,顶板,看似复杂,其实细观空客的前顶板,其实也就是由十个大模块组成的。也就是说,只要在理论上走通一个模块,其余模块是可以批量设计的。虽然设计生产可能会有比较多的问题出现,但是大体上的思路就是: 捕获.JPG

【1.1 FSX的API接口结构以及接口内容】


  首先,科普一下什么是API:
“API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。”

总而言之,就是能用来与FSX内部数据实行交换的一个接口。

  自2006年FSX出版之后,开发者们惊喜的发现,FSX提供了的SDK里出现了开发者友好的一个API接口:Simconnect,有了这个,开发者们不再需要Peter的FSUIPC来进行开发了(这对于商业开发者来说无疑是个福音,因为他们能少付一笔版权费)。

  FSX的API接口同其所有程序架构一样,都是采用DLL(动态数据连接库)的形式外挂在FSX的主程序下。每次当你装了新插件之后,WindowsDefender和FSX都会弹窗询问你是否要加载(Hook)某一个DLL,当你选择了是,这个DLL就会被列入白名单,每次启动时自动加载;这也就能解释为何FSX在装了一大堆插件之后巨卡开启的原因。机模插件的内部程序透过DLL和Simconnect从FSX的物理引擎读取飞机的某个状态,反之,也可以给FSX的物理引擎写入某个状态。

  FSX的API编写主要采用C++,部分动画采用XML 1.0。据我所知,AS的官方开发使用的是VS 2008(当然,个别玩虚幻引擎的大神可能没法装这个版本了)。

  总的来说,API接口包含了以下几个功能:
1.读取物理引擎数据

2.向物理引擎写入数据

3.让物理引擎处理数据并返回值



【1.2 兼容性2D面板的制作方法】
  既然是模拟舱就肯定要有面板显示,那么,该怎样把ND, PFD一类的面板显示出来呢?

  众所周知,AS可是不提供2D面板的(即可以通过Shift+组合键召唤出来的面板),LMCDU除外

  那么,我们就要采取“自制2D面板”的策略:

  1.直接显示型。直接显示型,顾名思义,就是直接把2D面板的内容用显示器显示出来,其原理非常简单,即把包含在Panel文件夹内的AB_A320.DLL内对应的面板给cite出来,然后自创一个2D面板框用于显示这个。

  例(红字部分为我们要添加的,绿子部分为要删除的,蓝字部分为注解):



[Window Titles]
Window00=Main Panel
Window01=Left MCDU
Window02=DEBUG
Window03=PFD
Window04=ND
Window05=
Window06=
Window07=
Window08=
Window09=
Window10=Horizontally Panel Bar -FSX-
Window11=Vertical Panel Bar -FSX-
Window12=Checklist Info -FSX-
Window13=Horizontally Wing View Bar -FSX-
Window14=Vertical Wing View Bar -FSX-
Window15=Checklist Info -P3D-
Window16=Horizontally Panel Bar -P3D-
Window17=Vertical Panel Bar -P3D-
Window18=Horizontally Wing View Bar -P3D-
Window19=Vertical Wing View Bar -P3D-

然后,下到[Windows.XX]界面,自定义[Window03&04]

[Window03]
file=../../Aerosoft Airbus A320_A321 Base/Panel_Fallback/MCDUIMG.bmp
file_1024_night=../../Aerosoft Airbus A320_A321 Base/Panel_Fallback/MCDUIMG_NIGHT.bmp
/*这个是背景图片,因为是组合面板,我们不需要*/
Background_color=0,0,0
size_mm=430,726
window_size_ratio=0.250
position=7
visible=0
ident=10021
window_size= 0.350, 0.750
window_pos= 0.650, 0.250
//sizeable=0
/*背景颜色,窗口大小,这个按需*/

gauge00=../SimObjects/Airplanes/Aerosoft Airbus A320_A321 Base/Panel_Fallback/Displays!PFD,   1,684,340,340
/*这一行非常关键,也就是我说的Citation行,引用了DLL中的PFD逻辑在P3D内加以显示(FSX同理)*/



  然后,用A卡的Eyefield或者N卡的NGEX来分屏链接多显示器,然后把PFD/ND放上去就好了。

  2.数据导出方法

  这个相当复杂,需要透过Simconnect和其他API接口把PFD和ND显示的所有数据一并导出然后自己在下位机上编写逻辑来显示,过于冗杂,如同楼下飞友所述“每一台显示器后面都要有刀片”,相当复杂,这里不多做解释了。

  以此类推,PFD和ND就可以有效导出到外部屏幕了。


【不定期更新】

发表于 2016-3-13 15:03:34 | 显示全部楼层

回帖奖励 +1 金币

楼主真够人才的
回复

使用道具 举报

发表于 2016-3-13 15:18:49 | 显示全部楼层
真正的模拟舱,每一块液晶屏后面都配有一块处理器。
回复

使用道具 举报

 楼主| 发表于 2016-3-13 16:37:44 | 显示全部楼层
StarryNight. 发表于 2016-3-13 15:18
真正的模拟舱,每一块液晶屏后面都配有一块处理器。

So?阁下有何建议?
回复

使用道具 举报

 楼主| 发表于 2016-3-13 17:02:02 | 显示全部楼层
cloudsky 发表于 2016-3-13 16:55
高二狗瑟瑟发抖,lz好人才
一定要加油啊(・8・)/

不敢当不敢当!
祝学长各种考试加油!
回复

使用道具 举报

发表于 2016-3-13 17:21:54 | 显示全部楼层
回复

使用道具 举报

发表于 2016-3-13 17:27:32 | 显示全部楼层
没那么多钱啊,预算也就5万左右。
回复

使用道具 举报

发表于 2016-3-13 17:49:06 | 显示全部楼层
真心不建议用AS做基础,航电先不说,鬼畜的电传就够你调♂教了,最好再等等FSL的320
回复

使用道具 举报

发表于 2016-3-13 17:49:36 | 显示全部楼层
PJones 发表于 2016-3-13 16:37
So?阁下有何建议?

理论简单,实践很难
回复

使用道具 举报

 楼主| 发表于 2016-3-13 17:51:19 | 显示全部楼层
StarryNight. 发表于 2016-3-13 17:49
理论简单,实践很难

嗯,深有体会
回复

使用道具 举报

 楼主| 发表于 2016-3-13 17:52:14 | 显示全部楼层
溶けの冰 发表于 2016-3-13 17:49
真心不建议用AS做基础,航电先不说,鬼畜的电传就够你调♂教了,最好再等等FSL的320 ...

没办法啦...毕业前得搞完赶工期,AS又是目前最好的了,电传我们自己把那段逻辑抽出来改进了一下。总之谢谢支持哈!
回复

使用道具 举报

 楼主| 发表于 2016-3-13 17:52:47 | 显示全部楼层
溶けの冰 发表于 2016-3-13 17:49
真心不建议用AS做基础,航电先不说,鬼畜的电传就够你调♂教了,最好再等等FSL的320 ...

Deep♂Dark♂Fantasy
回复

使用道具 举报

发表于 2016-3-13 18:40:08 | 显示全部楼层

数据运算是分布式的,刀片服务器,系统和软件深度定制,据我所知,全动舱为128位系统128位深度定制P3D,每一块液晶屏后面都有一块处理器进行独立运算,。一切为了不卡。至于系统集成深度,没有电脑开关机的概念,想飞?顶板电源接上就OK
回复

使用道具 举报

 楼主| 发表于 2016-3-13 18:44:08 | 显示全部楼层
StarryNight. 发表于 2016-3-13 18:40
数据运算是分布式的,刀片服务器,系统和软件深度定制,据我所知,全动舱为128位系统128位深度定制P3D, ...

嗯,独立计算机集成刀片,仪表为外部逻辑,从P3D读取数据再显示,但是我们采取2D面板分屏法...因为技术有限
回复

使用道具 举报

发表于 2016-3-13 18:50:51 | 显示全部楼层
PJones 发表于 2016-3-13 18:44
嗯,独立计算机集成刀片,仪表为外部逻辑,从P3D读取数据再显示,但是我们采取2D面板分屏法...因为技术有 ...

最有意思的是上次问红雀客服,咱们的全动是啥平台,她说洛马你知道么,就是那个军火商,他们的。我问,就是P3D呗,你们知道PMDG是什么么?她回答:没听说。。。。。

点评

听闻阁下在搭建全动模拟平台  发表于 2016-3-13 19:46
回复

使用道具 举报

 楼主| 发表于 2016-3-13 19:40:40 | 显示全部楼层
StarryNight. 发表于 2016-3-13 18:50
最有意思的是上次问红雀客服,咱们的全动是啥平台,她说洛马你知道么,就是那个军火商,他们的。我问,就 ...

红雀是?
回复

使用道具 举报

发表于 2016-3-14 19:19:50 | 显示全部楼层

回帖奖励 +1 金币


国外一家做D级全动舱的
回复

使用道具 举报

发表于 2016-3-14 23:06:04 | 显示全部楼层
如何把PN PDF 搞到另一个屏里显示

点评

请看一楼  发表于 2016-3-17 09:35
回复

使用道具 举报

发表于 2016-3-15 13:43:50 | 显示全部楼层

如何把PN PDF 搞到另一个屏里显示

点评

请看一楼  发表于 2016-3-17 09:35
回复

使用道具 举报

发表于 2016-3-27 01:33:26 | 显示全部楼层

回帖奖励 +1 金币

楼主真厉害,请问做一套大概需要多少钱啊?
回复

使用道具 举报

 楼主| 发表于 2016-3-27 08:16:08 | 显示全部楼层
fujigao82 发表于 2016-3-27 01:33
楼主真厉害,请问做一套大概需要多少钱啊?

十万左右
回复

使用道具 举报

发表于 2016-6-4 21:39:07 | 显示全部楼层
高三狗表示叹服。。楼主人才一定请坚持下去
回复

使用道具 举报

发表于 2016-7-4 12:38:27 | 显示全部楼层
大一狗同想做模拟机项目,求加好友探讨?QQ:253983661....顺便→_→我是鸟厨2333
回复

使用道具 举报

发表于 2016-7-27 15:46:52 | 显示全部楼层
好666666666
回复

使用道具 举报

发表于 2016-9-15 23:41:29 | 显示全部楼层
看了记录片又回来看看!
回复

使用道具 举报

发表于 2016-9-24 17:19:37 | 显示全部楼层
一起研究研究QQ:27263471注明模拟舱
回复

使用道具 举报

发表于 2016-10-7 11:16:20 | 显示全部楼层
理论简单,实践很难
回复

使用道具 举报

发表于 2016-10-28 11:56:44 | 显示全部楼层
我觉得不错 教程好 不错啊
回复

使用道具 举报

发表于 2016-11-4 23:13:57 | 显示全部楼层
楼主辛苦了
回复

使用道具 举报

发表于 2016-11-5 17:11:30 | 显示全部楼层
人才啊~~~~~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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