C# 多组充电测试框架

2023-11-02

有多个电流电压表通过串口连接到PC,点了对应按钮后,开始计时,到达对应时间后,读取电流电压表。
链接: https://caiyun.139.com/m/i?0E5CJYSahvlql
提取码:TDZa 复制内容打开和彩云手机APP,操作更方便哦

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ChargeTest10Slot
{
    public partial class Form1 : Form
    {

        private static bool Slot_01=false;
        private static bool Slot_02 =false;
        private static bool Slot_03 =false;

        System.Timers.Timer 间隔采样时间 = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为1000毫秒;
        //private delegate void TextOption();//定义一个委托

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            秒表开始();
        }

        private void 秒表开始()
        {
            间隔采样时间.Elapsed += new System.Timers.ElapsedEventHandler(Run);//到达时间的时候执行事件;
            间隔采样时间.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
            间隔采样时间.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
        }

        public void Run(object source, System.Timers.ElapsedEventArgs e)
        {
            Action();

            //Task task1 = Task.Run(()=> {
            //    Action();
            //});


            //TextOption textOption = new TextOption(Action);
            //textOption.Invoke();
            //this.Invoke(new TextOption(Action));//invok 委托实现跨线程的调用
        }
        private void Action()
        {
            try
            {
                this.BeginInvoke(new Action(() => { label4.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); }));
                更新时间并检查是否读电压表();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        private void 更新时间并检查是否读电压表()
        {
            更新秒数(Slot_01, SlotLabel_01);
            更新秒数(Slot_02, SlotLabel_02);
            更新秒数(Slot_03, SlotLabel_03);
        }
        private void 更新秒数(bool Slot,Label label)
        {
            if (Slot)
            {
                label.BeginInvoke(new Action(() => {
                    label.Text = (int.Parse(label.Text)+1).ToString();
                }));
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (Slot_01)
            {
                Slot_01 = false;
            }
            else
            {
                Slot_01 = true;
            }
            SetSlot(Slot_01, button1,SlotLabel_01);
        }
        private static void SetSlot(bool Slot,Button button,Label label)
        {
            if (Slot)
            {
                button.BeginInvoke(new Action(() => {
                    button.BackColor=Color.Green;
                    button.Text = "运行中……";
                    label.Text = "0";
                    ConfirmForm f = new ConfirmForm("已运行:"+label.Name);
                    f.ShowDialog();
                }));
            }
            else
            {
                button.BeginInvoke(new Action(() => {
                    button.BackColor = Color.Red;
                    button.Text = "停止";
                    ConfirmForm f = new ConfirmForm("已停止:"+label.Name);
                    f.ShowDialog();
                }));
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (Slot_02)
            {
                Slot_02 = false;
            }
            else
            {
                Slot_02 = true;
            }
            SetSlot(Slot_02, button2,SlotLabel_02);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (Slot_03)
            {
                Slot_03 = false;
            }
            else
            {
                Slot_03 = true;
            }
            SetSlot(Slot_03, button3, SlotLabel_03);
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 多组充电测试框架 的相关文章

随机推荐

  • 《数据结构与算法》实验:图结构的建立与搜索

    数据结构与算法 实验和课程Github资源 数据结构与算法 实验 线性结构及其应用 算术表达式求值 数据结构与算法 实验 树型结构的建立与遍历 数据结构与算法 实验 图结构的建立与搜索 数据结构与算法 实验 查找结构的实验比较 二叉查找树B
  • 图的m着色问题(第十二次实验)

    图的m着色问题 问题 图的m着色问题 给定无向连通图G和m种颜色 用这些颜色给图的顶点着色 每个顶点一种颜色 如果要求G的每条边的两个顶点着不同颜色 给出所有可能的着色方案 如果不存在 则回答 NO 解析 图着色问题描述为 给定无向连通图G
  • Qt开发之QTableWidget

    QTableWidget从继承QTableView 实质属于模型 视图范畴之内 只是带了默认模型 model 基于项目 item 的表格视图控件 我们不需要实现model内的数据加工 QTableWidget为应用程序提供了标准的表显示工具
  • 【MybBatis高级篇】MyBatis 拦截器

    MybBatis高级篇 MyBatis 拦截器 拦截器介绍 实现拦截器 注册拦截器 应用 yml DynamicSql Dao 层代码 xml 启动类 拦截器核心代码 代码测试 拦截器应用场景 MyBatis 是一个流行的 Java 持久层
  • python数据分析与可视化——第二章实训

    1 读取数据 import csv f open F 专业课程作业 python时空数据分析与可视化 white wine csv r 定义读取器 reader csv reader f data 定义列表存储读取的数据 for row i
  • UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

    统一建模语言 Unified Modeling Language UML 是一种为面向对象系统的产品进行说明 可视化和编制文档的一种标准语言 是非专利的第三代建模和规约语言 UML是面向对象设计的建模工具 独立于任何具体程序设计语言 1 U
  • C基础day3(2023.7.3)

    一 Xmind整理 二 作业 1 include
  • Ubuntu下muduo库安装和配置到系统环境

    1 本次安装通过源码安装 在安装之前必须要安装git 系统是Ubuntu muduo库源码github仓库地址 https github com chenshuo muduo 2 git 安装 sudo apt get install gi
  • [架构之路-192]-《软考-系统分析师》-8-软件工程 - 14种UML图快速概览

    目录 第1章 UML概述 1 1 什么是UML 1 2 为什么要用UML 1 3 UML图有哪些 1 4 UML图概览 第2章 UML图示 2 1 静态图 结构图 什么是类图 泛化 Generalization 实现 Realization
  • 投资人热捧的创业大赛,有哪些AI原生应用值得关注?

    绝对远超全球同类产品 一位大模型创业者对百度文心一言的表现不吝夸奖 这是一家生产效率工具创业公司的负责人 今年5月百度发起大模型领域创业比赛 文心杯 他率先报名参赛并入选决赛文心创业营 目前与其他30多家入围企业一起 正基于百度文心大模型构
  • linux中init.d文件夹的说明

    一 简单说明 etc init d 是 etc rc d init d 的软链接 soft link 可以通过 ll 命令查看 ls ld etc init d lrwxrwxrwx 1 root root 11 Aug 30 2015 e
  • window.open()的替代方法

    window open 是被很多杀毒软件禁止的弹出框方式 所以可以采用form post的方式来打开 function OpenWindByPost window top location ctx page confirm confirmT
  • File类

    一 概述 1 File在包java io File下 代表系统的文件对象 文件 文件夹 File提供了诸如 定位文件获取文件本身的信息 删除文件 创建文件 文件夹 等功能 File创建对象有三种方法 第一种最为方便 其他两种只要没点大病都不
  • LeetCode 451. Sort Characters By Frequency

    原题网址 https leetcode com problems sort characters by frequency Given a string sort it in decreasing order based on the fr
  • Midjourney API 接口调试

    最近写了一个Midjourney API的接口 可以通过调用接口实现AI绘画 本地服务使用了 Midjourney 最近关注AI比较多 自己实现了一个AI绘画 Midjourney的接口 通过发送关键词就能实现绘画 发现需要的人也挺多的 准
  • JDK8主要新特性介绍(一)

    1 语言新特性1 1接口新增默认方法与静态方法 1 1 1 Interface Default Method For creating a default method in java interface we need to use de
  • DS18B20数字温度传感器

    DS18B20是一种数字温度传感器 由美国达拉斯半导体公司生产 具有以下特征 1 单线传输 DS18B20使用单线传输协议 1 Wire 进行通信 只需要一个数据线就可以实现数据传输和电源供应 2 高精度 DS18B20可以测量范围为 55
  • 五、高级数据结构和算法:2-3查找树、红黑树

    5 2 3查找树 红黑树 5 1 2 3查找树 和二叉树不一样 2 3树每个节点保存1个或者2个的key 对于普通的2节点 2 node 要有1个key和左右两个子节点 对应3节点 3 node 要有两个Key和三个子节点 2 3查找树的定
  • EMC测试(5)——传导发射测试(CE)

    1 1 概念介绍 传导发射 Conducted Emission 测试 简称CE 也被称为传导骚扰 是指系统内部的电压或电流通过信号电缆 电源线或地线传输出去而成为其他系统或设备干扰源的一种电磁现象 传导发射测试通常也会被称为骚扰电压测试
  • C# 多组充电测试框架

    有多个电流电压表通过串口连接到PC 点了对应按钮后 开始计时 到达对应时间后 读取电流电压表 链接 https caiyun 139 com m i 0E5CJYSahvlql 提取码 TDZa 复制内容打开和彩云手机APP 操作更方便哦