从零搭建工业控制系统(十九):图表可视化——LiveCharts2集成
图表可视化LiveCharts2集成这是「从零搭建工业控制系统」系列第19篇。前面讲了数据存储这篇讲数据展示——怎么用LiveCharts2在WPF里画实时图表。为什么选LiveCharts2工业系统需要实时图表——气体流量趋势、压力变化曲线、温度走势。WPF自带的图表控件没有得用第三方。选型时对比了几个库优点缺点LiveCharts2WPF原生、开源、实时更新好文档少OxyPlot功能全、成熟API复杂、实时更新慢ScottPlot性能好WPF支持弱自己画Canvas完全可控工作量大选LiveCharts2的原因实时更新做得好。工业数据每秒都在变图表要跟着变。LiveCharts2用ObservableCollection绑定数据变了图表自动更新不用手动刷新。基本折线图最简单的实时折线图lvc:CartesianChartSeries{Binding SeriesCollection}/publicObservableCollectionISeriesSeriesCollection{get;}new();// 初始化SeriesCollection.Add(newLineSeriesdouble{ValuesnewObservableCollectiondouble(),Name通道A流量,StrokenewSolidColorPaint(SKColors.SteelBlue),FillnewSolidColorPaint(SKColors.SteelBlue.WithAlpha(50))});添加数据点varvalues(ObservableCollectiondouble)SeriesCollection[0].Values;values.Add(currentFlow);数据点加了图表自动更新。不用调 InvalidateVisual不用手动刷新。多通道同时显示气体流量有多个通道需要同时画在一张图上foreach(varchannelinchannels){SeriesCollection.Add(newLineSeriesdouble{ValuesnewObservableCollectiondouble(),Namechannel.Name,StrokenewSolidColorPaint(channel.Color)});}每条线一个Series颜色区分。图例自动生成。性能优化数据点控制这是最大的坑。实时图表每秒加一个点跑一天就是86400个点。图表渲染8万个点会卡。解决办法限制数据点数量。privateconstintMAX_POINTS300;// 最多300个点privatevoidAddDataPoint(ObservableCollectiondoublevalues,doublenewValue){values.Add(newValue);if(values.CountMAX_POINTS){values.RemoveAt(0);// 移除最老的点}}300个点相当于5分钟的数据每秒一个点。操作员看趋势不需要看一整天的数据看最近几分钟就够了。如果要看历史数据从数据库查用单独的历史图表展示不影响实时图表的性能。性能优化渲染降频另一个性能问题数据每秒更新但图表不需要每秒重绘。人眼分辨不出60fps以上的变化。privateDateTime_lastUpdateDateTime.MinValue;privateconstintUPDATE_INTERVAL_MS200;// 200ms更新一次privatevoidOnDataReceived(doublevalue){if((DateTime.Now-_lastUpdate).TotalMillisecondsUPDATE_INTERVAL_MS)return;_lastUpdateDateTime.Now;AddDataPoint(values,value);}200ms更新一次每秒5帧足够看趋势了。CPU占用从30%降到5%。轴配置时间轴用日期格式lvc:CartesianChartlvc:CartesianChart.XAxeslvc:AxisLabeler{Binding TimeSpanLabeler}//lvc:CartesianChart.XAxeslvc:CartesianChart.YAxeslvc:AxisName流量(sccm)MinLimit0//lvc:CartesianChart.YAxes/lvc:CartesianChartY轴设了MinLimit0流量不会显示负数。踩坑记录坑1数据点太多卡顿一开始没限制数据点数量跑了两小时后图表卡得动不了。加了MAX_POINTS限制后解决。坑2图表不释放内存页面切换后图表还在后台更新。需要在页面卸载时清空SeriesCollection取消订阅数据源。坑3轴标签格式化时间轴默认显示秒数操作员看不懂。自定义Labeler改成HH:mm:ss格式。本篇小结概念关键做法实时绑定ObservableCollection自动更新多通道每条线一个Series数据点限制最多300个点FIFO渲染降频200ms更新一次轴配置自定义Labeler和范围实时图表的核心控制数据量。点太多会卡更新太快会卡。限制点数降频更新是关键。下期预告第20篇MVVM消息传递机制图表讲完了下篇讲ViewModel之间怎么通信——消息机制、弱引用、避免内存泄漏。

