一种机载计算机软件通用框架设计方法

文档序号:6575266阅读:250来源:国知局
专利名称:一种机载计算机软件通用框架设计方法
技术领域
本发明提供一种机载计算机软件通用框架设计方法,属于机载计算机软件技 术领域,具体涉及软件的任务划分、优先级分配、任务间通信设计等。
(二) 背景技术-
机载计算机软件按照功能分为系统执行软件和应用软件两部分,系统执行软 件主要是为系统运行提供接口驱动程序、任务调度程序等底层支持程序,应用软 件是系统功能的集中体现,它用于实现系统各种控制功能、检测功能、故障处理 功能等。
目前机载计算机软件开发过程中,系统执行软件多由嵌入式实时操作系统实 现,而应用软件则凭开发人员的经验直接基于操作系统进行开发,此种模式开发 的应用软件可移植性差且可靠性难以保证。为解决此问题,本发明一种机载计算 机软件通用框架设计方法,作为操作系统以及具体应用软件间的缓冲,增强了应 用软件的可移植性以及可靠性。
本发明所设计的软件通用框架属于应用软件的一部分,系统执行软件则由
VxWorks操作系统以及相应的板级支持包(BSP)实现。
(三)

发明内容
(1) 目的本发明的目的在于提供一种机载计算机软件通用框架设计方法,应 用该框架,软件开发人员可以迅速依据具体需求开发出实用、可靠的机载计算机 应用软件,有效地减少软件设计时间,提高软件开发的规范性、可靠性。
(2) 技术方案本发明是一种机载计算机软件通用框架设计方法,其主要内容 及程序是先基于VxWorks建立开发环境,然后将机载计算机软件的任务分别按 照时间驱动任务、事件驱动任务、后台运行任务三类任务进行设计,最后设计初 始化、时钟中断服务程序、接口处理程序等,在整个操作步骤中体现了软件任务 划分、任务优先级设置、任务间通信等方面的设计。
本发明一种机载计算机软件通用框架设计方法,该方法具体步骤如下 步骤一建立软件开发环境、建立工程
1) 建立基于VxWorks操作系统的应用软件开发环境
普通PC机做宿主机,机载计算机做目标机。宿主机安装Tornado,目标机能 够运行VxWorks操作系统,双方通过以太网或串口建立连接。
2) 在Tornado集成开发环境上建立应用软件工程。
建立步骤运行Tornado —选择File菜单一选择New Project…菜单项 —选择创建工程类型一设置工程名称和路径一设置开发工具链一生成工 程文件一完成工程创建。 步骤二建立时间驱动类任务时间驱动类任务由时钟中断发送的二进制信号量周期驱动执行,具体体现为 周期任务,实现导航数据转换、控制律计算、遥测数据更新等需要周期执行的相 关功能。
具体实现建立PeriodOperate. c和PeriodOperate. h文件,并建立周期任 务入口函数(void TaskPeriod()),该函数首先进行周期任务内部数据初始化, 然后进入无限循环,在循环中先获取二进制信号量,如果获取二进制信号量不成 功则该任务被堵塞直至获取信号量成功,获取成功后进行控制律计算、导航数据 转换、遥测数据更新等具体功能的实现;如果有数据需要输出则发送相应输出消 息到输出消息队列。 步骤三建立事件驱动类任务
事件驱动类任务主要是由某些内部或外部事件所触发执行的任务,由相应消 息队列消息驱动执行,包括输入任务、输出任务、故障综合任务。
1) 输入任务输入任务完成各接口数据的输入处理功能。
具体实现建立I叩utOperate. c和I叩utOperate. h文件,并建立输入任务 入口函数(void TaskI叩utManage ()),该函数首先进行输入任务内部数据初始 化,然后进入无限循环,在循环中先获取输入消息队列消息,如果获取消息不成 功则该任务被堵塞直至获取消息成功,获取成功后读取消息对应的标准数据结构 数据,然后进行输入数据处理,处理完毕后如果有数据要输出则发送相应输出消 息到输出消息队列。
2) 输出任务输出任务完成数据输出处理功能。
具体实现建立OutputOperate. c和OutputOperate. h文件,并建立输出任 务入口函数(voidTaskOutputManage ()),该函数首先进行输出任务内部数据初 始化,然后进入无限循环,在循环中先获取输出消息队列消息,如果获取消息不 成功则该任务被堵塞直至获取消息成功,获取成功后读取消息对应的标准数据结 构数据,然后根据具体接口进行标准数据结构的具体化操作,调用输出接口程序 完成数据输出。
3) 故障综合任务故障综合任务完成故障的记录、处理功能。 具体实现建立ErrOperate. c和ErrOperate. h文件,并建立故障综合任务
入口函数(void TaskErrManage ()),该函数首先进行故障综合任务内部数据初 始化,然后进入无限循环,在循环中先获取故障消息队列消息,如果获取消息不 成功则该任务被堵塞直至获取消息成功,获取成功后根据具体系统进行故障记录 以及故障处理。
步骤四建立后台运行类任务
后台运行类任务主要是对实时性要求不高的、在其他任务执行间隙运行的任 务,具体体现为检测任务。
具体实现建立BitOperate. c和BitOperate.h文件,并建立检测任务入口 函数(voidTaskBIT()),该函数首先进行检测任务内部数据初始化,然后进入无 限循环,在循环进行计算机状态检测、其他外接设备状态检测等,如果检测到故 障则发送故障消息到故障消息队列,检测完成后进行延时。 步骤五建立时钟中断服务程序
在时钟中断服务程序中释放二进制信号量激活周期任务。
具体实现在周期任务实现文件PeriodOperate. c和PeriodOperate. h中建 立时钟中断服务程序(void TimerISR()),该函数中释放二进制信号量。 步骤六建立接口程序1) 输入接口程序是相应接口的中断服务程序,完成相应接口数据输入功 能。
具体实现在输入任务实现文件I叩utOperate. c和I叩utOperate. h中 建立输入接口程序(void I叩utlSR—XXX(),具体设备具体命名),进入该 程序后,首先进行数据的标准化,然后发送相应输入消息到输入任务进 行处理。
2) 输出接口程序完成接口数据输出功能。
具体实现在输出任务实现文件OutputOperate. c和OutputOperate. h 中建立输出接口程序(void Output—XXX(),具体设备具体命名),进入该 程序后,首先将标准数据结构进行i体化,然后再调用具体设备的输出 接口函数完成数据输出。 步骤七建立初始化程序
进行全局数据初始化、设备接口初始化、信号量创建及初始化、消息队列创 建及初始化、时钟中断设置及初始化、任务创建及初始化等。
具体实现建立Initializtion. c和Initializtion. h文件,并建立初始化 函数(voidlni()),该函数首先根据具体系统进行全局数据初始化、设备接口初 始化,然后进行信号量创建及初始化、消息队列创建及初始化、时钟中断设置及 初始化、任务创建及初始化。
(3)优点及效果本发明一种机载计算机软件通用框架设计方法,该方法与 现有技术比,其优点是将现有机载计算机应用软件所涉及的所有功能进行抽象 得出该通用框架,使得在开发具体软件时根据不同需求进行相应任务实现以达到 快速开发的目的,并有效增强了现有直接开发方式的可移植性、可靠性以及规范 性。该软件通用框架设计方法已经在某飞行器的縮比验证机上得到成功应用。


