[框架设计之道(二)]设备、任务设置及业务流程

news2025/1/8 4:16:13

[框架设计之道(二)]设备、任务设置及业务流程


说明
此文档是开发中对设备设置项的管理。因为硬件在使用的过程中涉及大量设置项,因此需要单独开一篇文档说明设备的设置和任务的设置。

一、设备设置
1.基础接口

/// <summary>
/// 配置文件管理模块
/// </summary>
class TSG_ConfigHelper : public TSG_Framework {
public:
	virtual bool Init(const QString& path, const QList<QString>& list_device_names) = 0;
	virtual bool Init(const QString& path) = 0;
	virtual QList<QString> getConfigFiles() = 0;
	virtual QJsonObject getConfigContain(const QString& config_name, const QString& device_name) = 0;
	virtual bool setConfigContain(const QString& config_name, const QString& contains, const QString& device_name) = 0;
	virtual QList<QString> getDeviceNames() = 0;

对于配置文件管理模块,我不希望提供过多和过花哨的接口。事实上,各式各样的配置文件管理模块实际上就是修改某个设备下的某个json文件。一个ConfigHelper需要包括多个设备,当然了,它实际上是以文件夹为单位进行管理的

每一个设备应该都会有一个init.json和一个DeviceParams.json文件,所以他们是以一个文件夹的形式保存起来的。

如图所示:
在这里插入图片描述

以这样的文件夹形式存放各个设备的参数信息,所有的信息都是以本地文件的形式存放的,所有的文件都需要热取用,因为随时可能会发生中途设备信息修改等等,所以再接口getConfigContain中,需要每次打开文件进行读取,而不是提前读取好了放在本地。
2.基本流程
配置文件管理模块流程大致如下:

image

读取和写入都需要保证可以在热读取下操作。否则每次重新设置或者配置文件可能都需要重新启动软件,会非常不灵活。

其中所有的设置和读取配置文件,只涉及两个功能,也就是所谓的写入和读取文件,仅此而已。

二、任务设置
任务设置模块应该是在主程序的kernel中进行的,每次在gui进行一次配置的时候都需要在主程序的kernel中
1.任务设置
每次任务设置参数涉及很多个方面,但主要的参数包含以下几个方面

1>任务的基本信息:名称、备注
2>需要换算的信息:隧道直径、小车速度、相机曝光时间、图片重复率

实际上,一个任务就只有两个信息是需要主动包含的,一个是基本信息,一个是换算信息。这里我们暂且不聊换算信息。为什么呢,因为这个是需要和后续的设备信息进行联动的,这里的所有基本换算都是来自gui程序或者主程序中本地的换算,所以轮不到设备的控制层去关系。

所以对于控制层来说,唯一需要关心的就是文件存储的路径,以及配置文件存放的路径。

三、业务流程
我们在所有设备的控制层代码中都写好了一套配置流程,那自然在主程序中也得有一套完整的流程。一套完整的流程控制不仅可以使在具体的采集过程中的程序更加可靠,也可以使得面对各种异常情况下能够更加优雅。另外值得一提的是,需要将错误日志系统搭建完善,而不是之前那一套没人看得懂的错误日志。

业务中,我们需要让每一次作业保持以下流程:

image

我需要简单解释一下此图:在全流程中,GUI只是一个人机交互的接口,也就是说GUI并不参与到具体的业务中,也不会做任何计算和任何的业务流程。

所有,注意,是所有的任务,都可以在主程序中完成,即使主程序在开发的过程中并没有提供GUI,只凭借仅有的控制台也应该要能够完成整个采集任务。

其中,设置设备信息和设置任务信息都不是必须的,这里需要提供两套预设,一套是存放在本地文件的default.json文件,另一套是放在代码内部的,基于目前已有的设备执行。

但是这里有问题,值得注意的一点是,扫描仪的并不是提前可以通过扫描获得的,而是只能通过提前设定好ip、sn和key来尝试连接的,所以扫描仪设备和所有的设备都不一样,需要在跳过设备信息之前提前确定扫描仪的信息。

开始采集、暂停采集、停止采集在主程序中比较好获取,因为在控制层中就已经对所有状态做好了声明和控制,只需要按照流程来即可。

最后,停止采集一定是所有控制中级别最高的,不论当前是任何状态,只要发送了停止采集的命令,机器就必须马上停止运转,状态归零,这是很重要的一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/999688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python有向图从起点到终点遍历所有路径

参考文章&#xff1a;https://blog.csdn.net/weixin_39797176/article/details/121776940 输入数据说明&#xff1a; graph[1] [2, 3] 表示顶点1有边指向顶点2和3&#xff0c;将所有的边录入start(1,8)表示遍历从顶点1到顶点8的所有路径 graph {} allpaths [] solopath …

空气减压阀QAR2000-02 QAR2500-02 QAR2500-03 QAR3000-02

空气减压阀QAR1000-M5、QAR2000-01、QAR2000-02、QAR2500-02、QAR2500-03、QAR3000-02、QAR3000-03、QAR4000-03、QAR4000-04、QAR4000-06、QAR5000-06、QAR5000-10、QPR2000-01、QPR2000-02、XR4&#xff0c;空气过滤减压阀QPW2000-01、QPW2000-02、XFRU4&#xff0c;精密减压…

C# Onnx Yolov8 Seg 分割

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…

数字孪生警务3D可视化系统有哪些作用?

数字孪生警务3D可视化系统是利用先进的数字技术和模拟技术&#xff0c;将真实的公安运行环境、设施和人员以虚拟的形式呈现出来的系统。它可以模拟公安部门的各种工作场景&#xff0c;为公安人员提供更直观、全面的信息&#xff0c;并发挥以下作用&#xff1a; 一、仿真演练和培…

第三章 Linux文件系统

第三章 Linux文件系统 ​ 文件系统是操作系统用于确定磁盘或分区上的文件的方法和数据结构&#xff0c;即文件在磁盘上的组织方法。文件系统由3部分组成&#xff1a;与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。 1.Ubuntu的文件系统 ​ 文件系统负责…

AI是风口还是泡沫?

KlipC报道&#xff1a;狂热的人工智能追捧潮有所冷静&#xff0c;投资者在“上头”的追涨之后&#xff0c;开始回归到对基本面的关注。 KlipC的合伙人Andi D表示&#xff1a;“近日&#xff0c;有关英伟达二季度“破纪录”财报涉嫌造假的话题正在社交媒体和投资者论坛中甚嚣尘上…

【转存】从 JMM 透析 volatile 与 synchronized 原理

在面试、并发编程、一些开源框架中总是会遇到 volatile 与 synchronized 。synchronized 如何保证并发安全&#xff1f;volatile 语义的内存可见性指的是什么&#xff1f;这其中又跟 JMM 有什么关系&#xff0c;在并发编程中 JMM 的作用是什么&#xff0c;为什么需要 JMM&#…

java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

肖sir__项目管理工具之禅道__013

项目管理工具之禅道 一、项目管理工具介绍 1、禅道是一个项目管理软件&#xff0c;它是易软天创公司&#xff0c;为了解决众多企业在管理中出现混乱&#xff0c;无序的现象&#xff0c;开发出来的 它是基于产品管理&#xff0c;项目管理&#xff0c;测试管理于一身&#xff0c…

同城线下约玩陪玩系统线下达人系统源码

结构:TINKPHP框架公众号H5;系统开源,方便二次开发 编译:前端使用UNIAPP开发,可快速编译成APP及微信小程序和公众号H5组件:ICONFONT-UI,基于阿里图库团队UI库,用户体验棒 终端:前后端分离开发模式&#xff0c;开发更清晰分工更明确、提升开发效率、前端使用UNIAPP可快速编译各类…

[Linux 基础] linux基础指令(1)

文章目录 1、Linux下基本指令1.ls指令2.pwd指令3.cd指令4.touch指令5.mkdir指令6.rmdir指令 && rm指令7.man指令8.cp指令9.mv指令10.cat指令11.more指令12.less指令 Linux学习笔记从今天开始不断更新了。第一篇我们从基础指令开始学起。 1、Linux下基本指令 好多人都说…

Swift页面添加水印

本文主要讨论的是给图片或者视图添加全屏水印。比较常见的是添加单个水印,这个比较好处理,网络上也有很多参考的方法。本文实现的是铺满的全屏水印,具体参考效果如下: 实现思路: 1、根据水印文本以及相应样式生成水印图片,水印图大小根据文本计算而来 2、生成需要铺满水…

TortoiseSVN 详细操作指南

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 热爱技术的小郑 1、引言 考虑以下几种情况&#xff1a; 你是否在一个…

高压放大器在静电喷涂技术中的应用

高压放大器静电喷涂作为一种表面处理技术&#xff0c;在工业生产和制造领域中得到了广泛应用。然而&#xff0c;在实际的生产应用过程中&#xff0c;高压放大器静电喷涂也面临着生产效率不高、成本过高等问题。因此&#xff0c;如何提高生产效率和降低成本已经成为行业内关注的…

如何在Windows 10/11中重置网络,以及重置后的注意事项有哪些

本文介绍如何在Windows 10和Windows 11中重置网络设置。 如何重置Windows 10网络设置 在Windows10中使用网络重置实用程序相当简单。 一、进入“开始”菜单>“设置”,然后选择“网络和Internet”。 二、在左侧导航窗格中,选择“状态”以确保你正在查看网络状态窗口。然…

PHP调用API接口的方法及实现(内附电商平台商品详情接口案例)

随着互联网、云计算和大数据时代的到来&#xff0c;越来越多的应用程序需要调用第三方的API接口来获取数据&#xff0c;实现数据互通和协同工作。PHP作为一种常用的服务器端语言&#xff0c;也可以通过调用API接口来实现不同系统的数据交互和整合。本文将介绍PHP调用API接口的方…

深入剖析:垃圾回收你真的了解吗?

小熊学Java&#xff1a;https://www.javaxiaobear.cn/ 本文我们重点剖析 JVM 的垃圾回收机制。关于 JVM 垃圾回收机制面试中主要涉及这三个考题&#xff1a; JVM 中有哪些垃圾回收算法&#xff1f;它们各自有什么优劣&#xff1f; CMS 垃圾回收器是怎么工作的&#xff1f;有哪…

2023-9-11 台阶-Nim游戏

题目链接&#xff1a;台阶-Nim游戏 #include <iostream> #include <algorithm>using namespace std;int main() {int n;cin >> n;int res 0;for(int i 1;i < n; i){int x;cin >> x;if(i % 2) res ^ x; }if(res) cout << "Yes" &l…

sql 时间函数

1&#xff0c;前提 今天看同事写的sql里面出现了时间类的函数&#xff0c;平时自己也经常用到&#xff0c;每次都要百度&#xff0c;还不如自己整理记录在一起&#xff0c;方便后续使用。 2&#xff0c;sql时间函数 2.1 获取当前时间&#xff1a; selectNOW() as 当前日期时…

淘宝天猫API接入说明(淘宝天猫商品详情+关键词搜索商品列表)商品详情数据,商品sku数据,商品优惠券数据

业务场景&#xff1a;作为全球最大的 B2C 电子商务平台之一&#xff0c;淘宝天猫平台提供了丰富的商品资源&#xff0c;吸引了大量的全球买家和卖家。为了方便开发者接入淘宝天猫平台&#xff0c;淘宝天猫平台提供了丰富的 API 接口&#xff0c;其中历史价格接口是非常重要的一…