一种嵌入式软件模块化的构建方法及装置与流程

文档序号:12119741阅读:404来源:国知局
一种嵌入式软件模块化的构建方法及装置与流程

本发明属于嵌入式计算机技术领域,特别是涉及一种嵌入式软件模块化的构建方法及装置。



背景技术:

由于各种嵌入式应用目标存在较大的差异,使得嵌入式硬件及操作系统也各不相同,即使开发同样功能的应用程序,也需要针对特定的嵌入式平台上进行编程;造成用户在应用软件的开发上需要花费大量的时间和精力,并且开发出来的应用软件还不能移植到其他的嵌入式硬件平台;因此,嵌入式应用软件的代码不具备重用性,这是嵌入式开发面临的最大的瓶颈。

目前嵌入式系统主要存在以下几点问题:

1.嵌入式系统最大的特征就是差异性,应用于不同场合的嵌入式产品及设备,无论是从形态或功能上看,都有很大的不同。

2.常规的开发过程中,用户整理需要并开始进行软件设计和代码编写,从实际情况来看,由于需求的千差万别及随时可能发生的需求变化,用户代码基本上没有重用性,这就意味如果需求发生一定的变化,整个的代码可能都会重新编写,这不但延误了用户的开发进度,而且影响了代码的健壮性和可靠性,为用户设备的功能实现带来了巨大的风险。

3.嵌入式系统软件的开发同底层的设备驱动程序紧密相关。用户要实现对硬件设备的操作就必须通过设备驱动程序来完成,常规开发中都是由用户程序直接进行设备驱动程序的调用,这种方式要求应用程序的开发人员需要对底层的硬件设计及该设备的驱动程序有足够的了解;另外,在进行设备驱动程序的访问时,驱动程序提供的软件接口没有通用性,用户在应用程序调用时很不方便。

4.设备驱动程序可以被定义为一个良好的内部编程接口,完全隐藏设备的工作细节,用户的操作是通过一组标准化的调用来执行,设备驱动程序将这些调用映射到作用于实际硬件的设备特有操作上。这是一个看似完美的调用过程,但实际上由于硬件设备的千差万别以及不同程序员的编程习惯,针对同一个设备,不同的程序员编写出的驱动程序可能风格迥异,提供的操作接口可能不尽相同。这对于用户操作而言显然不具有通用性,当用户编写的应用程序需要调用驱动程序功能的时候,用户还必须考虑用哪一个函数功能,传递哪几个参数,是不是需要返回值等细节问题,显然影响了软件代码的开发速度和通用性。



技术实现要素:

为了解决上述问题,本发明提出了一种嵌入式软件模块化的构建方法及装置,在嵌入式操作系统和用户应用程序之间构建一个中间层,为用户提供在嵌入式系统中具有较强通用性的软件模块,使开发和操作过程更加简单方便。

为达到上述目的,本发明采用的技术方案是:

一种嵌入式软件模块化的构建方法,包括步骤:

在嵌入式系统的嵌入式操作系统和用户应用程序之间构建一个中间层软件模块;

在所述软件模块中构建具有多个存储空间的软件数据库;

将嵌入式系统的软件进行功能性分类;

对每一类的软件构建代码,并将代码构成的管理模块存储在相应的存储空间内;

根据用户需求调用相应存储空间中的软件代码;

输出软件代码至相应的硬件设备。

进一步的是,所述管理模块包括相互独立的工业总线通信管理模块、网络通信管理模块、模拟IO设备管理模块、数字IO设备管理模块、LED设备管理模块、蜂鸣器设备管理模块、日期及时间管理模块、看门狗设备管理模块、PWM设备管理模块和高精度定时器设备管理模块。

这些软件模块基本涵盖了嵌入式设计开发中常用的功能,为用户提供标准的开发接口,为用户进行开发提供了便利的手段,用户可以集中精力进行系统整体逻辑功能的设计而不纠结于单个模块功能的实现。

进一步的是,所述工业总线通信管理模块封装满足串口通信功能的串口操作函数;用于嵌入式系统的串行通信;

