基于uniGUI进行人工辅助

菜菜侠的uniGUI使用笔记 -- 安装篇 本文介绍了uniGUI的安装及使用Delphi开发第一个B/S程序。uniGUI框架对于Delphi老朋友想要开发B/S程序,绝对是一种福音。 阅读详情

** QQ: 282397369 **
慢慢地,手机自动试玩用户越来越多,做的任务也越来越多。
虽然终极目的是全自动化,但中间也会有一些情况是在程序设计的时候考虑不到的。这种情况下,最好的做法就是人工辅助。
做了一个控制程序,维护人员可以在网络上进行远程维护处理。但这要求维护人员必须在计算机跟前,带来诸多限制,尤其是下班或节假日,出了问题就只能卡在那里。
做了一小段时间的uniGUI,发现可以实现一个小的H5网页,然后在手机上来进行简单的人工辅助。

通信

要解决本问题,首当其冲的就是通信,即手机通过发出的信息,终端应用程序能收到。这个的解决方式很多,之前做应用程序的时候,用了一个通信中间件【避广告嫌就不说其名称了】。放在uniGUI中,作为一个服务端控件,可以实现二者的通信。

显示

用C++ Builder来实现这样一个界面,太轻松不过
在这里插入图片描述
最终的运行界面
在这里插入图片描述
当然,不同辅助需求应该是不同的显示界面。这个界面只是进行相应图标的辅助选择。顶端用一个ScrollBox以放置多个图标,这样可以滑动选择目标图标。下端用一个Image显示参考任务图片。中间就是人工可操作区域,以实现相应的辅助操作需求。
核心是取得期望的图片文件

UnicodeString __fastcall TUniMainModule::GetFile(int computerID, UnicodeString fileName, int fileCount, int position) {
	fileName = THelper::String::ToWindowsFileName(fileName);
	UnicodeString serverFileName = THelper::FormatString(L"C:\\DrGraphFiles\\%s\\%s", SessionPath, ExtractFileName(fileName));
	int times = 30;
	if(FileExists(serverFileName))
		DeleteFile(serverFileName);

	if(fileCount == 0)
		SendMsgToComputer(computerID,
			THelper::FormatString(L"type='getTempFile' fileName='%s' path='%s' ", fileName, SessionPath));
	else {
		SendMsgToComputer(computerID,
			THelper::FormatString(L"type='getTempFile' fileName='%s' path='%s' fileCount='%d' position='%d' ",
				fileName, SessionPath, fileCount, position));
		fileName = L"whole.jpg";
		serverFileName = THelper::FormatString(L"C:\\DrGraphFiles\\%s\\%s", SessionPath, ExtractFileName(fileName));
	}

	while(!FileExists(serverFileName) && --times >= 0)
		Sleep(100);
	if(FileExists(serverFileName)) {
		UnicodeString localFileName = THelper::FormatString(L"%sDebug\\ClientFiles\\%s\\%s", THelper::File::GetPath_Application(), SessionPath, ExtractFileName(serverFileName));
		THelper::File::EnsurePath(localFileName);
		DownloadFile(serverFileName, localFileName, 0);
		return localFileName;
	}
	return L"";
}

控制

对于本需求的控制,主要是两方面:一是选择,二是各辅助操作

选择

选择就是一个鼠标按下事件,根据图标大小与横坐标确定相应的图标下标,并相应更新被选择图标的显示效果

// 选择目标图标
void __fastcall TMainForm::UniImage_AppIconsMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
{
	int index = X / 70;
	UniButton_Confirm->Enabled = false;
	if(FWholeImageFileName.Length() && FileExists(FWholeImageFileName)) {
		cv::Mat mat = CvHelper::MatFromFile(FWholeImageFileName);
		int left = index * 70;
		int top = 20;
		if(left < mat.cols) {
			mat = CvHelper::CopySubMat(mat, cv::Rect(left, top, 60, 60));
			UnicodeString fileName = CvHelper::MatToFile(mat, ExtractFilePath(FWholeImageFileName) + L"choosed.jpg");
			UniImage3->Picture->LoadFromFile(fileName);
			UniEdit_Result->Text = THelper::FormatString(L"%d", index);
			UniButton_Confirm->Enabled = true;
		}
	}
}

