当前位置: 首页 > news >正文

自动化压测工具开发(MFC)

1. 背景

为了减轻测试人员在进行MFC程序压力测试时的重复手动操作,本文档描述了开发一个自动化压力测试工具的过程。该工具能够根据程序界面某块区域的预定状态变化,自动执行鼠标点击或键盘输入操作。

2. 技术概览

  • 串口控制:用于控制外部设备,如继电器。
  • MFC CRectTracker:实现截图功能,创建简单的截图对话框。
  • GDI+:用于图像处理和屏幕捕获。
  • mouse_event:模拟鼠标点击。
  • keybd_event:模拟键盘输入。
  • MD5:用于图像内容校验。

3. 串口通信控制

串口通信用于控制继电器的上下电状态,进而控制USB设备的电源。

3.1 串口初始化

bool CComTest::InitialCom(int iComID, int iComPort, DWORD iBaudRate) {// 省略部分错误检查和资源清理代码...// 配置串口参数DCB dcbSerialParams = {0};GetCommState(m_hCom, &dcbSerialParams);dcbSerialParams.BaudRate = iBaudRate;dcbSerialParams.ByteSize = 8;dcbSerialParams.StopBits = STOPBITS_ONE;dcbSerialParams.Parity = NOPARITY;SetCommState(m_hCom, &dcbSerialParams);// 设置串口超时COMMTIMEOUTS timeouts = {0};timeouts.ReadIntervalTimeout = MAXDWORD;SetCommTimeouts(m_hCom, &timeouts);// 完成串口初始化return TRUE;
}

3.2 读取串口