所述调用串口操作函数包括:打开并初始化串口操作函数,此函数打开并初始化串口功能;从串口读数据函数;向串口写数据函数;串口关闭函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式串口通信,而不必关心串口的具体工作原理和工作模式;从而大大节省基于串口的开发时间和降低开发难度。

进一步的是,所述网络通信管理模块包括TCP动态库和UDP动态库,分别针对面向连接和非连接网络通信需求;用于嵌入式系统的网络通信;

所述TCP动态库包括:客户机连接函数:用于客户机向服务器发出连接;发送数据函数:用于向TCP套接口发送数据;接收数据函数:用于从TCP套接口接收数据;设置服务器为监听模式函数:用于将服务器端设为监听模式;服务器接收连接请求函数:从服务器等待队列取出客户端连接请求;关闭套接字函数;

所述UDP动态库包括:建立数据报套接字函数;建立服务器端套接字函数:初始化服务器套接字结构地址,绑定服务器端口号;初始化服务器地址结构函数:向服务器端发送数据;初始化服务器地址结构函数:从服务器接收数据;关闭套接字函数;附带的系统函数Ⅰ:用于发送数据;附带的系统函数Ⅱ:用于接收数据。

本动态库并不是将所有的TCP/UDP协议通信所用到的系统函数进行封装,而是为了提高编程效率,将一些繁琐的诸如对套接字地址结构初始化以及相关联的收发数据之类的问题进行了封装。

进一步的是,所述模拟IO设备管理模块包括满足模拟IO设备的输入输出功能函数;包括ADC设备输入输出功能函数和DAC设备输入输出功能函数;用于嵌入式系统的模拟IO设备管理;

所述ADC设备输入输出功能函数包括:设备打开函数;设备关闭函数;ADC设备配置函数;获取ADC设备当前配置函数;读取ADC设备采样值;转换采样值函数;

所述DAC设备输入输出功能函数包括:设备打开函数;设备关闭函数;向DAC输出数据函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的模拟IO设备的打开、关闭和基本的输入输出功能,而不必关心该模拟IO设备的具体工作原理和工作模式,节省了模拟IO设备管理的开发时间,降低了开发难度。

进一步的是,所述数字IO设备管理模块包括满足数字IO设备的输入输出功能函数;包括简单数字IO设备的输入输出功能函数和外接键盘设备输入输出功能函数;用于嵌入式系统的数字IO设备管理;

所述简单数字IO设备的输入输出功能函数包括:设备打开函数;设备关闭函数;清空缓冲区函数;读取简单数字IO值函数;置简单数字IO值函数,此函数提供设置当前数字IO设备值功能;

所述外接键盘设备输入输出功能函数包括:设备打开函数;设备关闭函数;清空缓冲区函数;读取键盘值函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的数字IO设备的打开、关闭和基本的输入输出功能,而不必关心该数字IO设备的具体工作原理和工作模式,节省了数字IO设备管理的开发时间,降低了开发难度。

进一步的是,所述LED设备管理模块包括满足LED设备的输出功能函数;用于嵌入式系统的LED设备管理;

所述LED设备的输出功能函数包括:设备打开函数;设备关闭函数;清空缓冲区函数;置LED设备显示值函数;

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的LED设备的打开、关闭和基本的显示输出功能,而不必关心该LED设备的具体工作原理和工作模式,节省了LED设备管理的开发时间,降低了开发难度。

所述蜂鸣器设备管理模块包括满足蜂鸣器设备的输出功能函数;用于嵌入式系统的蜂鸣器类设备管理;

所述蜂鸣器设备的输出功能函数包括:设备打开函数;设备关闭函数;置蜂鸣器设备值函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的蜂鸣器设备的打开、关闭和基本的蜂鸣功能,而不必关心该蜂鸣器设备的具体工作原理和工作模式,节省了蜂鸣器设备管理的开发时间,降低了开发难度。

进一步的是,所述日期及时间管理模块包括满足日期及时间的基本读入和设置功能函数;用于嵌入式系统的日期及时间模块的管理;