各种辅助操作

辅助操作就是一个通信协议的实现过程。

// 重新搜索
void __fastcall TMainForm::UniButton_RetryClick(TObject *Sender)
{
	UniMainModule()->AuxOper(FDestComputerID, THelper::FormatString(L"modalResult='%d' keyword='%s' form='AuxSelectForm'",
		mrRetry, UniEdit_KeyWord->Text), FAuxID);
	UniButton_GetTaskClick(this);
}

// 确认选择
void __fastcall TMainForm::UniButton_ConfirmClick(TObject *Sender)
{
	UniMainModule()->AuxOper(FDestComputerID, THelper::FormatString(L"modalResult='%d' index='%s' form='AuxSelectForm'",
		mrOk, UniEdit_Result->Text), FAuxID);
	UniButton_GetTaskClick(this);
}

// 放弃选择
void __fastcall TMainForm::UniButton_AbondonClick(TObject *Sender)
{
	UniMainModule()->AuxOper(FDestComputerID, THelper::FormatString(L"modalResult='%d' form='AuxSelectForm'",
		mrCancel), FAuxID);
	UniButton_GetTaskClick(this);
}

就这,需求已经实现。用手机测试一下,没什么意外,因为是H5网页,所以在IPhone、安卓上运行都没啥问题。
在这里插入图片描述

小小结论

对于Delphi或C++ Builder开发人员来说,uniGUI的学习成本很低,真乃居家旅游必备。

Delphi Web框架Unigui uniGUI 使用 Sencha Ext JS 和 Sencha Touch 库进行客户端渲染,结合了 Ext JS 的强大功能和 Delphi 的 RAD 功能,跨平台,多平台部署 阅读详情

相关推荐

【一起学UniGUI】--UniGUI的部署选项(5)

uniGUI支持Windows平台下所有主要部署选项。 1.Standalone Server (独立服务器) 最简单的部署方法是独立服务器。在这种模式下,应用程序服务器像桌面应用程序一样直接运行。它也是用于调试应用程序的模式。运行应用程序可执行文件后(它是一个EXE文件),它将最小化到托盘图标,并运行到用户手动终止为止。见下图: 一个独立的应用程序可以...

5777

unigui是什么?能用来干什么?一篇文章让你全面了解

很多初次接触unigui的delphier都不太明白他的特点,能干些什么,这里就自己的经验,做个记录,分享给大家。

宁静志远 4989

uniGUI从入门到精通功能演示

uniGUI是一个强大的Web应用程序开发框架,它将Delphi的桌面应用程序开发模式扩展到Web应用程序开发,使得开发人员可以使用熟悉的Delphi编程语言和工具来创建高性能的Web应用程序。uniGUI的出现,使得开发人员无需掌握复杂的Web技术即可开发出功能丰富的Web应用。本文将详细介绍uniGUI的基本概念、安装配置、核心组件及其使用方法,并通过具体的实例展示如何从入门到精通地使用uniGUI进行Web应用程序开发。

m0_57781768的博客 1859

UniGUI 后台管理系统框架

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

u011702398的博客 3495

Unigui感知方向悬停按钮与Font图标整合示例

本文还有配套的精品资源,点击获取 简介:Unigui是一个基于Delphi技术的跨平台UI框架,允许开发者创建桌面和Web应用程序。本压缩包文件展示了如何为Unigui框架中的按钮组件添加方向感知悬停功能,并支持使用Font图标。开发者将学习如何实现按钮的自定义悬停方向检测和应用矢量图形图标,以改善用户界面的交互性和视觉效果。 1. Unigui框架简介 1...

weixin_42518874的博客 1231

Unigui开源框架,非常值得参考学习

Unigui开源框架,非常值得参考学习

菜菜侠的uniGUI使用笔记 -- 基础篇

刚开始学习与使用uniGUI时,往往是一头雾水,不知道如何下手,本篇的目的是记录我在学习与使用uniGUI过程中一些重点、要点,也希望能帮助到跟我一样的老Delphi粉丝。

菜菜侠的博客 3427