图1周期任务执行流程图
图2输入任务执行流程图
图3输出任务执行流程图
图4故障综合任务执行流程图
图5检测任务执行流程图
图6初始化程序执行流程图
图7任务优先级分配图
图8任务间通信图
图9本发明流程框图
本说明书中所有英文符号含义说明如下
VxWorks :美国风河公司(Wind River)开发的一种嵌入式实时操作系统, 广泛应用于国防、航空航天、通信、消费电子、工业控制、汽车电子等领域。 Tornado:美国风河公司(Wind River)开发的一套强大的图形化嵌入式集成
6开发环境,能够实现创建和管理工程、建立和管理宿主机与目标机之间的通信以
及运行、调试和监控VxWorks应用等功能。
BSP:班级支持包(Board Support Package)的縮写,硬件层与应用层软件中
间的一层软件,为应用层软件提供标准接口,增强应用层软件的可移植性。
PeriodOperate. c、 PeriodOperate. h、 I叩utOperate. c、 InputOperate. h、 OutputOperate. c、 OutputOperate. h、 ErrOperate.c 、 ErrOperate. h、 BitOperate. c 、 BitOperate. h、 Initializtion. c、 Initializtion. h: 本发明
中搭建软件通用框架时推荐建立的源程序文件名称,每个文件实现相关任务和程 序。
TaskPeriod()、 TimerISR()、 TaskI叩utManage () 、 I叩utlSR—XXX()、 TaskOutputManage () 、 Output_XXX() 、 TaskErrManage() 、 TaskBIT() 、 Ini 0 : 本发明中各个任务以及相关程序的函数实现名称。
File、 New Project"': Tornado开发环境的菜单项。
具体实施方式
-
下面结合附图,对本发明中的各部分设计方法作进一步的说明-本发明一种机载计算机软件通用框架设计方法,该方法具体步骤如下 步骤一建立软件开发环境、建立工程
1) 建立基于VxWorks操作系统的应用软件开发环境
普通PC机做宿主机,机载计算机做目标机。宿主机安装Tornado,目标机能 够运行VxWorks操作系统,双方通过以太网或串口建立连接。
2) 在Tornado集成开发环境上建立应用软件工程。
建立步骤运行Tornado —选择File菜单一选择New Project…菜单项 —选择创建工程类型一设置工程名称和路径一设置开发工具链 一 生成工 程文件一完成工程创建。 步骤二建立时间驱动类任务
时间驱动类任务由时钟中断发送的二进制信号量周期驱动执行,具体体现为 周期任务,实现控制律计算、遥测数据采集等相关需要周期执行的功能。周期任 务的任务数量可能不止一个且各自运行的周期也可能不同,所以在具体设计中将 所有周期任务执行周期的最大公约数作为时钟中断间隔时间,并在时钟中断服务 函数中通过计数方式选择激活相应周期任务,以此来实现普通机载计算机软件设 计中采用的大小周期法或固定速率组法的实现方式。
具体实现建立PeriodOperate. c和PeriodOperate.h文件,并建立周期任 务入口函数(void TaskPeriod()),该函数首先进行周期任务内部数据初始化, 然后进入无限循环,在循环中先获取二进制信号量,如果获取二进制信号量不成 功则该任务被堵塞直至获取信号量成功,获取成功后进行控制律计算、导航数据 转换、遥测数据更新等具体功能的实现;如果有数据需要输出则发送相应输出消 息到输出消息队列。周期任务执行流程如图l所示。
周期任务实现函数代码示例-
void TaskPeriod0
7〃周期任务内部数据初始化 unsigned int Output_Code = 0;
while(l)
〃获取二进制信号量 semTake(semBID—PeriodTime
〃输出消息代码
MIT_F0REVER); 导航数据转换、控制律计算等
〃根据具体系统实现具体功能:
〃判断输出 if(有数据输出)
msgQSend(msgID一SendData, (char承)&Output—Code, sizeof(Outp ut—Code), NO—MIT, MSG—PRI—NORMAL);
步骤三建立事件驱动类任务
事件驱动类任务主要是由某些内部或外部事件所触发执行的任务,由相应消 息队列消息驱动执行,包括输入任务、输出任务、故障综合任务。事件驱动任务 正常情^下处于阻塞等待资源状态,只有当相关消息队列中有消息时才会处于就 绪或运行状态。
为增强软件的可移植性,需根据不同接口设计相应的标准数据结构,外设数 据需要先由其他程序转换为标准数据结构后才能供输入任务进行处理,同理输出 任务输出的标准数据结构需要先进行具体化后才能输出。
标准数据结构举例
〃标准数据帧CAN报文标准数据结构定义
typedef struct
unsigned short m一msgID; 〃标识符 unsigned charm一data[8]; 〃数据 }—CA醒CKET;
5输入任务输入任务完成各接口数据的输入处理功能。
具体实现建立InputOperate. c和I叩utOperate. h文件,并建立输入任务 入口函数(void TaskI叩utManage (〉),该函数首先进行输入任务内部数据初始 化,然后进入无限循环,在循环中先获取输入消息队列消息,如果获取消息不成 功则该任务被堵塞直至获取消息成功,获取成功后读取消息对应的标准数据结构 数据,然后进行输入数据处理,处理完毕后如果有数据要输出则发送相应输出消 息到输出消息队列。输入任务执行流程如图2所示。
输入任务实现函数代码示例
void TaskI叩utManage 0〃输入任务内部数据初始化
unsigned int Output—Code = 0: 〃输出消息代码 _CANPACKET CanPacket—R; 〃标准CAN报文结构(以此为例)
while (1)
msgQReceive(rasgID一I叩utManage, (char氺)&CanPacket—R, sizeof (.
CANPACKET), WAIT—FOREVER);
〃处理标准CAN报文结构CanPacket—R数据
〃判断输出 if(有数据输出)
msgQSend(msgID一SendData, (char*)&0utput—Code, sizeof (Outp
2)输出任务输出任务完成数据输出处理功能。
具体实现建立0utput0perate. c和0utput0perate. h文件,并建立输出任 务入口函数(voidTaskOutputManage ()),该函数首先进行输出任务内部数据初 始化,然后进入无限循环,在循环中先获取输出消息队列消息,如果获取消息不 成功则该任务被堵塞直至获取消息成功,获取成功后读取消息对应的标准数据结 构数据,然后根据具体接口进行标准数据结构的具体化操作,调用输出接口程序 完成数据输出。输出任务执行流程如图3所示。
输出任务实现函数代码示例
〃输出任务内部数据初始化
—CANPACKET CanPacket—S; 〃标准CAN报文结构(以此为例)
while(l)
msgQReceive(msglD—OutputManage, (char*)&CanPacket—S,sizeof(
〃获取输入消息队列消息
ut—Code), NO—WAIT, MSG—PRI—NORMAL);
〃获取输出消息队列消息
.CANPACKET) , WAIT—FOREVER);
〃标准数据结构具体化
9〃调用输出函数完成输出
3)故障综合任务故障综合任务完成故障的记录、处理功能。
具体实现建立ErrOperate. c和ErrOperate.h文件,并建立故障综合任务 入口函数(void TaskErrManage ()),该函数首先进行故障综合任务内部数据初 始化,然后进入无限循环,在循环中先获取故障消息队列消息,如果获取消息不 成功则该任务被堵塞直至获取消息成功,获取成功后根据具体系统进行故障记录 以及故障处理。故障综合任务执行流程如图4所示。
故障任务实现函数代码示例
〃获取输入消息队列消息
msgQReceive(msglD—ErrManage, (char*)&Err—Code, sizeof(Err一Co de), WAIT—FOREVER^";
〃故障记录
〃故障处理
步骤四建立后台运行类任务
后台运行类任务主要是对实时性要求不高的、在其他任务执行间隙运行的任 务,具体体现为检测任务。检测任务主要实现本机检测、外设检测等功能,并将 检测结果进行记录,如果检测到故障则需要发送故障消息以驱动故障综合任务进 行处理。
具体实现建立BitOperate.c和BitOperate.h文件,并建立检测任务入口 函数(voidTaskBIT()),该函数首先进行检测任务内部数据初始化,然后进入无 限循环,在循环进行计算机状态检测、其他外接设备状态检测等,如果检测到故 障则发送故障消息到故障消息队列,检测完成后进行延时。检测任务执行流程如 图5所示。
检测任务实现函数代码示例
void TaskBIT ()
〃输入任务内部数据初始化
unsigned int Err_Code = 0; 〃输出消息代码
while(l)
〃检测任务内部数据初始化while(l)
〃计算机状态检测
〃其他设备检测
〃延时
taskDelay(100);〃延时100 tick,根据实际系统设定延时时间
步骤五建立时钟中断服务程序
在时钟中断服务程序中释放二进制信号量激活周期任务。
具体实现在周期任务实现文件PeriodOperate. c和PeriodOperate. h中建
立时钟中断服务程序(void TimerISR()),该函数中释放二进制信号量。
步骤六建立接口程序
1) 输入接口程序是相应接口的中断服务程序,完成相应接口数据输入功 能。
具体实现在输入任务实现文件I叩utOperate. c和I叩utOperate. h中 建立输入接口程序(void I叩utlSR—XXX(),具体设备具体命名),进入该 程序后,首先进行数据的标准化,^后发送相应输入消息到输入任务进 行处理。
2) 输出接口程序完成接口数据输出功能。
具体实现在输出任务实现文件OutputOperate. c和OutputOperate. h 中建立输出接口程序(void Output—XXX(),具体设备具体命名),进入该
程序后,首先将标准数据结构进行i体化,然后再调用具体设备的输出
接口函数完成数据输出。 步骤七建立初始化程序
进行全局数据初始化、设备接口初始化、信号量创建及初始化、消息队列创 建及初始化、时钟中断设置及初始化、任务创建及初始化等。
具体实现建立Initializtion. c和Initializtion. h文件,并建立初始化 函数(voidlni()),该函数首先根据具体系统进行全局数据初始化、设备接口初 始化,然后进行信号量创建及初始化、消息队列创建及初始化、时钟中断设置及 初始化、任务创建及初始化。初始化程序执行流程如图6所示,其中任务创建 时创建的各任务的优先级按照图7进行建立。
初始化函数代码示例
void Ini 0
〃全局数据初始化
〃设备接口初始化
〃信号量创建及初始化semBID—PeriodTime = semBCreate(SEM—Q一PRIORITY , SEM—EMPTY); if(semBID一PeriodTime == NULL) return ERROR;
〃消息队列创建及初始化
msgID—ErrManage = msgQCreate(100, sizeof(int), MSG一Q一FIFO); msgID一SendData = msgQCreate(100,sizeof(int), MSG_Q—FIFO); msgID_InputManage=msgQCreate(100, sizeof(—CANPACKET)
MSG—Q一FIFO);
〃时钟中断设置及初始化
sysClkRateSet (50) ; 〃20ms —个周期,根据实际系统修改
sysClkConnect(RiNCPTR) TimerISR, 0); sysClkEnable 0;
〃任务创建及初始化
taskID—BIT=taskSpawn(〃BIT—Task〃, 140,0, 1024*10, (FUNCPTR)TaskBIT ,0, 0' 0, 0, 0, 0, 0' 0, 0);
taskID_Period=taskSpawn(〃Period_Task〃,130, 0, 1024*10, (FUNCPTR)T askPeriod, 0, 0, 0, 0, 0, 0, 0, 0, 0);
taskID—OutputManage=taskSpawn("Output—Task", 120,0,1024*10, (FUN CPTR) TaskO卿utManage, 0, 0, 0, 0, 0' 0, 0, 0, 0);
taskID_InputManage=taskSpawn(〃Input—Task〃' 110,0, 1024*10, (FUNCP TR) TaskI叩utManage, 0, 0, 0, 0, 0, 0, 0, 0, 0);
taskID—ErrManage=taskSpawn(〃ErrManage—Task", 100,0, 1024*10' (FUN CPTR) TaskErrManage, 0, 0, 0, 0, 0, 0, 0, 0, 0);
任务间通信说明
本发明的软件设计框架中采用二进制信号量、互斥信号量、共享内存和消息 队列等通信方式。其中输入以及输出任务与其他任务的通信方式为消息队列,而 周期任务主要通过共享内存方式与其他任务通信。所有任务和程序运行过程中检 测到的故障信息均由消息队列方式通知故障综合任务进行处理。各任务以及程序 间的具体通信设计图如图8所示。其中全局数据均由互斥信号量进行保护。
1权利要求
1、一种机载计算机软件通用框架设计方法,其特征在于该方法具体步骤如下步骤一建立软件开发环境、建立工程(1)建立基于VxWorks操作系统的应用软件开发环境普通PC机做宿主机,机载计算机做目标机,宿主机安装Tornado,目标机能够运行VxWorks操作系统,双方通过以太网、串口建立连接;(2)在Tornado集成开发环境上建立应用软件工程建立步骤运行Tornado→选择File菜单→选择New Project菜单项→选择创建工程类型→设置工程名称和路径→设置开发工具链→生成工程文件→完成工程创建;步骤二建立时间驱动类任务时间驱动类任务由时钟中断发送的二进制信号量周期驱动执行,具体体现为周期任务,实现导航数据转换、控制律计算和遥测数据更新需要周期执行的相关功能;具体实现建立PeriodOperate.c和PeriodOperate.h文件,并建立周期任务入口函数即void TaskPeriod(),该函数首先进行周期任务内部数据初始化,然后进入无限循环,在循环中先获取二进制信号量,如果获取二进制信号量不成功则该任务被堵塞直至获取信号量成功,获取成功后进行控制律计算、导航数据转换和遥测数据更新具体功能的实现;如果有数据需要输出则发送相应输出消息到输出消息队列;步骤三建立事件驱动类任务事件驱动类任务是由内部、外部事件所触发执行的任务,由相应消息队列消息驱动执行,包括输入任务、输出任务、故障综合任务;(1)输入任务输入任务完成各接口数据的输入处理功能具体实现建立InputOperate.c和InputOperate.h文件,并建立输入任务入口函数即void TaskInputManage(),该函数首先进行输入任务内部数据初始化,然后进入无限循环,在循环中先获取输入消息队列消息,如果获取消息不成功则该任务被堵塞直至获取消息成功,获取成功后读取消息对应的标准数据结构数据,然后进行输入数据处理,处理完毕后如果有数据要输出则发送相应输出消息到输出消息队列;(2)输出任务输出任务完成数据输出处理功能具体实现建立OutputOperate.c和OutputOperate.h文件,并建立输出任务入口函数即void TaskOutputManage(),该函数首先进行输出任务内部数据初始化,然后进入无限循环,在循环中先获取输出消息队列消息,如果获取消息不成功则该任务被堵塞直至获取消息成功,获取成功后读取消息对应的标准数据结构数据,然后根据具体接口进行标准数据结构的具体化操作,调用输出接口程序完成数据输出;(3)故障综合任务故障综合任务完成故障的记录、处理功能具体实现建立ErrOperate.c和ErrOperate.h文件,并建立故障综合任务入口函数即void TaskErrManage(),该函数首先进行故障综合任务内部数据初始化,然后进入无限循环,在循环中先获取故障消息队列消息,如果获取消息不成功则该任务被堵塞直至获取消息成功,获取成功后根据具体系统进行故障记录以及故障处理;步骤四建立后台运行类任务后台运行类任务是对实时性要求不高的、在其他任务执行间隙运行的任务,具体体现为检测任务;具体实现建立BitOperate.c和BitOperate.h文件,并建立检测任务入口函数即void TaskBIT(),该函数首先进行检测任务内部数据初始化,然后进入无限循环,在循环进行计算机状态检测、外接设备状态检测,如果检测到故障则发送故障消息到故障消息队列,检测完成后进行延时;步骤五建立时钟中断服务程序在时钟中断服务程序中释放二进制信号量激活周期任务;具体实现在周期任务实现文件PeriodOperate.c和PeriodOperate.h中建立时钟中断服务程序即void TimerISR(),该函数中释放二进制信号量;步骤六建立接口程序(1)输入接口程序是相应接口的中断服务程序,完成相应接口数据输入功能,具体实现在输入任务实现文件InputOperate.c和InputOperate.h中建立输入接口程序即void InputISR_XXX(),具体设备具体命名,进入该程序后,首先进行数据的标准化,然后发送相应输入消息到输入任务进行处理;(2)输出接口程序完成接口数据输出功能具体实现在输出任务实现文件OutputOperate.c和OutputOperate.h中建立输出接口程序即void Output_XXX(),具体设备具体命名,进入该程序后,首先将标准数据结构进行具体化,然后再调用具体设备的输出接口函数完成数据输出;步骤七建立初始化程序进行全局数据初始化、设备接口初始化、信号量创建及初始化、消息队列创建及初始化、时钟中断设置及初始化和任务创建及初始化;具体实现建立Initializtion.c和Initializtion.h文件,并建立初始化函数即void Ini(),该函数首先根据具体系统进行全局数据初始化、设备接口初始化,然后进行信号量创建及初始化、消息队列创建及初始化、时钟中断设置及初始化、任务创建及初始化。
全文摘要
本发明一种机载计算机软件通用框架设计方法,该方法有七个步骤步骤一建立软件开发环境、建立工程;步骤二建立时间驱动类任务;步骤三建立事件驱动类任务;步骤四建立后台运行类任务;步骤五建立时钟中断服务程序;步骤六建立接口程序;步骤七建立初始化程序。本发明将现有机载计算机应用软件所涉及的所有功能进行抽象得出该通用框架,使得在开发具体软件时根据不同需求进行相应任务实现以达到快速开发的目的,并有效增强了现有直接开发方式的可移植性、可靠性以及规范性。该软件通用框架设计方法已经在某飞行器的缩比验证机上得到成功应用,它具有广泛的实用价值和应用前景。
文档编号G06F9/44GK101620535SQ20091009017
公开日2010年1月6日 申请日期2009年7月29日 优先权日2009年7月29日
发明者吕明云, 姜光泰, 明 祝, 郑泽伟 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1