所述日期及时间的基本读入和设置功能函数包括:读取日期及时间函数;读取日期函数;读取时间函数;设置日期及时间函数;设置日期函数;设置时间函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的日期及时间的读取设置等功能,而不必关心该日期及时间模块的具体工作原理和工作模式,节省了日期及时间管理功能的开发时间,降低了开发难度。

所述看门狗设备管理模块满足看门狗设备的输入输出功能函数;

所述看门狗设备的输入输出功能函数包括:设备打开函数;设备关闭函数;使能看门狗设备函数;禁用看门狗设备函数;喂狗操作函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的看门狗设备的打开、关闭和基本的使能操作等功能,而不必关心该看门狗设备的具体工作原理和工作模式,节省了看门狗设备管理的开发时间,降低了开发难度。

进一步的是,所述PWM设备管理模块包括满足PWM脉冲宽度调制需要的基本功能函数;用于嵌入式系统的PWM设备管理;

所述PWM脉冲宽度调制需要的基本功能函数包括:设备打开函数;设备关闭函数;PWM设备配置函数;获取PWM设备当前配置函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的PWM设备的打开、关闭和基本的输入输出功能,而不必关心该PWM设备的具体工作原理和工作模式,节省了PWM设备管理的开发时间,降低了开发难度。

所述高精度定时器设备管理模块包括满足高精度定时器需要的基本功能函数;用于嵌入式系统的高精度定时器设备管理;

所述高精度定时器需要的基本功能函数包括创建高精度定时器函数;删除定时器函数;高精度延时函数。

用户只需正确调用库中的函数,即可实现一般性嵌入式系统的高精度定时器的基本功能,而不必关心该高精度定时器的具体工作原理和工作模式,节省了高精度设备管理的开发时间,降低了开发难度。

另一方面,本发明还提供了一种嵌入式软件模块化的构建装置,包括处理器、存储器、调试接口和调用接口,所述处理器上分别连接存储器、调试接口和调用接口;

所述处理器,用于在存储器中调取相应的管理模块,并管理整个装置运行;

所述调试接口,用于开发人员向存储器录入更新代码;

所述存储器,用于存储软件数据库;

所述调用接口,连接外部工控机处理器,用于工控机在装置中调用所需管理模块。

采用本技术方案的有益效果:

嵌入式软件模块化的构建装置形成了嵌入式系统的模块化中间层,在系统底层实现了大多数用户会用到的基本功能,向下与特定硬件平台的驱动程序接口,向上为用户提供统一的编程接口,用户进行系统开发的时候只需通过标准接口调用模块函数即可实现特定功能。为用户统一了不同硬件平台的差异性,从而实现嵌入式系统的快速开发。另外,模块化的方式为系统的后期维护升级也带来了便利,系统功能的调整可以在不修改用户应用程序的情况下更新模块中的函数即可。

1.通过对嵌入式应用进行归纳与分类,抽象出不同领域嵌入式应用系统的共性,开发涵盖主流嵌入式微处理器及嵌入式操作系统、满足绝大多数应用的嵌入式系统硬件平台。本发明提出的方法能够满足绝大多数应用需求的嵌入式硬件系统开发平台,对加快用户产品开发,缩短产品上市时间,占领市场先机,具有重要意义。

2.本发明通过将大多数嵌入式系统的基本应用及常见的扩展应用设计成独立的软件模块,并依据系统应用的共性实现模块的功能。这些软件模块基本涵盖了嵌入式设计开发中常用的功能,为用户提供标准的开发接口,为用户进行开发提供了便利的手段,用户可以集中精力进行系统整体逻辑功能的设计而不纠结于单个模块功能的实现。并且能够实现在系统需求发生变化,用户仅通过调整对软件模块的调用方式来调整自己的系统功能,使得用户可以尽可能少地重新编写代码,提高了嵌入式系统的开发进度,并保证了用户可以快速完成系统开发。

3.本发明将软件模块化,还可以屏蔽掉驱动程序的实现细节,用户仅需编写应用程序访问统一的模块函数接口,并通过事先定义好的软件模块达到访问硬件的目的,使开发过程更加便捷。