基于uniGUI的第三方控件Unifalcon源码版(2019-07-30)

基于uniGUI的第三方控件Unifalcon源码版(2019-07-30),Build with ExtJS 6.7.0 - uniGUI 1.90.0.1504 - HyperServer,亲测支持uniGUI 1.90.0.1506,未发现异常。

菜菜侠的uniGUI使用笔记 -- 几个重要模块单元

虽然uniGUI的开发类似于Delphi的VCL开发,但是还是有一些区别的, 在某些方面使 uniGUI Web 应用程序与桌面应用程序不同。桌面应用程序设计为在桌面上作为单个实例运行,它可以使用所有可用的系统资源。大多数情况下,这将导致糟糕的应用程序设计,因为开发人员认为没有必要优化资源使用。随着计算机技术的进步,新系统在每种新模型中都拥有更多资源。几年前,具有 128mb RAM 的 PC 被认为是入门级的,而今天这个限制已升级到至少 2 GB 的内存。

菜菜侠的博客 2274

ROS-Industrial :simple_message

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之.

flsxyw的博客 780

详解modbus TCP通讯,并利用其实现欧姆龙PLC和西门子PLC的通讯

大家好,之前需要更新的MQTT通讯【2】因为硬件不足还不能发布出来,但最近在项目中涉及到西门子和欧姆龙之间的modbus TCP通讯,想到modbus TCP通讯是个非常常见并广泛使用的通讯协议,今天就结合最近做的测试给大家好好讲解一下,先提示一下,这边只给大家讲解如何实现,至于报文是什么,如何用socket来编写功能块或dll这边不会讲解,这块我会根据私信的小伙伴数量来考虑要不要出一篇如何用ST语言来编写modbus TCP功能块的博客。

dy186187的博客 1万+

unigui美化界面源码框架

对于delphier来说,用delphi开发web程序,一直是一个很头痛的问题,在ui界面上要想漂亮,要学习css和美工知识,很多人都不得不放弃了。unigui是一个很好的框架,和delphier原生框架一样,拖放控件就能实现web开发,界面也相对原始的delphi控件来说,有一定的美化,但是还是和主流的web设计比较大。我花了大量的时间,修改了unigui控件的样式,写了这个web美化框架,符合...

宁静志远 3万+

postman响应体:“msg“: “请求缺失签名Sign“、 “msg“: “请求缺失时间戳“

请求标头有Sign、Timestamp,但是直接将网址复制到postman时,Headers没有自动生成这两个参数,所以运行时会报错。

m0_46862648的博客 1706

基于UniGUI的管理系统

基于UniGUI的管理系统 delphi MySQL MSSQL

musa2008的专栏 2833

从模态到颤振:深入解读Nastran的V-g/V-f图,判断你的机翼设计是否安全

本文深入解析Nastran中的V-g/V-f图在机翼颤振分析中的应用,帮助工程师准确判断设计安全性。通过模态分析到颤振边界的完整判读逻辑,结合气动弹性特性,指导优化机翼结构设计,确保飞行安全。

weixin_28732953的博客 471

安装Quartus-II 13 和Modelsim

目录一、Quartus-II安装1.Quartus-II 13下载2.Quartus-II 13安装3.Quartus-II 13注册二、Modelsim安装 实验目的:安装Quartus-II 13 和Modelsim 实验环境:Windows10 参考资料:Quartus-II安装及使用 一、Quartus-II安装 1.Quartus-II 13下载 正点原子官方资料下载 百度网盘下载链接: https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA 提取码:

qqq080的博客 8626

UniGUI 之UniDBGrid

