一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于异步通信的软件协作开发方法及分析仪表与流程

2022-05-21 04:56:34 来源:中国专利 TAG:
1.本发明涉及分析仪表软件开发领域,尤其涉及一种基于异步通信的软件协作方法及分析仪表。
背景技术
::2.sf6/h2分析仪表大多涉及显示屏幕,需要人机交互,舒适的软件ui系统能带来更好的体验。传统的仪表应用软件开发,基于不带内存管理单元(mmu,memorymanagementunit)的单片机系统,只能分模块设计程序。具体是将仪表的业务功能和人机界面作为一个程序由人机界面涉及人员进行开发,这样就导致业务和人机交互耦合性强,并且增加界面设计人员的任务负担;而且,工业仪表特别是公司内部的仪表界面风格基本雷同,但是不同仪表业务功能不尽相同,这就导致了程序可移植性差,开发周期长,界面程序排错纠错复杂。技术实现要素:3.本发明的目的是提供一种基于异步通信的软件协作开发方法及分析仪表,提高软件开发效率,减少程序调试难度,不同仪表的程序具有良好的可移植性。4.为了解决上述技术问题,本发明提供的基于异步通信的软件协作开发方法及分析仪表是这样实现的:一种基于异步通信的软件协作开发方法,包括步骤:将分析仪表的嵌入式软件按照功能进行解耦,分为ui界面和业务逻辑;设计所述ui界面程序,实现所述业务逻辑的功能;编写测试程序,对所述业务逻辑的功能进行测试;在所述功能测试成功后,将所述业务逻辑的功能模块编译成动态链接库;将所述动态链接库复制到基于可移植操作系统接口的实时操作系统的文件系统中,并将库路径配置到实时操作系统的环境变量中。5.可选的,所述实现业务逻辑的功能包括如下步骤:完成所述业务逻辑的驱动层,完成所述业务逻辑的核心层,完成所述业务逻辑功的实现层,完成所述业务逻辑的抽象层;所述ui界面通过所述业务逻辑的抽象层调用所述业务逻辑的实现层完成对应的业务逻辑功能。6.可选的,完成所述业务逻辑的驱动层是:完成底层物理外设的初始化,实现数据流读写的操作接口。7.可选的,所述完成所述业务逻辑的核心层是:将所述底层物理外设的初始化和所述数据流读写的方法注册到总线模型框架下,设备模型向上给所述逻辑实现层提供调用接口、向下通过所述总线模型接口访问所述底层物理外设;规划编辑消息队列。8.可选的,所述完成所述业务逻辑的实现层是:完成所述业务逻辑功能的程序编写,所述业务逻辑功能的程序通过所述设备模型接口访问所述底层物理外设,所述业务逻辑功能的程序通过所述消息队列封装出基于异步通信的对外调用接口;所述ui界面通过所述基于异步通信的对外调用接口获取所述业务逻辑功能程序的执行结果。9.可选的,所述实时操作系统是linux系统。10.可选的,在所述将所述动态链接库复制到基于可移植操作系统接口的实时操作系统的文件系统中,并将库路径配置到实时操作系统的环境变量中后,通过ui界面对编写编译的软件功能进行验证,验证成功后,完成所述ui界面和所述业务逻辑的解耦合。11.本发明还提供一种基于异步通信的软件协作开发的分析仪表,包括:ui界面模块,业务逻辑的动态链接库模块和实时操作系统;所述ui界面模块调用所述业务逻辑的动态链接库模块,完成相应的业务逻辑功能;所述业务逻辑相应的动态链接库模块置于所述实时操作系统的文件系统中。12.可选的,所述实时操作系统是linux系统。13.可选的,所述分析仪表是sf6/h2分析仪表。14.本发明提供的基于异步通信的软件协作开发方法及分析仪表,分析仪表的业务逻辑与ui界面分开,ui程序无需关注具体业务逻辑间测差异,由业务逻辑实现具体的功能,相对于现有的ui界面程序和业务逻辑程序混合在一起,本发明减少了软件耦合程度,提高了软件开发效率和质量,减少了开发和维护成本,比如在业务逻辑功能有缺陷需要弥补时候仅仅修改业务逻辑功能程序的动态链接库即可,特别是基于移动蜂窝系统的远程软件缺陷升级时候,可以大幅节省数据流量;且软件的可移植性也大于现有技术中混合在一起的软件。附图说明15.图1是本发明提供的基于异步通信的软件协作开发方法的流程图;图2是本发明的业务逻辑功能的逻辑层结构示意图;图3是本发明的方法开发的软件ui界面程序和业务逻辑功能解耦合的示意图;图4是本发明提供的基于异步通信的软件协作开发方法的分析仪表框架结构图。具体实施方式16.为了使本发明的目的、技术方案及优点更加清楚明白,以下实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。17.本发明基于异步通信的软件协作开发方法,属于嵌入式应用软件开发,可应用于基于可移植操作系统接口(posix,portableoperatingsysteminterface)的实时操作系统(rtos,real-timeoperatingsystem)环境,特别是在基于linux系统的工业仪表上,尤其适用带有触摸屏幕的人机交互仪表上。18.如下,详细说明本发明提供的基于异步通信的软件协作开发方法,如图1所示,是本发明提供的基于异步通信的软件协作开发方法的流程图,包括如下步骤:一种基于异步通信的软件协作开发方法及相关仪表,包括如下步骤:步骤s101、根据仪表功能需求进行嵌入式软件解耦,拆分成ui界面和业务逻辑;步骤s102、设计ui界面程序,根据拆分的业务逻辑实现相应的逻辑功能,也就是完成业务逻辑的功能。19.图2所示f301区域为业务逻辑功能框图,简称lal(logicalabstractionlayer),将业务逻辑的功能分为四层实现,分别是:业务逻辑驱动层、业务逻辑核心层、业务逻辑实现层和业务逻辑抽象层;具体如下步骤:步骤s201、完成业务逻辑驱动层属于业务逻辑功能的内部逻辑驱动层,具体是:完成底层物理外设,如:串口通用异步收发传输器(uart,universalasynchronousreceiver/transmitter)、控制器局域网络(can,controllerareanetwor)通信、以太网socket的初始化,并实现读写数据流的操作接口。本发明实施例中业务逻辑驱动层包含有uart硬件驱动(ll_wrapper_uart_modbus.c),can硬件驱动(ll_wrapper_can.c)和socket硬件驱动(ll_wrapper_socket.c)的初始化。20.步骤s202、完成业务逻辑的核心层属于业务逻辑功能内部的逻辑核心层,完成消息队列库/公共库的规划编辑(lal_queue_message.c)、总线模型(lal_wrapper_core.c)和设备模型(lal_wrapper_dev.c)的实现;s201的逻辑驱动层实现的物理外设的初始化、读写方法等注册到总线模型框架下;设备模型以标准的posixapi提供对上层s203的被调用接口;设备模型接口通过总线模型接口访问s201物理外设驱动。21.本发明异步通信是基于消息队列机制,该步骤中消息队列库/公共库的规划编辑是:封装消息队列的创建,消息发送、消息的阻塞/非阻塞接收,消息队列涉及多线程互斥,通常使用互斥量(mutex)进行数据临界保护。22.本发明实施例提供基于嵌入式linux系统的消息队列的创建,在gnugcc平台,使用__sync_fetch_and_add系列函数,可以实现的无锁化编程,避免出现死锁问题,实现更高效的临界数据保护;使用信号量(sem)进行消息体的阻塞发送和接收;队列接口实现如下:message_queue_init/*创建消息队列,并指定队列消息体容量*/message_queue_destroy/*销毁消息队列*/message_alloc/message_alloc_blocking/*从消息队列中申请一条空闲的消息体*/message_free/*释放消息队列中某条消息体*/message_queue_write/*向消息队列中写入一条消息体*/message_queue_tryread/*从消息队列中尝试读取一条消息体(非阻塞)*/message_queue_read_blocking/*从消息队列中尝试读取一条消息体(阻塞)*/如上所述消息队列可以创建多项实例,逻辑业务实现层s203调用如上的消息队列公共接口,创建用于逻辑业务内部通信的消息队列,实现逻辑业务动态库.so内部的线程通信;创建s204中与ui界面程序线程通信的消息队列。s203lal消息队列接口函数lal_message_get()通过消息队列机制向ui界面程序反馈执行结果,或者突发的事件消息。23.步骤s203、完成业务逻辑的实现层属于业务逻辑功能内部图的逻辑实现层,即lal业务实现(lal_wrapper_example.c/lal_process.c),主要实现设备的注册、读写和线程操作,线程操作即业务逻辑功能的程序段编写,和lal消息队列接口(函数:lal_message_get);需要完成s101拆分的业务逻辑功能的线程编写,根据业务逻辑功能多少分为单个线程,或多个线程。24.业务逻辑线程需要访问底层物理外设驱动的时候,可以通过步骤s202的设备模型接口访问外设,该层在完成逻辑功能后,并通过s202提供的消息队列功能,封装出标准的基于异步通信的对外调用接口,把逻辑功能的执行结果反馈给调用者。25.步骤s204、完成业务逻辑抽象层抽象的对外接口(lal_wrapper_ext_qt.c),是留给人机交互(qt)的接口。主要完成了业务逻辑的对外标准接口的抽象,ui界面通过业务逻辑抽象层调用业务逻辑实现层完成对应的业务逻辑功能。比如:界面程序需要发送一条校准数据到仪表测量模组,则可以调用该层抽象的标准业务接口”仪表校准接口”完成该项功能,该”仪表校准接口”业务接口通过s202提供的消息队列功能将该条消息发送给s203业务逻辑实现层来处理,s203通过s202步骤的设备模型最终访问底层物理外设,完成相应的功能;步骤s205、步骤206展示了界面程序和业务逻辑程序的数据流交互方向。26.步骤s103、在完成业务逻辑的功能后,需要编写测试程序,测试程序模拟调用业务逻辑提供的s205、s206中接口,并给予激励数据,对业务逻辑进行功能性测试;功能性测试成功后,执行步骤s105。27.步骤s104、是为s205、s206提供的被调用接口;步骤s105、将业务逻辑的功能模块编译成动态链接库(.so)业务逻辑的功能模块即步骤102中完成的业务逻辑功能模块,一个业务逻辑对应一个动态链接库。如图3所示。28.本发明实施例提供一个编译动态链接库的实施例:如下:编写编译规则makefile文件,通过gnumake工具编译出业务逻辑的动态链接库;具体地,以串口uart,modbusrtu协议为例,动态链接库so文件需要编写如下make规则:basename:=liblaltarget:=$(basename).socflags =-fpicldflags =-shared%.o:%.c@$(cc)$(cflags)-c$《-o$@&&echo"cc$@"$(target):$(objs_ext)modbus-arm.a@$(cc)$(ldflags)-o$@$^&&echo"gen$@"其中,basename,target,objs_ext,cc,cflags,ldflags均为makefile中变量名字,basename指定动态库的名字,target指定动态库的名字和扩展名,objs_ext指定业务逻辑功能图f301中所有*.c/*.cpp文件的目标文件,modbus-arm.a为编译好的modbusrtu静态库文件,cc指定平台编译器,cflags指定编译选项,-fpic指定编译目标文件需要编译成位置无关码,ldflags指定链接选项,-shared指定链接成共享库,也即为动态库。29.步骤s106、将业务逻辑的功能模块编译成的动态链接库(.so)拷贝到基于可移植操作系统接口的实时操作系统的文件系统中,并将库路径配置到实时操作系统的环境变量中。30.本发明实施例使用的实时操作系统是:linux系统。31.步骤s107、仪表ui界面程序调用业务功能模块的对外接口s205完成业务逻辑,并通过异步队列形式s206获取业务的执行结果;步骤s108、仪表软件功能验证,功能验证完毕,ui界面程序和业务逻辑功能解耦合完成。32.图3是本发明的方法开发的软件ui界面程序和业务逻辑功能解耦合的示意图。其中界面进程即ui界面程序,业务逻辑1动态库即第一个业务逻辑的动态链接库,后面以此类推;人机交互也属于ui界面程序,是人机交互的接口。33.本发明还提供基于异步通信的软件协作开发的分析仪表,如图4所示。34.分析仪表包括:ui界面模块100,业务逻辑的动态链接库模块200和实时操作系统300;所述ui界面模块100调用所述业务逻辑的动态链接库模块200,完成相应的业务逻辑功能;所述业务逻辑的动态链接库模块置于所述实时操作系统的文件系统中。ui界面模块通过业务逻辑功能模块的对外接口调用动态链接库模块,完成相应的业务逻辑,通过业务逻辑功能模块的异步队列通信的对外接口获取业务逻辑功能程序的执行结果。35.业务逻辑的动态链接库,根据仪表的功能,也就是业务逻辑的功能划分,有一个动态链接库或多个动态链接库,如图3所示的ui界面与业务逻辑的动态链接库的示意图。36.本发明实施例所用的实时操作系统是linux系统,linux系统加载在分析仪表的arm-linux工控主机中,linux是符合posix标准的操作系统。37.本发明实施例的分析仪表是sf6/h2分析仪表。38.本发明提供一种基于异步通信的软件协作开发方法及分析仪表,利用消息队列机制完成单进程中不同线程的解耦,ui程序无需关注具体仪表间业务逻辑的差异,由业务逻辑实现具体的仪表业务逻辑功能,ui程序负责通过异步队列机制进行数据交互,然后将交互展示;本方法还具体阐述了业务逻辑的实现方法和内部机制。相较于现有技术,本方法可以实现业务功能存在缺陷,或者有升级改进时,可以远程或者本地直接升级业务逻辑动态库文件,无需升级包含ui界面的升级包,这样,既减少了软件耦合程度,提高了软件开发效率和质量,减少了开发和维护成本,也可以在功能缺陷弥补时候仅仅提供业务逻辑动态库即可,特别是基于移动蜂窝网络的远程软件缺陷升级时候,可以大幅节省数据流量。39.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献