4.本发明规范定义设备驱动程序和模块功能函数间的接口,无论是在那种嵌入式硬件平台上,我们要求设备驱动程序中针对设备的特有操作遵循固有约定,定义统一的返回变量;软件模块的功能函数也按照约定实现标准化的调用。因此,当用户程序调用软件模块中的函数功能时,可以不关心设备硬件平台的类型,不关心驱动程序的编写细节,只需要完成对软件模块的功能调用就可以实现对实际设备的操作过程,这样为用户的应用程序开发屏蔽了底层系统的差异性,实现应用程序设计的跨平台功能,做到程序的一次编写处处可用,提高的软件系统的开发效率,并节约了开发时间。

附图说明

图1为本发明的一种嵌入式软件模块化的构建方法的结构层次图;

图2为本发明的一种嵌入式软件模块化的构建方法及装置方法流程示意图;;

图3为本发明的一种嵌入式软件模块化的构建装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步阐述。

在实施例一中,参见图1和图2所示,本发明提出了一种嵌入式软件模块化的构建方法,包括步骤:

在嵌入式系统的嵌入式操作系统和用户应用程序之间构建一个中间层软件模块;

在所述软件模块中构建具有多个存储空间的软件数据库;

将嵌入式系统的软件进行功能性分类;

对每一类的软件构建代码,并将代码构成的管理模块存储在相应的存储空间内;

根据用户需求调用相应存储空间中的软件代码;

输出软件代码至相应的硬件设备。

在实施例二中,在实施例一的基础上,所述管理模块包括相互独立的工业总线通信管理模块、网络通信管理模块、模拟IO设备管理模块、数字IO设备管理模块、LED设备管理模块、蜂鸣器设备管理模块、日期及时间管理模块、看门狗设备管理模块、PWM设备管理模块和高精度定时器设备管理模块。

这些软件模块基本涵盖了嵌入式设计开发中常用的功能,为用户提供标准的开发接口,为用户进行开发提供了便利的手段,用户可以集中精力进行系统整体逻辑功能的设计而不纠结于单个模块功能的实现。

作为上述实施例的优化方案,所述工业总线通信管理模块封装满足串口通信功能的串口操作函数;用于嵌入式系统的串行通信;

所述调用串口操作函数包括:打开并初始化串口操作函数,此函数打开并初始化串口功能;从串口读数据函数;向串口写数据函数;串口关闭函数。

具体实施时:

1)打开并初始化串口函数:int OpenCom(char*dev,char*configs,int mode);

2)从串口读数据函数:ReadCom(int fd,char*buffer,unsigned int len,unsigned long timesout);

3)向串口写数据函数:WriteCom(int fd,char*buffer,unsigned int len,unsigned long timesout);

4)串口关闭函数:int CloseCom(int fd)。

作为上述实施例的优化方案,所述网络通信管理模块包括TCP动态库和UDP动态库,分别针对面向连接和非连接网络通信需求;用于嵌入式系统的网络通信;

所述TCP动态库包括:客户机连接函数:用于客户机向服务器发出连接;发送数据函数:用于向TCP套接口发送数据;接收数据函数:用于从TCP套接口接收数据;设置服务器为监听模式函数:用于将服务器端设为监听模式;服务器接收连接请求函数:从服务器等待队列取出客户端连接请求;关闭套接字函数;

具体实施时:

1)客户机连接函数:int ConnectServce(char*addr);

2)发送数据函数:int SendData(int fd,const void*buf,int len,int mode);

3)接收数据函数:intRecvData(int fd,void*buf,int len,int mode);

4)设置服务器为监听模式函数:int SetServce(int queulen,int port);

5)服务器接收连接请求函数:int GetRequest(int fd,struct sockaddr_in client);

6)关闭套接字函数:int CloseSock(int fd)。

所述UDP动态库包括:建立数据报套接字函数;建立服务器端套接字函数:初始化服务器套接字结构地址,绑定服务器端口号;初始化服务器地址结构函数:向服务器端发送数据;初始化服务器地址结构函数:从服务器接收数据;关闭套接字函数;附带的系统函数Ⅰ:用于发送数据;附带的系统函数Ⅱ:用于接收数据。

具体实施时:

1)建立数据报套接字函数:Socket();

2)建立服务器端套接字函数:SetServce(int port);

