【串口助手开发】--温度曲线图实时显示功能,全流程小白教程,zedgraph控件的使用方法,Visual Studio 软件C#语言

news2024/11/16 1:29:39

1、ZedGraph.dll 控件下载

链接:下载ZedGraph(ZedGraph.dll 和ZedGraph.Web.dll文件)

打开链接后,图中红框显示的是仅下载zedgraph控件,本文所需的文件是ZedGraph.dll。

2、ZedGraph.dll 控件添加进Visual Studio 软件

打开Visual Studio,创建一个新的windows窗体应用程序项目。

打开form设计器使其出现在当前窗口,如下图:

将下载的 ZedGraph.dll文件放在自己所建项目的         文件中,如图:

添加 ZedGraph.dll 和ZedGraph.Web.dll的引用,在控件库中添加ZedGraph控件:右键点击工具箱 - 选择项 - .Net Framework 组件 - 浏览 - 找到ZedGraph.dll 和ZedGraph.Web.dll添加,随后zedGraphControl 控件就出现在工具箱中如图:

从工具箱中拖出一个 zedGraphControl 控件到form设计器并按照意愿修改其大小和位置。你现在Form中就有了一个ZedGraph控件。如下

3、代码编写

3.1、参数定义

在串口助手开发一开始的函数中,添加定义几个全局可调用的参数

public partial class Form1 : Form
{
    
    GraphPane myPane = new ZedGraph.GraphPane();
    PointPairList listTemp = new PointPairList();
    PointPairList listThot = new PointPairList();

    public double currTemperature = 30;//当前温度
    public double Thot = 25;//热端温度
    private double x = 0;

 3.2、调用初始化函数

在窗口加载事件:添加创建zedgraph图函数

 private void Form1_Load(object sender, EventArgs e)         //窗口加载事件
 {
     //其他初始化代码。。。。

     //创建zedgraph图,包括初始化,
     CreatezedGraph1();

 }

3.3、创建zedgraph初始化函数

创建zedgraph图函数:包括初始化,设置图标格式,设置曲线类型等

        private void CreatezedGraph1()      //创建zedgraph图,包括初始化,
        {
            zedGraphControl1.GraphPane = myPane;                                     //重命名,方便后面使用
            zedGraphControl1.PanModifierKeys = Keys.None;                           //用户无法通过特定的键组合来平移图表

            //设置图表格式
            zedGraphControl1.GraphPane.Legend.Position = LegendPos.InsideTopRight;  //设置图例显示在图表的右上角区域
            myPane.Title.Text = "实时监测曲线";
            myPane.YAxis.Title.Text = "温度";
            myPane.XAxis.Title.Text = "时间轴";

            myPane.CurveList.Clear();        //用于清空 myPane 中存储的曲线列表
            myPane.GraphObjList.Clear();     //清空 myPane 中的图形对象列表。图形对象可以包括各种用于绘制图表的元素,例如标记、注释等
            // Add gridlines to the plot, and make them gray
            myPane.XAxis.MajorGrid.IsVisible = true;  //设置 X 轴的主网格线可见。
            myPane.YAxis.MajorGrid.IsVisible = true; //设置 Y 轴的主网格线可见。
            myPane.XAxis.MinorGrid.IsVisible = true; //设置 X 轴的次网格线可见。
            myPane.YAxis.MinorGrid.IsVisible = true; //设置 Y 轴的次网格线可见。

            //创建了新的 PointPairList 对象
            //PointPairList 通常用于存储包含 X 值和 Y 值的数据点对。
            //创建新的实例后,可以向这些列表中添加数据点,以便在后续的图表绘制或数据处理中使用。
            listTemp = new PointPairList();
            listThot = new PointPairList();

            myPane.AddCurve("T1温度", listTemp, Color.Green, SymbolType.None);
            myPane.AddCurve("T2温度", listThot, Color.Crimson, SymbolType.None);

            timer1.Start();
        }

 3.4、时钟更新事件函数

时钟触发事件:每过一个时钟间隔,则更新温度图的内容,