/DisplayValues存储显示文字 ,不设置 则 显示 True/False;.GridLotacao .x-grid-column {/*带元素id的属性(设置栏),在unidbgrid中的layoutconfig属性中的cls子属性中加入GridLotacao名称*/.GridLotacao .x-grid-cell {/*带元素id的属性(设置单元格),在unidbgrid中的layoutconfig属性中的cls子属性中加入GridLotacao名称*/// 一定为True;

GuoGuoABC 3529

SDK报错(1)undefined reference to `f_mount‘

按文中说法是ff.c文件中用了一个if语句来判断是否启用ff.h头文件,但是却没有地方进行宏定义来满足这个if条件。利用SDK读取sd卡时,添加了xilffs库,而且包含了ff.h头文件,还是对fat库的函数报错。网上有的说在ARM v7 gcc linker中添加xilffs的方法可以解决,但我试了没有用。如下图,我们可以在ff.c中自己添加一个宏定义来实现这个条件。最后在赛灵思论坛找到了一个解决方法,原文连接如下。这时候保存编译之后,报错就消失了。ff.c 文件在bsp工程下。

EfunStudy的博客 1481

【一起学UniGUI】--UniGUI的界面与程序架构(4)

1、【统一的界面】 uniGUI是统一的图形用户界面,简称统一GUI。之所以称为统一的是因为它在所有带有Web浏览器的设备中提供了相同的UI体验。无论设备、操作系统、CPU和显示器是什么,在所有具有兼容Web浏览器的设备上,用户体验都是相同的。它允许在选择客户端设备方面有很大的自由。客户端设备可以是Windows PC、OSX设备、Linux PC、智能手机、平板电脑,甚至是树莓派...

5300

压电陶瓷传感器避坑指南:实测阻抗匹配对信号输出的影响(附示波器调试技巧)

本文深入探讨压电陶瓷传感器在工业振动监测中的阻抗匹配问题,通过等效电路模型和实测数据揭示负载阻抗对信号输出的关键影响。文章提供从元件选型到示波器调试的完整解决方案,特别强调100kΩ以上负载阻抗的重要性,并分享JFET缓冲器设计和PCB布局的实用技巧,帮助工程师避免信号失真和输出不稳定问题。

ooo22的博客 516

具身智能中的运动控制如何入门?

本文提出计算机视觉(CV)与强化学习(RL)结合的机器人运动控制学习路径。强调工程实践导向,建议采用"算法-机器人-工程"三阶段学习法:基础阶段掌握RL核心算法(PPO/SAC)和机器人动力学;进阶阶段聚焦Sim2Real技术(域随机化、模仿学习)和仿真环境搭建;深耕阶段结合CV优势开发视觉闭环控制等创新方向。特别指出应避免纯理论学习,提倡"最小知识原则"的实践模式,通过具体项目(如四足机器人控制)串联知识体系。推荐以《现代机器人学》等工具书为参考,配合开源框架(Pi

CyberSoma的博客 321

用unigui来制作网站

用unigui来制作网站,核心是运用好控件布局。

宁静志远 1679

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【一起学UniGUI】--UniGUI的技术概述(3)

众所周知,Web应用程序正在取代旧的桌面应用程序。Web应用程序可以从任何现代Web浏览器访问,而不需要将任何内容部署到客户机设备上,它更容易更新,有许多优点。但是,直到几年前,在Web上实现桌面应用程序提供的相同用户界面和响应能力几乎是不可能或不可行的。丰富互联网程序(RIA)是第一个将桌面用户体验引入Web的尝试,它要求在客户机计算机上安装本地运行时框架或插件。Microsoft...

2563

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

UNIGUI的自适应屏幕

Unigui

daigua1987的博客 1297

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

菜菜侠的uniGUI使用笔记 -- uniEdit篇

写这样一种常用控件的使用,其实是特别难的一件事儿,本篇希望通过一些例子,让熟悉Delphi传统C/S编程的朋友,能快速切换到uniGUI框架下的B/S编程。

菜菜侠的博客 1721

uniGUI for Delphi UniSweetAlert控件详解

1、AlertType:提示类型,分为atError、atSuccess、atInfo、atQuestion、atWarning五种类型,主要控制提示界面顶部的图标样式;2、AllowEscapeKey:是否允许Esc键关闭提示界面;3、AllowOutsideClick:是否允许点击提示框外部区域关闭提示界面;4、Animation:动画;5、CancellButtonText:取消按钮中文内容;6、ConfirmButtonText:确认按钮中文内容;

GuoGuoABC 1486
上一篇: 按拼音排序
下一篇: BS版图形系统 - 属性浏览器
DrGraph
博客等级 码龄14年 228粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值