3)初始化服务器地址结构函数:SendSer(char*addr,int sockfd,const void*buf,int len,int mode);

4)初始化服务器地址结构函数:RecvSer(char*addr,int sockfd,void*buf,int len,int mode);

5)关闭套接字函数:CloseSock(int fd);

6)附带的系统函数Ⅰ:sendto(int sockfd,const void*buf,size_t len,int f lags,const struct sockaddr*to,int addrlen);

7)附带的系统函数Ⅱ:recvfrom(int sockfd,void*buf,size_t len,int f lags,struct sockaddr*from,size_t*addrlen)。

作为上述实施例的优化方案,所述模拟IO设备管理模块包括满足模拟IO设备的输入输出功能函数;包括ADC设备输入输出功能函数和DAC设备输入输出功能函数;用于嵌入式系统的模拟IO设备管理;

所述ADC设备输入输出功能函数包括:设备打开函数;设备关闭函数;ADC设备配置函数;获取ADC设备当前配置函数;读取ADC设备采样值;转换采样值函数;

具体实施时:

1)设备打开函数:int OpenAdc(char*dev,int mode);

2)设备关闭函数:int CloseAdc(int fd);

3)ADC设备配置函数:cyg_err_t SetAdcCfg(int fd,unsigned int cmd,char*buffer,unsigned int len);

4)获取ADC设备当前配置函数:cyg_err_t GetAdcCfg(int fd,unsigned int cmd,char*buffer,unsigned int*len);

5)读取ADC设备采样值:cyg_err_t ReadAdcSampling(int fd,unsigned int channel,cyg_adc_sample*buffer,unsigned int*len,int timesout);

6)转换采样值函数:cyg_err_t ConvAdcValue(cyg_adc_sample*buffer,unsigned int len,float*values,struct_sampl_to_float*keys)。

所述DAC设备输入输出功能函数包括:设备打开函数;设备关闭函数;向DAC输出数据函数。

具体实施时:

1)设备打开函数:int OpenDac(char*dev,int mode);

2)设备关闭函数:int CloseDac(int fd);

3)向DAC输出数据函数:cyg_err_t WriteDacVal(int fd,unsigned char chan,float value,struct_float_to_dacout*keys)。

作为上述实施例的优化方案,所述数字IO设备管理模块包括满足数字IO设备的输入输出功能函数;包括简单数字IO设备的输入输出功能函数和外接键盘设备输入输出功能函数;用于嵌入式系统的数字IO设备管理;

所述简单数字IO设备的输入输出功能函数包括:设备打开函数;设备关闭函数;清空缓冲区函数;读取简单数字IO值函数;置简单数字IO值函数,此函数提供设置当前数字IO设备值功能;

具体实施时:

1)设备打开函数:int OpenDio(char*dev,int mode);

2)设备关闭函数:int CloseDio(int fd);

3)清空缓冲区函数:cyg_err_t FlushDio(int fd);

4)读取简单数字IO值函数:cyg_err_t GetDioValue(int fd,unsigned short*keyValue,unsigned char*status);

5)置简单数字IO值函数:cyg_err_t SetDioValue(int fd,unsigned short*keyValue)。

所述外接键盘设备输入输出功能函数包括:设备打开函数;设备关闭函数;清空缓冲区函数;读取键盘值函数。

具体实施时:

1)设备打开函数:int OpenKbd(char*dev,int mode);

2)设备关闭函数:int CloseKbd(int fd);

3)清空缓冲区函数:cyg_err_t FlushKbd(int fd);

4)读取键盘值函数:cyg_err_t GetKeyValue(int fd,unsigned short*keyValue,unsigned char*status)。

作为上述实施例的优化方案,所述LED设备管理模块包括满足LED设备的输出功能函数;用于嵌入式系统的LED设备管理;

所述LED设备的输出功能函数包括:设备打开函数;设备关闭函数;清空缓冲区函数;置LED设备显示值函数;

具体实施时:

1)设备打开函数:int OpenDis(char*dev,int mode);

2)设备关闭函数:int CloseDis(int fd);

3)清空缓冲区函数:cyg_err_t FlushDis(int fd);

