一种混合编程架构方法与流程
本发明涉及编程架构领域,尤其涉及一种混合编程架构方法。
背景技术:
1、在桌面应用软件开发中,越来越多的场景需要在保持界面友好、开发效率高的同时,实现对外部硬件设备的高频通信与实时状态反馈,例如工业自动化领域中对io卡、功率计等设备进行毫秒级的串口或网络轮询,并将采集到的状态数据实时反映在操作界面上,此类应用通常采用解释型编程语言实现界面部分,以获得较高的界面开发效率与较低的样式调整成本,同时由该解释型编程语言自身承担与硬件设备之间的通信轮询、数据解包等底层交互工作。
2、解释型编程语言的多线程执行通常受限于其解释器自身的执行机制,使得多线程无法真正实现多核并行处理;当在此类语言环境中直接执行毫秒级别的高频轮询与数据解包时,该轮询线程与界面主线程共同竞争有限的解释器执行资源,容易造成界面主线程长时间无法响应用户操作,出现界面卡顿甚至短暂无响应的现象,同时解释型编程语言普遍存在动态类型检查与自动垃圾回收机制,在处理字节级的协议解析、数据校验等运算时,执行效率明显低于静态编译型语言,难以稳定保证毫秒级的实时响应,在高频轮询场景下容易出现数据处理滞后或丢帧的问题。
技术实现思路
1、本发明要解决的技术问题是克服现有技术存在的缺陷,本发明提出了一种混合编程架构方法。
2、为解决上述技术问题,本发明采用的技术方案是:一种混合编程架构方法,包括:
3、将编译型语言的运行时环境加载至采用解释型编程语言实现的上层业务处理模块所在的进程空间,加载与采用编译型编程语言实现的底层硬件通信模块对应的动态链接库文件,得到通信接口实例;
4、上层业务处理模块通过事件订阅接口向底层硬件通信模块订阅硬件状态事件,建立事件回调的绑定关系;
5、底层硬件通信模块在独立于上层业务处理模块主线程的线程中,按照预设周期对硬件设备进行轮询采集,对采集到的字节数据进行解封装及校验运算;
6、校验通过且满足预设事件触发条件时,通过该事件回调将硬件状态数据传递至上层业务处理模块,且该传递过程不依赖上层业务处理模块主动查询,由上层业务处理模块的主线程执行相应的界面更新或业务逻辑处理。
7、优选的,所述加载与底层硬件通信模块对应的动态链接库文件,通过反射加载方式实现。
8、优选的,所述底层硬件通信模块内部包括通信处理单元,用于处理与硬件设备之间的数据收发;还包括状态处理单元,用于处理开关量输入输出状态的读取。
9、优选的,对字节数据进行校验运算后,若校验不通过,则丢弃该次采集数据,并等待下一轮询周期继续进行采集。
10、优选的,所述预设事件触发条件为经校验的硬件状态数据与上一次采集得到的硬件状态数据不同。
11、优选的,所述预设周期处于10毫秒至100毫秒的范围内。
12、优选的,所述底层硬件通信模块根据预先配置的连接方式标识,选择采用串口方式或网络方式与硬件设备建立通信连接;采用网络方式时,按照预设的网络通信协议发起连接请求,并采用与串口方式相同的解封装、校验及事件触发流程处理采集到的数据。
13、优选的,所述底层硬件通信模块同时与多个硬件设备建立通信连接,通过线程池的方式为每一个已建立连接的硬件设备分配对应的轮询线程,各轮询线程分别独立执行轮询采集、解封装校验及事件触发过程。
14、优选的,所述底层硬件通信模块被编译为独立的动态链接库文件,能够脱离上层业务处理模块单独进行功能测试,或者被采用其他编程语言实现的上层应用通过跨语言调用方式加载调用,以执行轮询采集、解封装校验及事件触发过程。
15、优选的,所述上层业务处理模块的主线程仅在接收到硬件状态数据时执行相应的界面更新或业务逻辑处理,在底层硬件通信模块进行轮询采集的过程中不占用上层业务处理模块的主线程资源。
16、与现有技术相比,本发明的有益效果包括:
17、1、通过设置采用编译型编程语言实现的底层硬件通信模块在独立于上层业务处理模块主线程的线程中执行轮询采集,避免了高频轮询占用上层业务处理模块主线程资源所导致的界面卡顿,实现了上层业务处理模块界面的持续流畅响应。
18、2、通过设置底层硬件通信模块对字节数据的解封装与校验运算由编译型编程语言实现,保障了高频轮询场景下协议解析处理的实时性,避免了因执行效率不足导致的数据处理滞后,保障了高频轮询场景下协议解析处理的实时性。
1.一种混合编程架构方法,其特征在于,包括:
2.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述加载与底层硬件通信模块对应的动态链接库文件,通过反射加载方式实现。
3.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述底层硬件通信模块内部包括通信处理单元,用于处理与硬件设备之间的数据收发;还包括状态处理单元,用于处理开关量输入输出状态的读取。
4.根据权利要求1所述的一种混合编程架构方法,其特征在于,对字节数据进行校验运算后,若校验不通过,则丢弃该次采集数据,并等待下一轮询周期继续进行采集。
5.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述预设事件触发条件为经校验的硬件状态数据与上一次采集得到的硬件状态数据不同。
6.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述预设周期处于10毫秒至100毫秒的范围内。
7.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述底层硬件通信模块根据预先配置的连接方式标识,选择采用串口方式或网络方式与硬件设备建立通信连接;采用网络方式时,按照预设的网络通信协议发起连接请求,并采用与串口方式相同的解封装、校验及事件触发流程处理采集到的数据。
8.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述底层硬件通信模块同时与多个硬件设备建立通信连接,通过线程池的方式为每一个已建立连接的硬件设备分配对应的轮询线程,各轮询线程分别独立执行轮询采集、解封装校验及事件触发过程。
9.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述底层硬件通信模块被编译为独立的动态链接库文件,能够脱离上层业务处理模块单独进行功能测试,或者被采用其他编程语言实现的上层应用通过跨语言调用方式加载调用,以执行轮询采集、解封装校验及事件触发过程。
10.根据权利要求1所述的一种混合编程架构方法,其特征在于,所述上层业务处理模块的主线程仅在接收到硬件状态数据时执行相应的界面更新或业务逻辑处理,在底层硬件通信模块进行轮询采集的过程中不占用上层业务处理模块的主线程资源。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com