        private void timer1_Tick(object sender, EventArgs e)          //时钟触发事件
        {
            listTemp.Add(x, currTemperature);   //将 x 作为 X 轴的值,currTemperature 作为 Y 轴的值添加到 listTemp 中。
            listThot.Add(x, Thot);              //将 x 作为 X 轴的值,Thot 作为 Y 轴的值添加到 listThot 中。
            x++;                                //x值增加,是根据时钟触发时间的间隔,如现在时钟间隔是500ms,则图标每0.5秒更新一次数据
            zedGraphControl1.AxisChange();      //通知 zedGraphControl1 控件坐标轴的设置发生了更改
            zedGraphControl1.Refresh();         //用于刷新 zedGraphControl1 控件的显示,确保用户看到的是最新的图表状态
        }

PS:currTemperature,Thot的变量的值,是通过串口助手接收函数得到数据值,再通过其他方法,把接收到的数据值,如温度值,赋值给这两个变量值,赋值后,就可再图中实现显示温度曲线。

4、代码功能增加

4.1、添加曲线

1、在参数定义中:PointPairList list3= new PointPairList();定义第三个PointPairList 对象

2、在初始函数中:创建第三个PointPairList 对象。

创建后,把对象增加到曲线中。

3、在时钟更新函数中:把横纵坐标的变量值,赋值给第三个对象。

4.2、图标格式设置

参考:C#控件ZedGraph使用小结

有代码:

C# ZedGraph Control 控件画 饼图、柱状图、折线图(超级精美,史无前例)

C#上位机中ZedGraph控件的使用

C#图表控件ZedGraph使用

参考:

C#绘制实时控制误差曲线图(利用ZedGraph控件)

ZedGraph控件常用方法和属性总结

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

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

相关文章

【Arduino】ATmega328PB 连接 LSM6DS3 姿态传感器,并读数据(不确定 ESP 系列是否可行,但大概率是可行的)

总览 1.初始化 ATmega328PB,默认大家已经完成了 328 的配置准备工作,已经直接能够向里面写入程序 2.接线,然后验证 mega328 的 I2C 设备接口能否扫描到 LSM6DS3 3.编写代码,上传,查看串口数据。完成。 一、初始化 AT…

履带无人车+无人机+自组网:空地一体化技术详解

履带无人车、无人机与自组网技术的结合,构成了空地一体化技术的核心框架,这种技术在多个领域展现出巨大的潜力和应用价值。以下是对该技术的详细解析: 一、技术概述 空地一体化技术巧妙融合了履带无人车、无人机以及自组网技术,…

EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2)

前言 又是一场压线不掉分的比赛。 Standings:2706 题目链接:Dashboard - EPIC Institute of Technology Round August 2024 (Div. 1 Div. 2) - Codeforces A. Distanced Coloring 题意: 给一个 n * m 的矩阵,涂色,要…

pkg 打包后运行报错 Cannot mkdir in a snapshot. Try mountpoints instead.

把项目中使用到的 __dirname 类似这样的 join(__dirname, ./config)替换为 process.cwd() __dirname:获取的是当前文件目录路径,二进制文件内部的文件(pkg打包的二进制文件是快照文件,里面的文件只能读不能修改新增),比如&#x…

区块链基础

1、区块链定义 区块链技术本质上是一个去中心化的数据库,它是比特币的核心技术与基础架构,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合…

XSS-跨站脚本攻击