4)置LED设备显示值函数:cyg_err_t SetDisValue(int fd,unsigned short*disPosition,unsigned short*disValue)。

作为上述实施例的优化方案,所述蜂鸣器设备管理模块包括满足蜂鸣器设备的输出功能函数;用于嵌入式系统的蜂鸣器类设备管理;

所述蜂鸣器设备的输出功能函数包括:设备打开函数;设备关闭函数;置蜂鸣器设备值函数。

具体实施时:

1)设备打开函数:int OpenBuzzer(char*dev,int mode);

2)设备关闭函数:int CloseBuzzer(int fd);

3)置蜂鸣器设备值函数:int IocltBuzzer(int fd,unsigned int cmd,int during,int times)。

作为上述实施例的优化方案,所述日期及时间管理模块包括满足日期及时间的基本读入和设置功能函数;用于嵌入式系统的日期及时间模块的管理;

所述日期及时间的基本读入和设置功能函数包括:读取日期及时间函数;读取日期函数;读取时间函数;设置日期及时间函数;设置日期函数;设置时间函数。

具体实施时:

1)读取日期及时间函数:cyg_err_t GetDateTime(unsigned short data[]);

2)读取日期函数:cyg_err_t GetDate(unsigned short data[]);

3)读取时间函数:cyg_err_t GetTime(unsigned short data[]);

4)设置日期及时间函数:cyg_err_t SetDateTime(unsigned short data[]);

5)设置日期函数:cyg_err_t SetDate(unsigned short data[]);

6)设置时间函数:cyg_err_t SetTime(unsigned short data[])。

作为上述实施例的优化方案,所述看门狗设备管理模块满足看门狗设备的输入输出功能函数;

所述看门狗设备的输入输出功能函数包括:设备打开函数;设备关闭函数;使能看门狗设备函数;禁用看门狗设备函数;喂狗操作函数。

具体实施时:

1)设备打开函数:int OpenWtd(char*dev,int mode);

2)设备关闭函数:int CloseWtd(int fd);

3)使能看门狗设备函数:int EnableWtd(int fd,int TimeOut);

4)禁用看门狗设备函数:int DisableWtd(void);

5)喂狗操作函数:int FeedWtd(void)。

作为上述实施例的优化方案,所述PWM设备管理模块包括满足PWM脉冲宽度调制需要的基本功能函数;用于嵌入式系统的PWM设备管理;

所述PWM脉冲宽度调制需要的基本功能函数包括:设备打开函数;设备关闭函数;PWM设备配置函数;获取PWM设备当前配置函数。

具体实施时:

1)设备打开函数:int OpenPWM(char*dev,int mode);

2)设备关闭函数:int ClosePWM(int fd);

3)PWM设备配置函数:cyg_err_t SetPWMCfg(int fd,unsigned int cmd,unsigned char chan,float data);

4)获取PWM设备当前配置函数:cyg_err_t GetPWMCfg(int fd,unsigned int cmd,unsigned char chan,int*buffer)。

作为上述实施例的优化方案,所述高精度定时器设备管理模块包括满足高精度定时器需要的基本功能函数;用于嵌入式系统的高精度定时器设备管理;

所述高精度定时器需要的基本功能函数包括创建高精度定时器函数;删除定时器函数;高精度延时函数。

1)创建高精度定时器函数:int GreateHighResTimer(HFUNC handler,timer_t*timerid,unsigned int nsecs,unsigned char mode);

2)删除定时器函数:int DelHighResTimer(timer_t timerid);

3)高精度延时函数:int Userusdelay(unsigned int usecs)。

为配合本发明方法的实现,基于相同的发明构思,如图3所示,本发明还提供了一种嵌入式软件模块化的构建装置,包括处理器、存储器、调试接口和调用接口,所述处理器上分别连接存储器、调试接口和调用接口;

所述处理器,用于在存储器中调取相应的管理模块,并管理整个装置运行;

所述调试接口,用于开发人员向存储器录入更新代码;

所述存储器,用于存储软件数据库;

所述调用接口,连接外部工控机处理器,用于工控机在装置中调用所需管理模块。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1