DWORD CComTest::ReadCom(BYTE *pBuff, int nCount) {DWORD dwRead = 0;ReadFile(m_hCom, pBuff, nCount, &dwRead, N

相关文章:

自动化压测工具开发(MFC)

1. 背景 为了减轻测试人员在进行MFC程序压力测试时的重复手动操作,本文档描述了开发一个自动化压力测试工具的过程。该工具能够根据程序界面某块区域的预定状态变化,自动执行鼠标点击或键盘输入操作。 2. 技术概览 串口控制:用于控制外部设备,如继电器。MFC CRectTracker…...

【嵌入式DIY实例】-Nokia 5110显示DHT11/DHT22传感器数据

Nokia 5110显示DHT11/DHT22传感器数据 文章目录 Nokia 5110显示DHT11/DHT22传感器数据1、硬件准备2、代码实现2.1 显示DHT11数据2.2 显示DHT22数据本文介绍如何将 ESP8266 NodeMCU 开发板 (ESP-12E) 与 DHT11 数字湿度和温度传感器以及诺基亚 5110 LCD 连接。 NodeMCU 从 DHT11…...

C# —— 字符串拼接

字符串拼接的方式一 之前的算术运算符 只是用来数值类型的相加 主要做的是数学的运算 // 而string 不存在算数运算 但是可以通过加号 进行拼接 string str "123" 字符串拼接 str str "456"; Console.WriteLine(str); // "123456&q…...

css3新增的伪类有哪些

CSS3 引入了许多新的伪类选择器&#xff0c;这些选择器为开发者提供了更多的样式控制选项。以下是一些 CSS3 中新增的主要伪类选择器&#xff1a; 结构性伪类&#xff1a; :root&#xff1a;选择文档的根元素&#xff08;通常是 <html>&#xff09;。:empty&#xff1a;…...

低代码开发:企业供应链数字化的挑战与应对

随着全球数字化浪潮的不断推进&#xff0c;企业供应链管理也面临着日益复杂的挑战。在这样的背景下&#xff0c;低代码开发技术的出现为企业提供了一种更高效、更灵活的数字化解决方案。本文将探讨低代码开发在企业供应链数字化中的应用&#xff0c;以及它所带来的挑战与应对策…...

线程池的创建与使用

目录 一、线程池1.1 线程池概念1.2 线程池原理1.3 创建线程池的方式1.4 不同特点的线程池1.5 ThreadPoolExecutor[重要]本文的思维导图 最后 一、线程池 1.1 线程池概念 如果有非常多的任务需要非常多的线程来完成,每个线程的工作时间不长,就需要创建很多线程,工作完又立即销毁…...

C++ 中的负无穷大赋值

1&#xff0c;代码先行 示例&#xff1a; #include<iostream> #include<limits>using namespace std;int main() {float inf_pos numeric_limits<float>::infinity();float inf_neg -1*inf_pos;cout << "inf_pos " << inf_pos &l…...

python实现九九乘法表

while循环实现&#xff1a; i 1while i < 9: # 控制行的循环j 1while j < i: # 控制每行的输出print(f"{j}*{i}{j * i}\t", end"")j 1print()i 1for循环实现&#xff1a; for i in range(1, 10):for j in range(1, i 1):print(f"{j}*…...

【已解决】chrome视频无法自动播放的问题

问题&#xff1a; 在用datav开发大屏的时候&#xff0c;放了一个视频组件&#xff0c;但是发现视频组件即使设置了自动播放&#xff0c;仍然无法自动播放 原因&#xff1a; 76 以上版本的谷歌浏览器只能在系统静音下自动播放 解决&#xff1a; 音频自动播放浏览器白名单设置&…...

为什么要分析电商用户数据?详解两大用户数据分析维度

零售电商行业的蓬勃发展带来了海量的客户数据&#xff0c;这些数据不仅记录了消费者的每一次点击、浏览、购买行为&#xff0c;还蕴含着巨大的商业价值。如何从这些数据中提炼出有价值的信息&#xff0c;成为电商企业提升竞争力、优化客户体验、实现可持续发展的关键。本文将深…...

Linux系统的FTP文件传输服务

一.FTP简介 Linux环境下高性能的FTP命令行工具&#xff0c;能够利用FTP协议进行高效的文件传输管理。借助此强大工具&#xff0c;用户能轻松连接远程服务器&#xff0c;执行上传、下载、删除及重命名等操作&#xff0c;显著提高两台设备间的文件交互效率。 1.FTP什么 ftp是一…...

redis 08 慢查询日志

1.什么是慢查询日志 2.慢查询和两个参数有关 2.1 2.2 3.例子&#xff1a; 4 参数详细介绍&#xff1a;...

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十一)- 微服务(11)

12.7 DSL查询语法 查询的基本语法 GET /indexName/_search{"query": {"查询类型": {"查询条件": "条件值"}}} 查询所有 GET /hotel/_search{"query": {"match_all": {}}} 12.7.1 全文检索查询 全文检索查询,会…...

DevExpress WPF中文教程:Grid - 如何向项目添加GridControl并绑定到数据

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...

nodejs湖北省智慧乡村旅游平台-计算机毕业设计源码00232

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;旅游行业当然也不能排除在外。智慧乡村旅游平台是以实际运用为开发背景&#xff0c;运用软件工程开发方法&#xff0c;采…...

架构设计 - 根据性能压力测试结果优化服务器性能

概述&#xff1a;web软件项目工程实施过程&#xff0c;经常会用到客户端和服务端建立 KeepAlive 长连接来提高应用效率的场景。例如&#xff1a;移动端应用或者复杂的网页交互需要在用户浏览时频繁地向服务端发送请求。但是随之而来的问题是&#xff0c;需要对服务器端 tomcat …...

【必会面试题】事务的四大特性?ACID

目录 事务的四大特性&#xff0c;即ACID特性&#xff0c;是数据库管理的基石。 原子性&#xff08;Atomicity&#xff09; 定义&#xff1a;事务作为一个整体被执行&#xff0c;其内部的操作要么全部完成&#xff0c;要么全部不完成。如果事务中的任何一部分失败&#xff0c;那…...

【QT】记录一次QT程序发布exe过程

记录一次QT程序发布exe过程 使用windeploy与enigma发布独立的QT程序第一步 QT编译输出 **release** 版本第二步 QT 自带 windepoyqt 补全链接库第三步 enigma virtual box压缩打包为单一exe最后【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【**QtDeploy2exe.bat**】半自…...

数据分类分级,误把起点当终点

数据分类分级 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 01 — 数据分类分级的定义 数据分…...

stm32 启动文件分析

启动文件前面的介绍 启动文件是后缀为.s的汇编语言文本文件&#xff0c;每行前面的分号表示此行是注释行。 启动文件主要完成如下工作&#xff0c;即程序执行过程&#xff1a; - 设置堆栈指针SP __initial_sp。 - 设置PC指针 Reset_Handler。 - 设置中断向…...

playwright--简单使用

playwright的基本使用主要围绕着启动浏览器、导航至网页、操作页面元素、执行脚本和收集数据这几个核心步骤。以下是简单的使用流程&#xff0c;以同步API为例&#xff1a; 目录 1. 导入库并启动playwright 2. 创建新页面并导航 3. 操作页面元素 4. 异步操作与等待 5. 数…...

pom学习笔记:kimi的自动化操作

1.先看结构&#xff1a; 声明&#xff1a;我是初学&#xff0c;可能有不合理的地方。 2.Base层。 我是把原来一个kimi的自动问答的代码改过来。 分析&#xff1a;其实我是新手&#xff0c;因为我用的浏览器是固定的&#xff0c;也没有打算和别人用。所以浏览器层面年的全部写…...

【iOS】UI学习——界面切换

界面切换 push和poppresent和dismiss示例程序 push和pop 在 Objective-C 中,pop 和 push 通常是与 UINavigationController 一起使用的方法,用于控制导航栈中视图控制器的跳转和回退。 push 和 pop 通常成对使用,用于实现导航栈的前进和后退功能。当用户进入新的视图控制器时…...

【悬架笔记三】1/4被动悬架垂向动力学仿真+频域特性分析

1/4被动悬架 代码&#xff1a; %书第156页、159页 clc clear close all %% 一.悬架参数 ms320; mw50; Ks22000; Cs1500; Kw195000; f00.07; %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 二.垂向振动动力学仿真 %% 二.1.状态方程 A [0 1 0 -1;.…...

【C++】——继承(详解)

一 继承的定义和概念 1.1 继承的定义 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保 持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类&#xff0c;被继承的称为基类…...

openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现

文章目录 openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现299.1 概述299.2 使用指导299.2.1 前提条件299.2.2 SQL流水采集方法299.2.3 操作步骤299.2.4 使用方法示例299.3 获取帮助299.4 命令参考299.5 常见问题处理openGauss学…...

Git 分支管理规范化[Git Flow ]分支管理策略

分支命名规范 master 分支&#xff1a;master 分支只有一个&#xff0c;名称即为 master。GitHub 现在叫 main develop 分支&#xff1a;develop 分支只有一个&#xff0c;名称即为 developfeature 分支&#xff1a;feature/<功能名>&#xff0c;例如&#xff1a;featu…...

一键Mock工具(Http协议接口调试工具)

点击下载《一键Mock工具&#xff08;Http协议接口调试工具》 1. 前言 在进行Web开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑…...

Golang的context

目录 context的基本使用 为什么需要context Context interface 标准 error emptyCtx cancelCtx Deadline 方法 Done 方法 Err 方法 Value 方法 context.WithCancel() newCancelCtx WithCancel中propagateCancel cancel timerCtx valueCtx context的基本使用…...

Android 各个版本名称和特性总结(持续更新)

我们就从Android 5.0开始吧&#xff0c;因为从写文时起&#xff0c;大部分手机都到5.0了。 目录 Android5.0 &#xff08;Lollipop 棒棒糖&#xff09;新特性 Android6.0新特性 Android7.0新特性 Android8.0(O)新特性 Android9.0新特性 Android10.0(Q)新特性 Android11…...

江苏网站建设官网/网站排名推广

一&#xff0c;按键的按下抬起等识别方法 void Update (){int key1 0;int key2 0;if (Input.GetKeyDown (KeyCode.A)){Debug.Log("A按下一次");} if (Input.GetKey (KeyCode.A)){//记录按下的帧数&#xff0c;判断特定按键按下不抬起key1;Debug.Log("A连按…...

wordpress换服务器/深圳关键词排名seo

看完了“李智慧”老师的《大型网站技术架构-核心原理与案例分析》一书&#xff0c;让我对大型网站的技术架构所遇到的问题&#xff0c;所考虑到的内容&#xff0c;所用到的解决方案有了一个初步的认识。任何的大型网站都是从一个小网站发展而来的&#xff0c;淘宝、京东都不例外…...

教育网站建设的素材/怎样进行seo推广

所有题目均有五种语言实现。C实现目录、C++ 实现目录、Python实现目录、Java实现目录、JavaScript实现目录...

wordpress logy/阿里云免费建站

一、闭包闭包从形式上来说是在外部函数中定义内部函数&#xff0c;并且内部函数引用了外部函数的变量&#xff0c;此变量叫做自由变量。或者说是将组成函数的语句和这些语句的执行环境打包在一起。闭包满足的条件&#xff1a;必须有一个内嵌函数内嵌函数必须使用外部函数的变量…...

四方区企业型网站建设/百度一下官网首页百度

网易vip邮箱多少钱&#xff1f;163邮箱名字怎么起高端&#xff1f;邮箱名字的后缀每家邮箱都是固定的&#xff0c;但是前缀是可以设置的&#xff0c;无论是短位、寓意邮箱号都可以注册&#xff0c;tom邮箱每个月都会有特殊靓号的推出。 163vip邮箱登陆入口&#xff1a; 极致安…...

wordpress css样式/百度首页优化排名

功能介绍 【后台管理员功能】 会员列表&#xff1a;查看所有注册会员信息&#xff0c;支持删除 录入资讯&#xff1a;录入资讯标题、内容等信息 管理资讯&#xff1a;查看已录入资讯列表&#xff0c;支持删除和修改 广告设置&#xff1a;上传图片和设置小程序首页轮播图广告地…...