相关新闻

嵌入式三温区酒柜:家庭饮品与轻食存储的场景化解决方案

嵌入式三温区酒柜:家庭饮品与轻食存储的场景化解决方案

你有没有遇到过这样的场景:朋友来家里聚会,想从冰箱里拿瓶冰镇啤酒,却发现啤酒和蔬菜挤在一起,拿取不便;想开瓶红酒助兴,又担心冰箱的震动和温度波动影响了酒的口感;夏天想随时喝到冰爽的饮料&a…

2026/9/2 7:29:16 阅读更多 →
1.电机停稳后重启仍过流?PWM寄存器的“隐形坑”及解决方案

1.电机停稳后重启仍过流?PWM寄存器的“隐形坑”及解决方案

在电机控制开发中,你是否遇到过这种情况:电机已经完全停稳,按下启动按钮却瞬间触发过流保护?很多人第一反应是电机没停干净,但真正容易被忽略的,往往是PWM寄存器里的“旧指令”。本文将结合视频中的核心原理…

2026/9/2 7:29:16 阅读更多 →
CVPR 2026 | DIQ:只用1%精选微调数据,让医学推理更高效,媲美全量数据

CVPR 2026 | DIQ:只用1%精选微调数据,让医学推理更高效,媲美全量数据

引言 大语言模型在医疗推理中展现出巨大潜力,但现有微调方法往往依赖海量标注数据,不仅计算成本高昂,且大量冗余、低质量的样本反而会稀释模型的临床推理能力。如何在有限数据下实现高效、精准的医学推理,成为亟待解决的核心难题。…

2026/9/2 7:29:16 阅读更多 →

最新新闻

前字节、腾讯专家孙鹏加盟星尘智能,强化机器人强化学习布局!

前字节、腾讯专家孙鹏加盟星尘智能,强化机器人强化学习布局!

9月2日,前字节跳动强化学习专家、前腾讯Robotics X智能体中心负责人孙鹏博士正式加入星尘智能,将负责机器人强化学习方向技术研发与应用探索。孙鹏履历亮点多孙鹏毕业于清华大学,后在康奈尔大学和罗格斯大学从事博士后研究。他长期专注强化学…

2026/9/3 9:53:06 阅读更多 →
2026 Yandex Market运营攻略:从选品到履约的完整指南

2026 Yandex Market运营攻略:从选品到履约的完整指南

2026 Yandex Market峰会的内容,很多做俄罗斯市场的卖家都盯着看。这场峰会不只是一次招商宣讲,它实际上把这几年俄罗斯电商平台的变化集中摆了出来:流量结构、履约方式、卖家工具、广告产品、合规要求,几乎每个环节都在变。对于想…

2026/9/3 9:53:06 阅读更多 →
AI Agent安全扫描器:守护MCP Servers与Agent Skills的完整实践

AI Agent安全扫描器:守护MCP Servers与Agent Skills的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 9:53:06 阅读更多 →
Qt5实战入门:CMake构建+跨平台部署+信号槽避坑指南

Qt5实战入门:CMake构建+跨平台部署+信号槽避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 9:53:06 阅读更多 →
告别泡茶弃渣:挤压膨化技术如何重塑枸杞子的食用价值——知医邦枸杞子泡泡米的工艺攻坚

告别泡茶弃渣:挤压膨化技术如何重塑枸杞子的食用价值——知医邦枸杞子泡泡米的工艺攻坚

一、枸杞子为什么要膨化:从食用困境到工艺突破1.1 食用角度:全果可食却被浪费的资源悖论枸杞子是茄科植物宁夏枸杞(Lycium barbarum L.)的干燥成熟果实,味甘、性平,归肝、肾经,为滋补肝肾、益精…

2026/9/3 9:53:06 阅读更多 →
drawio-desktop主进程源码精读:3900行electron.js里的窗口管理与IPC通信技巧

drawio-desktop主进程源码精读:3900行electron.js里的窗口管理与IPC通信技巧

drawio-desktop主进程源码精读:3900行electron.js里的窗口管理与IPC通信技巧 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop drawio-desktop 是 draw.io 的官方 Ele…

2026/9/3 9:52:05 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →