专利名称:带语音提示的电子飞行检查单系统的制作方法
技术领域:
本发明涉及带语音提示的电子飞行检査单系统。
背景技术:
飞机是一个复杂的机电一体化系统。随着飞机设计、制造水平的提高和维护经验的积累, 由于飞机本身故障而发生的事故已很少,飞行事故大多由于飞行员操作不当造成,而这些人 为事故又有70%是由于飞行检查单使用不当而引起。实际操作时, 一些飞行员有依赖记忆而 忽视飞行检查单和跳读检査单的习惯,这给飞行安全带来隐患。
发明内容
以波音747-400为例,飞行员通过飞行管理计算机(FMC)运行本程序,通过该系统了解机 务对飞机检査的结果,代替纸质飞行检査单进行各项检查,带有语音提示,飞行员可通过听 语音而不是阅读来查看检查单,避免了跳读检查单带来的事故隐患。
查看飞行检查单在飞行检查单系统点"飞行"菜单中的"波音747-400"(
图1),在子 菜单中选择"正常飞行检査单",弹出"波音747-400正常飞行检查单"对话框,先选择飞行 阶段单选钮,右侧"注意"栏内将显示注意事项(图2),再在组合框中选择要査看的详细的 飞行阶段检査单,弹出"检査项目"对话框,点其中"语音提示"右侧的音频播放器,可通 过听语音提示检査各项目(图3)。
图1是系统的初始画面。
图2是正常飞行检查单对话框,用一个惊叹号提醒飞行员在启动发动机时应打开信号灯。 图3是带语音提示的检査项目对话框,用MediaPlayer控件创建了成员变量,并结合相应
的函数,实现了使用同一个播放器播放不同音频的功能。使用全局变量,控制"检査项目"
对话框中的列表框。
实施方法
用同一个播放器播放不同音频(见附图3):在创建的对话框中加上ActiveX控件Windows MediaPlayer。右击该控件,点"Class Wizard",在弹出的对话框中选"Member Variables"为
播放器建立成员变量(建立过程中,全部选用默认设置)。然后在要用到该播放器的地方添加 函数SetUri("路径名"),路径名使用了相对路径,以保证在各个电脑上都可用。使用全局变量,控制列表框,MediaPlayer控件
首先,在StdAfx.cpp中加上对全局变量的说明 int course; int details;
再在StdAfx.h中"〃{{AFX_INSERT—LOCATION}}"之前加上 extern int course; extern int details)
这样,在各个子程序中,都可以使用这四个变量。
course和details是用来在某对话框的单选按钮及组合框中改变选项后,控制另一个对话 框在初始化时对它的列表框中的项目及播放器要播放的音频的路径作相应响应的。具体做法 如下先为对话框类Checklist747_400建立消息映射
OnRADIOBefore()
OnRADIOTakeoff()
OnRADIOFlying()
OnRADIOLanding()
OnSelchangeCombol()
在OnRADIOBefore()中加上关键代码course=l ,在OnRADIOTakeoff ()中加上关键代 码course=2,在OnRADIOFlying ()中加上关键代码course=3,在OnRADIO Landing ()中 加上关键代码course=4。这样,选了相应的单选按钮,course就变为不同的值。
在OnSelchangeCombol()中加上以course的值作为判断条件的4个if语句。在每个if语 句中写上"details=m—ComCtl.GetCurSel()+x;"这句话,x的值,在course为l, 2, 3, 4时分 别为l, 7, 11, 12。这样,飞行的各个详细阶段就变成了detail从l到14的14个值。为后 来的在同一个对话框中完成不同项目的显示打下了基础。
接着,在对话框类Before一l的OnInitDialog()函数中写入由开关语句控制的代码
switch(details){
case 1 :{strcpy(dis_before_strl [O],"设置飞机外部灯光"); strcpy(dis—before—strl[l],"确定起落架状态"); strcpy(disJ)efore—strl[2],"确定顶板可用"); strcpy(dis_before—strl[3],"在FMC中输入航迹数据"); strcpy(dis—before—strl[4],"核实RTE和LEGS页的参数");
strcpy(dis—before—strl[5],"核实飞行航路页的参数");strcpy(dis—before—strl[6],"核实性能参数页"); strcpy(dis—before—strl[7],"核实航路点");
for(int i=0;i<8;i++)m—BeforeJ .AddString((LPCTSTR)dis—before一strl [i]);
m player.SetUrl("resWREC006.WAV") ;break;} case 2:(strcpy(dis—before—str2
,"确定着陆灯已关闭");
strcpy(dis—before—str2[ 1 ],"关闭滑行灯,频闪灯");
strcpy(dis—before—str2 [2],"关燃油泵");
strcpy(dis—before—str2[3],"设置EFIS控制组");
strcpy(dis—before—str2[4],"打开F/D开关");
strcpy(dis—before—str2[5],"关自动驾驶");
strcpy(dis_before—str2[6],"设IAS/MACH选择");
strcpy(dis—before—str2 [7],"设置限定高度");
strcpy(dis—before—str2[8],"检查时钟");
strcpy(dis—before—str2[9],"检查备用设备");
strcpy(dis—before—str2[ 10],"检查GPS");
s加py(dis—before—str2[ll],"自动刹车设于RTO档");
strcpy(dis—before_str2 [ 12],"设置泊机刹车");
strcpy(dis—before—str2[13],"确认扰流板位置");
strcpy (dis_before—str2 [ 14],"关闭偏航阻尼器");
strcpy(dis—before—str2[15],"关闭油门");
strcpy(dis—before—str2[16],"关闭反推");
strcpy(dis_before—str2[17],"检查襟翼角度");
strcpy(disjDefore—str2[18],"设置应答机");
strcpy(dis—before-Str2[19],"接收ATIS信息"); for(inti=0;i<20;i++)m—Before—l.AddString((LPCTSTR)dis—before—str2[i]); m_player.SetUrl("res\\REC007.WAV");break;}
case 3:{strcpy(dis_before—str3
,"核实Fuel sheet");
strcpy(dis—before—str3[l],"从ATC获得起飞许可"); strcpy(dis—before—str3 [2],"复查起飞数据");
strcpy(dis—before—str3[3],"设定IAS/MACH选择钮");strcpy(dis—before—str3 [4],"设定航向"); strcpy(dis—before—str3[5〗,"设定高度"); strcpy(dis—before—str3[6],"完成离场简报"); strcpy(dis—before str3 P],"打开皮托管加热"); for(inti=0;i<8;i++)m—Before—1.AddString((LPCTSTR)disbefore—str3[i]); m_player.SetUrl("res\\REC010.WAV");break;} case 4: {strcpy(dis_before—str4
,"关闭舱门");
strcpy(dis—before—str4[l],"确认客舱准备完毕"); strcpy(dis—before—str4[2],"确认己获得后推许可"); for(int i=0;i<3;i++)m—Before—l.AddString((LPCTSTR)dis—before—str4[i]); m_player.SetUrl("res\\REC011 .WAV");break;} case 5:{strcpy(dis—before—str5[O],"打开信号灯"); strcpy(dis—before—str5 [ 1 ],"打开燃油泵"); strcpy(dis_before—str5 [2],"打开频闪灯"); for(inti=0;i<3;i++)m_Before—1.AddString((LPCTSTR)dis一before一str5[i]); m_player.SetUrl("res\\REC012.WAV");break;} case 6:{strcpy(dis—before—str6
,"显示次发动机参数"); strcpy(dis—before—str6[ 1 ],"启动点火器"); strcpy(dis_before—str6[2],"启动燃油供应"); strcpy(dis—before—str6[3],"监视发动机参数"); strcpy(dis—before—str6[4],"发动机启动后打开除冰开关"); strcpy(dis_before—str6[5],"获取滑行道使用许可"); for(int i=0;i<6;i++)m_Before_l .AddString(dis一before—str6[i]); m_player.SetUrl("res\\RECO 13 .WAV");break;} case7:《strcpy(disjakeoff—strl
,"设置襟翼");
strcpy(dis—takeoff_str 1 [ 1 ],"检査飞行控制"); strcpy(dis」akeoff—strl [2],"确认起飞程序"); s加py(dis—takeoff—strl[3],"修正稳定器"); strcpy(dis—takeoff—strl[4],"显示LEGS页"); strcpy(dis—takeoff—strl [5],"完成客舱通告"); strcpy(dis_takeoff—str 1 [6],"打开应答机");strcpy(dis—takeoff—strl [7],"配置必要的自动驾驶参数");
for(int i=0;i<8;i++)m—Before—1 .AddString(dis—takeoff_strl [i]);
m_player.SetUrl("res\\REC014.WAV");break;} case 8:{strcpy(dis—takeoff str2
,"从塔台接收起飞许可"); strcpy(dis—takeoff—str2[ 1 ],"打开着陆灯"); strcpy(dis—takeoff—str2 [2],"松泊机刹车"); strcpy(dis—takeoff—str2[3],"根据地勤引导推出");
for(int i=0;i<4;i++)m—Before一l .AddString(dis一takeoff—str2[i]);
m_player,SetlM("res\\REC015.WAV");break;} case 9:{strcpy(dis—takeofflstr3
,"根据塔台指示使用自动驾驶仪");
strcpy(dis—takeoff—str3[l],"根据塔台指示收襟翼,起落架轮"); strcpy(dis_takeoff—str3[2],"监视发动机推力"); strcpy(dis_takeoff—str3[3],"开偏航阻尼器");
for(int i=0;i<4;i++)m—BeforeJ .AddString(dis一takeoff—st邻]);
m_player.SetUrl("res\\REC016,WAV");break;} case 10: {strcpy(dis—takeoff—str4
,"设置高度限定"); strcpy(dis—takeoff—str4 [ 1 ],"设定高度表"); strcpy(dis—takeoff—str4[2],"在6000ft处关着陆灯");
for(int i=0;i<3;i++)m_Before—1 .AddString(dis」akeoff—str4[i]);
m_player.SetUrl("res\\REC017.WAV");break;} case 11:(strcpy(diS-flying-Strl
,"监视巡航推力"); strcpy(dis—flying—str 1 [ 1 ],"监视飞行动态"); strcpy(dis—flying_Strl [2],"监视燃油管理系统");
for(int i=0;i<3;i++)m—Before—1 .AddString(dis—flying—strl [i]);
m_player.SetUrl("res\\REC018.WAV");break;} case 12:{strcpy(dis_landing—strl
,"接收ATIS信息"); strcpy(dis—landing一strl [l],"进入进近入口 "); strcpy(dis」anding—strl[2],"完成LEGS页设置"); strcpy(dis—landing—strl[3],"完成进近和着陆简报"); strcpy(dis—landing—strl[4],"按要求设定自动刹车"); strcpy(dis—landing—strl[5],"在6000ft高度打开着陆灯");strcpy(dis—landing—str 1 [6],"设定高度表"); for(int i=0;i<7;i++)mJBefore_l .AddString(dis一landing—strl [i]); m_player.SetUrI("rcs\\REC019.WAV");break;} case 13: {strcpy(dis landing一str2
,"检査飞行设备"); strcpy(dis—landing—str2[1 ],"按要求放出襟翼"); strcpy(dis—landing—str2[2],"放起落架"); strcpy(disjanding—str2[3],"扰流板预位"); strcpy(dis—landing—str2[4],"关偏航阻尼器"); for(int i=0;i<5;i++)m—Before—1 .AddString(dis」anding—str2[i]); irupIayer.SetUri("res\\REC020.WAV");break;} case 14: { strcpy(dis」anding—str3
,"关着陆灯"); strcpy(dis—landing—str3[l],"关自动驾驶"); s加py(dis—landing—str3[2],"检查扰流板已放下"); strcpy(dis—landing_str3 [3 ],"关频闪灯"); strcpy(dis—landing—str3 [4],"关自动杀lj车"); strcpy(dis_landing_str3 [5],"收襟翼"); strcpy(dis—landing—str3[6],"设应答机为待机状态"); strcpy(dis—landing—str3 [7],"在停机位拉上泊机刹车"); strcpy(dis」anding—str3[8],"关断燃油供应"); strcpy(dis—landing_str3 [9],"关燃油泵"); strcpy(dis_landing—str3 [ 10],"关外部灯光"); strcpy(dis」anding—str3[ll],"关皮托管加热"); for(inti=0;i<12;i++)m_Before_l.AddString(dis—landing—str3[i]); m_player.SetUrl("res\\REC022.WAV");break;} 从以上代码可以具体看出全局变量details是如何控制列表框的显示及播放器播放的音频 路径的。
权利要求
1、带语音提示的电子飞行检查单系统,其特征为通过该系统了解机务对飞机检查的结果,代替纸质飞行检查单进行各项检查,可通过听语音提示检查各项目。
2、 飞行检査单系统的语音提示特征包括用同一个播放器播放不同音频在创建的对话框中加上ActiveX控件Windows Media Player,为播放器建立成员变量;在要用到该播放器的 地方添加函数SetUrl("路径名"),路径名使用了相对路径,以保证在各个电脑上都可用;使用 全局变量,控制列表框,MediaPlayer控件。
全文摘要
本发明涉及带语音提示的电子飞行检查单系统。飞行员通过飞行管理计算机(FMC)运行本程序,通过该系统了解机务对飞机检查的结果,代替纸质飞行检查单进行各项检查,带有语音提示,飞行员可通过听语音而不是阅读来查看检查单,避免了一些飞行员有依赖记忆而忽视飞行检查单和跳读检查单带来的事故隐患。本发明使用方便,点击飞行菜单中的飞机机型,在子菜单中选择“正常飞行检查单”,在弹出的对话框中,先选择飞行阶段单选钮,右侧“注意”栏内将显示注意事项,再在组合框中选择要查看的详细的飞行阶段检查单,弹出“检查项目”对话框,点其中“语音提示”右侧的音频播放器,可通过听语音提示检查各项目。
文档编号B64D47/00GK101434297SQ20081015548
公开日2009年5月20日 申请日期2008年10月6日 优先权日2008年10月6日
发明者侃 倪 申请人:侃 倪