我遇到个需求:
目标:开发一个嵌入式操作系统任务动态加载、任务程序开发、时序分析(可调度性分析)、调度仿真和一键下载,的一个拖拽可视化,所见即所得,易于操作的集成开发环境。
内部原理:qt实现控件拖拽,连线,任务参数配置(周期,优先级,内存需求等),c语言程序开发,可调度性分析,任务调度仿真,串口实现.bin文件下载。后台调用gcc进行c语言程序编译,把编译结果信息定位输出到我们的控制台。
效果:方便用户了操作,提供了友好的可视化任务开发,理论分析,仿真和下载的过程,减少用户的的工作量,从而提高用户的工作效率。
下面就是软件界面:(通过 拖拽左边的控件到右侧区域,最右侧会显示该控件的属性配置,然后端口连线,类似Visio,可以拖拽无限多个元件)
软件架构设计
软件设计核心思想:尽量利用qt的界面设计功能,便捷设计出容易更改的widget,,在此基础上,再进行共性在基类提取。
ClassModel类表示创建出一个通用的模型(此模型为一种抽象模型(在定义中定义了纯虚函数(基类声明即可,不需要定义,但派生类必须实现该函数,否则报错),所以此类又叫抽象类,是不能实例化的),实例化出来不是实体节点),此模型为所有任务模型(实例化出来是一个实体节点)、构建器模型、VZOP分析器等模型的基础。继承关系如下图所示:
支持的功能
- 控件可视化拖拽与连线,无限多个控件拖拽
- 非法连接检测
- 控件属性配置
- 任务app应用代码开发与
- 任务代码编译,头文件自动搜索,自定义宏配置,makefile自动生成
- 代码编写语法高亮,代码提示
- 任务集时序的理论分析,主要是可调度性分析保证实时任务的可调度性,保障了实时系统的安全性与可靠性
- 创新的任务可调度性分析算法VZOP,实验表明,处于业界领先水平
- 任务调度仿真,支持多核,分区调度,调度过程动态展示
- 多个任务编译目标二进制文件串口一键下载,封装了下载协议
- 控制台交互
- 工程保存和导入,完全还原控件连接关系和所有参数配置
目前我仍然在持续开发中......
这是我的其它软件
C++语言Qt实现控件拖拽和连线类似可视化操作Simulink仿真类软件 电路仿真 和模型驱动等软件
代码简单展示
大概10000行代码,小巧精悍,麻雀虽小五脏俱全
如果有需要学习和使用这个软件源码的,发邮件给我,邮箱:2488890051@qq.com(马上就能回复),能对我的劳动成果进行鼓励,开发花了大量的时间和精力,作为学生,着实不容易。 (大佬们,记得关注我的博客,且下面评论留言喔,谢谢哈~)