书签智能产线——软件部分设计

一、软件功能需求

将所有视觉功能进行了模块化封装。这意味着本团队将每个视觉功能独立成模块,使其可以方便地被调用和组合。

为初级工程师设计一个操作界面,该界面包含了拖拽视觉模块的功能。通过简单的拖拽操作,工程师可以自由组合视觉功能模块,实现所需的功能。这样的设计使得整个系统对工程师更加友好,让工程师能够快速定制并调整视觉流程。

为操作界面编写逻辑。在操作界面的设计中,注重界面的美观与友好性,着重编写清晰的逻辑,确保操作的流程合理且易于理解。这样,初级工程师可以更轻松地掌握操作界面,快速实现各项视觉功能。

让无任何视觉基础的普通工人也能使用的本团队产品,将初级工程师搭建的功能模块进行封装,使其成为一个简单易用的.exe文件。这样,普通工人只需按照简单的指引操作,即可完成视觉任务,无需具备专业的视觉知识,提高操作的普及性和可用性。

二、UI设计

在本次项目中,需设计一款可视化编程UI界面。其包含了导航区、指令区、程序编辑运行区、视觉区、输出区以及各种功能的实现的界面。以完成与视觉的交互。

(1)设计思路

框架中只需要对用户的操作进行判断,而对封装好的视觉算法不做处理。旨在通过判断用户对封装好的算法模块的调用来达到控制产线视觉而不用深入底层去修改操作。

本次框架选用语言及理由:

相比于Qt和Python,使用C#来开发可视化视觉编程框架有以下优点:
①面向对象特性:C# 是一种面向对象的编程语言,具有丰富的面向对象特性,如封装、继承、多态等,有利于设计高内聚低耦合的程序,便于扩展和维护。
②Windows 平台优化:C# 是一种 Windows 平台优先的编程语言,与 Windows 操作系统深度集成,可以直接调用 Windows 的 API 接口,便于开发 Windows 平台上的应用程序。
③性能:C# 编译后可以直接在操作系统上运行,其性能较Python有很大优势。

本次项目是设计一个可视化编程框架UI,通过调研,市面上的可视化编程的UI,找到了几款出色的可视化编程的软件,比较出色的,为海康的viosonmaster,分析可知,其UI主要包括导航区、指令区、程序编辑运行区、视觉区、输出区以及各种功能的实现的界面。本次项目也将模仿visonmaster通过Csharp设计出可视化编程框架UI。

通过分析,Csharp控件库,以及外接Csharp控件库,选出tablelayoutpanel、TreeView、tabcontrol、button等多种控件进行UI的界面设计。

根据界面布局设计,设计出可视化编辑的界面,确定拖放组件的方式、布局调整的方法、属性编辑和事件编辑的界面组件等。

设计事件编辑器:设计一个事件编辑器,用于定义组件的事件处理程序。提供一个易于编辑和调试的代码编辑区域,并考虑预定义代码的片段或模板的支持。

确定如何实现实时的交互反馈,让用户在编辑过程中即时看到结果。考虑在编辑器中添加实时预览窗口或面板,并确保用户能够直观地观测视觉区输出的结果。

注:本次UI设计是基于sunnyUI控件库的设计。sunnyUI的demo。

(2)设计流程

①界面分区:通过tablelayoutpanel将界面分成导航区、指令区、程序编辑运行区、视觉区等区块。

②指令区:通过TreeView在集合中将所需根、子节点列出,并通过点击事件将节点生成button进入到指令区生成指令执行,并在视觉区生成相机的实时画面。

③视觉区、参数设置等:通过tabcontrol列出多个UI界面,方便参数的调节。

④导航区:设置多个button进行界面转跳等。

(3)设计成果展示

①调试UI设计

②功能实现UI设计

​ 二值化窗口设计

​ 相机参数设计

2、控件逻辑设计

目前主要是控件button控件的拖拽功能的实现。

主要将指令区中treeview的集合中的元素拖拽到程序编辑运行区为程序运行进行设计。如下图所示

3、与视觉部分联调

(1)整体设计思路

通过将控件输入的值传递给视觉dll里面的函数,实现相机界面参数调整的实时改变。

(2)设计流程

​ 设置textbox控件,将其值进行限定数据类型为浮点数,并将值返回函数中。

通过设置全局变量,将控件返回值存入到全局变量中。

将值传给视觉dll中的函数。