news 2026/6/10 17:14:20

开源C# Winform CAN上位机源码分享

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开源C# Winform CAN上位机源码分享

C#Winform开源一个can上位机源码,工控试验源码,通讯源码。 can接口用的周立功的dll文件。 绘图用的zedgrah。 上位机功能是读取历史转速数据,作为控制的目标转速,通过can卡,发送给风扇控制器,复现风扇转速变化趋势。 或者自定义目标转速波形,进行相关可靠性试验。 代码实现了can通讯,excel文件读取,参数标定,曲线实时绘制等功能。 部分代码借鉴了有关大神

最近开源了一个超有意思的C# Winform CAN上位机源码,里面包含了工控试验源码和通讯源码,感觉可以给工控领域的小伙伴们带来不少便利,所以来和大家分享一下😃。

CAN接口与周立功的dll文件

这个项目里CAN接口用的是周立功的dll文件。咱在代码里引用这个dll文件后,就能轻松和CAN设备进行交互啦。就像下面这段代码:

// 假设这里是初始化CAN设备,具体的初始化函数可能会根据周立功dll的接口有所不同 using (CanDevice canDevice = new CanDevice()) { canDevice.Init(); // 后续就可以进行各种CAN通讯操作啦,比如发送和接收数据 canDevice.SendData(data); CanData receivedData = canDevice.ReceiveData(); }

分析:这里创建了一个CanDevice对象,通过调用Init方法初始化CAN设备。初始化完成后,就可以使用SendData方法发送数据,用ReceiveData方法接收数据。这样我们就能和连接到CAN总线上的设备顺畅地交流啦😎。

绘图与ZedGraph

绘图部分用的是ZedGraph,这玩意儿可好用了。它能帮我们轻松绘制各种图表,在这个项目里主要是用来展示转速变化趋势。看看下面这段简单的绘制曲线的代码:

// 创建一个ZedGraphControl对象 ZedGraphControl zgc = new ZedGraphControl(); // 添加一个曲线 GraphPane myPane = zgc.GraphPane; LineItem myCurve = myPane.AddCurve("转速曲线", xList, yList, Color.Red); // 更新图表 zgc.AxisChange(); zgc.Invalidate();

分析:首先创建了一个ZedGraphControl对象,然后获取它的GraphPane。接着在GraphPane里添加了一条曲线,设置了曲线的名称、X轴和Y轴的数据列表以及颜色。最后通过AxisChange方法更新坐标轴,用Invalidate方法刷新图表,这样就能实时看到绘制的曲线啦🧐。

上位机功能实现

上位机主要有两个很实用的功能。

读取历史转速数据作为目标转速

可以读取历史转速数据,把它作为控制的目标转速,然后通过CAN卡发送给风扇控制器,从而复现风扇转速变化趋势。实现这个功能的代码大概是这样的:

// 读取Excel文件中的历史转速数据 DataTable dataTable = ReadExcelData("历史转速数据.xlsx"); foreach (DataRow row in dataTable.Rows) { double targetSpeed = Convert.ToDouble(row["转速"]); // 通过CAN卡发送目标转速给风扇控制器 SendTargetSpeedToFanController(targetSpeed); }

分析:这里先调用ReadExcelData方法读取Excel文件里的历史转速数据,存放在DataTable中。然后遍历DataTable的每一行,获取转速数据并转换为双精度浮点数,再调用SendTargetSpeedToFanController方法把目标转速发送给风扇控制器,这样就能一步步复现风扇转速变化趋势啦😏。

自定义目标转速波形进行可靠性试验

还能自定义目标转速波形,进行相关可靠性试验。这就需要一些算法来生成自定义波形的数据,然后再发送出去。比如下面这个简单的生成正弦波形数据的示例:

List<double> xValues = new List<double>(); List<double> yValues = new List<double>(); for (double i = 0; i < 100; i += 0.1) { double x = i; double y = Math.Sin(x); xValues.Add(x); yValues.Add(y); // 发送自定义波形数据作为目标转速 SendTargetSpeedToFanController(y); }

分析:通过一个循环生成了正弦波形的X轴和Y轴数据,这里的Y轴数据就作为自定义的目标转速。然后把这些数据发送出去,就能进行可靠性试验啦。可以根据实际需求修改算法,生成各种不同的目标转速波形,来满足不同的试验要求🤓。

代码借鉴

部分代码借鉴了有关大神的,真的很感谢这些大神们的无私分享🙏。站在巨人的肩膀上才能让我们的项目进展得更快更好呀。

这个开源项目包含了CAN通讯、Excel文件读取、参数标定、曲线实时绘制等功能,对于工控领域需要进行CAN相关试验和开发的小伙伴来说,应该会有很大的帮助。希望大家能喜欢这个开源项目,也欢迎一起交流和改进😜。

C#Winform开源一个can上位机源码,工控试验源码,通讯源码。 can接口用的周立功的dll文件。 绘图用的zedgrah。 上位机功能是读取历史转速数据,作为控制的目标转速,通过can卡,发送给风扇控制器,复现风扇转速变化趋势。 或者自定义目标转速波形,进行相关可靠性试验。 代码实现了can通讯,excel文件读取,参数标定,曲线实时绘制等功能。 部分代码借鉴了有关大神

以上就是这次分享的全部内容啦,有兴趣的小伙伴可以去我的开源仓库看看具体代码哦😎。

[这里可以放上开源仓库的链接]

#CAN上位机 #工控试验 #C#代码 #开源项目

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:37:20

学长亲荐!8款AI论文工具测评:研究生开题报告神器大公开

学长亲荐&#xff01;8款AI论文工具测评&#xff1a;研究生开题报告神器大公开 2026年AI论文工具测评&#xff1a;精准匹配学术需求的高效助手 随着人工智能技术在学术领域的广泛应用&#xff0c;越来越多的研究生开始依赖AI工具提升论文写作效率。然而&#xff0c;面对市场上琳…

作者头像 李华
网站建设 2026/6/10 11:40:26

社会网络仿真软件:Gephi_(3).Gephi界面解析

Gephi界面解析 在上一节中&#xff0c;我们介绍了Gephi的基础概念和安装方法。本节将详细解析Gephi的界面&#xff0c;帮助您更好地理解和使用这款强大的社会网络分析工具。Gephi的界面设计直观且功能丰富&#xff0c;能够满足多种网络分析需求。我们将从以下几个方面进行详细…

作者头像 李华
网站建设 2026/6/10 10:09:50

SSM医院预约挂号管理系统q9ig2(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

系统程序文件列表系统项目功能&#xff1a;患者,医生,科室信息,预约挂号,医生值班SSM医院预约挂号管理系统开题报告一、题目SSM医院预约挂号管理系统的设计与实现二、选题背景与意义2.1 选题背景当前&#xff0c;我国医疗服务需求持续增长&#xff0c;传统医院挂号模式以现场排…

作者头像 李华
网站建设 2026/6/10 10:55:29

多项目同时进行如何做好进度管理?

许多企业都面临着同时进行多个项目的情况&#xff0c;因此项目经理经常需要管理多个项目。多项目管理的难点不仅在于项目数量增加&#xff0c;还在于资源分配不均、难以监控多个项目进度以及复杂的沟通协作。 一、多项目的进度管理为什么说很难&#xff1f; 对于技术团队而言…

作者头像 李华
网站建设 2026/6/10 16:43:55

红队行动,步步为营:如何隐匿踪迹,让蓝队无从溯源?

红队行动&#xff0c;步步为营&#xff1a;如何隐匿踪迹&#xff0c;让蓝队无从溯源&#xff1f; 作为红队&#xff0c;每一次成功的渗透&#xff0c;都像是完成了一场精密的“外科手术”。而真正的高手&#xff0c;不仅在于如何精准地切入目标&#xff0c;更在于如何悄无声息地…

作者头像 李华
网站建设 2026/6/9 21:15:43

如何在 CentOS 主机上配置集中式 Syslog 服务器

分析 Linux/Unix 系统及其他网络设备生成的系统日志&#xff08;Syslog&#xff09;&#xff0c;是IT管理员的核心工作内容之一。为提升日志分析的效率&#xff0c;管理员通常会采用日志集中采集的方式。本文详细介绍将 CentOS 系统配置为 rsyslog 集中采集服务器的具体步骤。R…

作者头像 李华