news 2026/5/2 6:31:54

开源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/5/1 3:39:02

华为OD机考双机位C卷 - 统计差异值大于相似值二元组个数 (Java Python JS C/C++ GO )

最新华为上机考试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 华为OD机考双机位C卷 - 统计差异值大于相似值二元组个数 题目描述 对于任意两个正整数A和B,定义它们之间的差异值和相似值: 差异值:A、B转换成二进制后,对于二进制的每一位,对应位置的bi…

作者头像 李华
网站建设 2026/5/1 3:38:35

华为OD机考双机位C卷 - 字符串拼接(Java Python JS C/C++ GO )

最新华为上机考试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 华为OD机考双机位C卷 - 字符串拼接 题目描述 给定 M(0 < M ≤ 30)个字符(a-z),从中取出任意字符(每个字符只能用一次)拼接成长度为 N(0 < N ≤ 5)的字符串, 要求相同的字符不…

作者头像 李华
网站建设 2026/5/1 3:38:55

Neo4j 在大数据领域的安全防护机制解读

Neo4j 在大数据领域的安全防护机制解读 关键词&#xff1a;Neo4j、图数据库、大数据安全、访问控制、加密技术 摘要&#xff1a;在大数据时代&#xff0c;图数据库因能高效处理复杂关系数据而被广泛应用&#xff08;如社交网络、金融风控&#xff09;&#xff0c;但数据泄露风险…

作者头像 李华
网站建设 2026/5/1 3:38:06

计算机毕业设计springboot中小学生家教系统 基于Spring Boot框架的中小学生在线辅导平台开发 Spring Boot驱动的中小学生家教服务管理系统设计与实现

计算机毕业设计springboot中小学生家教系统el3ca9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着信息技术的飞速发展&#xff0c;教育领域也在不断探索新的模式和工具来满足…

作者头像 李华
网站建设 2026/5/1 4:55:26

JSON文本格式化

JSON格式化是指将压缩或结构混乱的JSON数据转换为具有清晰缩进和层级结构的可读格式&#xff0c;便于人类阅读、调试和编辑。以下是几种常用的JSON格式化方法&#xff1a; 1、在线工具对于快速、无需安装的格式化需求&#xff0c;可以使用在线工具&#xff1a;‌JSON.cn‌&…

作者头像 李华
网站建设 2026/5/1 4:53:54

收藏!5年Java开发被优化后,我发现大模型才是程序员破局捷径

做了5年Java后端开发&#xff0c;上周突然被优化离职。抱着一丝希望投出30多份传统后端岗位&#xff0c;结果要么是已读不回、简历石沉大海&#xff0c;要么就是HR开出的薪资直接腰斩&#xff0c;连之前的一半都不到…… 下午刚点开程序员求职交流群&#xff0c;这条消息就被密…

作者头像 李华