
数控专栏CNC Seminar
数控系统中GUI软件平台设计和实现
杨文锦王传兵
(武汉华中数控股份有限公司,湖北武汉430223)
2017年第9期
摘要:在嵌入式系统中,人机交互GUI一般采用既有的开源系统。自主设计和实现了一种应用于嵌入式
数控系统中的跨平台GUI组件,采用面向对象中设计模式的软件设计方法,增加了系统的稳定性和可复用性,缩短设计周期:并创新性地利用ARM的NEON指令集功能,增强显示效率。
关键词:GUI;设计模式;ARMNEON
中图分类号:TP31
文献标识码:A
DOI:10.19287/j. cnki. 1005 2402. 2017. 09. 036
Design and implementation of GUI platform in NC system
YANG Wenjin,WANG Chuanbing
(Wuhan Huazhong Numerical Control Co.,Ltd.,Wuhan 430223,CHN)
Abstract: In the embedded system, the open source system is usually applied in HMI GUIL. Using the object - ori-
ented design pattem, a cross platform GUI component is designed and realized in the embedded CNC system, which can increase the reliability and reusability, shorten the design cycle. In addition, NEON instruction set of ARM is used to improve the display efficiency
Keywords: GUI; design mode; ARM NEON
在嵌人式系统中,人机交互GUI一般采用Qt、Wx-Widget或miniGUI等现有的开源系统,这些开源GUI 系统主要针对通用的人机交互需求,难以满足数控系统中CUI高效刷新的需求特点。本文自主设计和实现了种应用于数控系统中的跨平台GUI组件,采用了面向对象中设计模式的软件设计方法,增强了软件的可靠性和可复用性,缩短设计周期:并创新性地利用
ARM的NEON指令集功能,增强显示效率。 1GUI系统框架
本文针对数控系统中要求GUI具备跨平台和高效的特点,采用C语言开发,详细设计了GUI的系统框架。如图1所示,将整个软件系统分为3个层次,分别为基本平台层、消息循环层和窗体控件层。
基础平台层包含以下3个方面:05_inteface为平台适配层,封装与操作系统相关的函数,为上层提供统一的接口。gui_backend为显示后端和输入的抽象,产生不同的显示接口和输人设备。gui_canvas为画布封装,提供不同的绘图函数,该接口的现实需要和具体的显示后端一致。
消息循环层包含事件源和主循环部分,将所有的事件源抽象为gui_source_t的接口类,gui_source_idle 为空闲事件源;gui_source_timer为定时器;gui_source primary为主事件源,处理输人和刷新事件。所有的事件源都要求实现下列函数:gui_source_get_fd用于获取事件源文件描述符;gui_souce_check检查事件源的等待时间;gui_source_dispatch用于处理事件。本文采用事件驱动方式的消息处理方式,主循环(见图2)中实现以下函数:gui_main_loop_run运行主循环;gui_main_loop_quit退出主循环;gui_main_loop_add_source增加事件源;gui_main_loop_remove_source删除事件源。
在主消息循环函数gui_main_loop_run中,需要遍历所有的事件源gui_source_t,计算最小的等待时间和统计事件源的文件描述符,并通过操作系统的系统调用函数select进行等待,事件产生后select退出阻塞状态,检查事件源并调用gui_source_dispatch进行事件处理。
窗体控件层采用组合模式,控件的抽象基类为gui_widget_t,所有的窗体和控件全部派生自该类。gui window和gui_dialog分别应用于窗口和对话框程序。
*国产高档数控机床与数控系统在飞机筋助梁等加工单元中的应用(2013ZX04001-021)
·174
万方数据
制造技术点机东”