目录 XSS简介 XSS分类 反射型XSS(非持久型XSS) 存储型XSS(持久型XSS) DOM型XSS HTML文档解析过程 例题 HTML解析 字符实体(character entities) HTML字符实体(HTML character entities) 字符引用(character…

程序员如何写PLC程序

PLC是可编程逻辑控制器的简称,常用的编程语言是IEC61131-3(梯形图、结构化文本、指令表、功能块、顺序功能图)和西门子的SCL。程序员常用的编程语言是JS、Java、Python、C/C、Go等。PLC广泛采用编程工具有codesys、博图等。程序员常用的编程工…

用Python实现9大回归算法详解——06. K近邻回归算法

1. K近邻回归的基本概念 K近邻回归(K-Nearest Neighbors Regression, KNN Regression)是一种基于实例的学习方法。与传统的回归模型不同,KNN回归不通过显式的函数来建模数据之间的关系,而是通过查找输入样本的“邻居”来进行预测…

【PDF技巧】如何编辑忘记密码PDF文件?

PDF文件打开之后,发现编辑功能都是灰色的,无法使用,无法编辑PDF文件,遇到这种情况,因为PDF文件设置了限制编辑导致的。一般情况下,我们只需要输入PDF密码,将限制编辑取消就可以正常编辑文件了&a…

在线装修管理系统pf

TOC springboot389在线装修管理系统pf 第1章 绪论 1.1 课题背景 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。所以各行业…

C语言 | Leetcode C语言题解之第345题反转字符串中的元音字母

题目&#xff1a; 题解&#xff1a; char vowel[] "aeiouAEIOU";bool isVowel(char ch) {for (int i 0; vowel[i]; i) {if (vowel[i] ch) {return true;}}return false; };char* reverseVowels(char* s) {int n strlen(s);int i 0, j n - 1;while (i < j) …

C语言三目运算符深度解析

[大师C语言]合集&#xff3b;大师C语言(第一篇)&#xff3d;C语言栈溢出背后的秘密&#xff3b;大师C语言(第二十五篇)&#xff3d;C语言字符串探秘&#xff3b;大师C语言(第二篇)&#xff3d;C语言main函数背后的秘密&#xff3b;大师C语言(第二十六篇)&#xff3d;C语言结构体…

08 STM32 DMA

DMA 协助CPU&#xff0c;完成数据转运工作。 两个程序&#xff1a; DMA数据转运&#xff0c;DMAAD多通道 DMA数据转运&#xff0c;将使用DMA&#xff0c;进行存储器到存储器的数据转运&#xff0c;也就是把一个数组里面的数据&#xff0c;复制到另一个数组里。 定义一个数组D…

3:html(CSS):基础语法3

3.1网页布局与id 3.1.1网页布局 在这里将使用<div>分成一个一个的块&#xff0c;然后进行CSS的美化。这里要说一下html是一个前端的代码&#xff0c;但是它写出来的东西单调缺少美感&#xff0c;CSS就是进行美化的&#xff0c;这里我们使用类的概念来美化我们的网站。 …

apt E: 无法定位软件包 winehq-stable

执行了 添加wine源 wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources还需要执行 更新源 apt update

【观察】星河AI网络:构筑AI时代高质量网络底座,撑起新质生产力发展的浩瀚星空...

知名科技杂志《连线》创始主编凯文凯利曾预测&#xff1a;“在未来的 100 年里&#xff0c;人工智能将超越任何一种人工力量&#xff0c;将人类引领到一个前所未有的时代。” 确实如此&#xff0c;犹如历史上蒸汽机、电力、计算机和互联网等通用技术一样&#xff0c;近20年来&a…

【邀请函】2024 PowerData数字经济-开源行:NineData联合主办,并探讨面向Doris实时数据仓库的应用

2024年8月25日&#xff0c;PowerData 技术社区以“数字经济-城市开源行”为主题技术沙龙将在杭州 NineData 公司举办。本次活动由 SelectDB、NineData、字节跳动ByConity、阿里云 Flink CDC 等联合主办&#xff0c;围绕技术应用&#xff0c;最佳实践、迁移同步、以及数据管理等…

NoSQL之Redis配置与优化(二)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

live2d + edge-tts 优雅的实现数字人讲话 ~

震惊&#xff01;live2d数字人竟开口说话 ~ 之前有想做数字人相关项目&#xff0c;查了一些方案。看了一些三方大厂的商用方案&#xff0c;口型有点尴尬&#xff0c;而且很多是采用视频流的方案&#xff0c;对流量的消耗很大。后来了解了live2d 技术&#xff0c;常在博客网页上…