- 博客(269)
- 资源 (92)
- 收藏
- 关注
原创 C#进行CAN【控制器局域网】通讯
CAN总线通信系统设计与实现 摘要: 本文介绍了一个基于C#的CAN总线通信系统设计方案,采用Peak公司的PCANBasic.NET接口实现硬件通信功能。系统具备以下主要功能:1) 支持多种波特率配置,实现CAN设备连接与管理;2) 提供消息收发功能,支持标准帧格式;3) 内置信号解析引擎,可自定义信号解析规则;4) 实时数据显示功能,包括网格视图和动态图表;5) 数据记录功能,支持CSV格式导出。系统采用多线程架构处理实时数据,通过MVC模式实现界面与逻辑分离,适用于汽车电子、工业控制等领域的CAN总线
2025-11-20 15:12:55
431
原创 ModbusRtu读取和写入一个寄存器示例
摘要: 本文介绍了基于C#实现的Modbus RTU串口通信工具开发。Modbus RTU是一种广泛应用于工业自动化的串行通信协议,采用主从架构,支持RS232/RS485接口。文章详细解析了读取(03H)和写入(06H)寄存器的报文格式,并提供了C#窗体应用程序的实现代码,包括串口配置、数据收发处理、CRC校验等功能。程序实现了基本的寄存器读写操作,采用事件驱动方式处理拆包粘包问题,具有报文显示和超时检测功能,可作为一个简易的Modbus RTU调试工具使用。
2025-11-15 11:25:00
300
原创 C#使用Chart图表控件实时显示运动坐标
摘要:本文介绍了使用C# Chart控件实时显示圆形运动轨迹的实现方法。通过将圆方程x²+y²=100等分为32个点,利用三角函数计算坐标点(radiuscosθ,radiussinθ)。程序包含窗体应用和辅助类CncGlobal,其中CncGlobal负责轨迹点计算和事件处理,窗体FormShowGlueTrack通过Chart控件展示轨迹,并提供开始/停止显示、清除轨迹等功能。关键点包括:设置Chart控件的等比例坐标轴、定时刷新机制(100ms间隔)和轨迹点限制(最多300个点)。测试按钮可验证圆轨迹
2025-11-11 11:57:09
461
原创 Python进阶(11-2):Python游戏编程-FlappyBird
《Flappy Bird游戏开发概述》摘要: Flappy Bird是一款由越南开发者阮哈东创作的经典休闲游戏,以其简单操作和高难度著称。游戏核心包含两个类:Bird类处理小鸟状态(飞行/跳跃/死亡)、位置和重力物理;PipeLine类负责管道障碍物。示例代码展示了游戏初始化、小鸟跳跃力学(速度递减)及基本画面渲染。游戏采用Pygame框架开发,运行帧率60FPS,包含背景图和小鸟三种状态(正常/红色/死亡)。开发重点在于物理模拟与碰撞检测的实现。
2025-10-24 19:57:31
165
原创 Python进阶(11):Python游戏编程
Python可通过Pygame模块进行游戏开发,该模块简化了底层处理,开发者可专注游戏逻辑实现。安装方法:在Pycharm终端输入"pip install pygame"。示例程序演示了基础功能:创建窗口、加载图片、实现小球反弹效果,包含事件处理、碰撞检测和画面更新等核心机制。程序通过pygame.init()初始化,设置时钟控制帧率,使用事件循环处理退出操作,并实现了简单的物理碰撞效果。该案例展示了Pygame在2D游戏开发中的基础应用流程。
2025-10-10 16:28:57
332
原创 Python进阶(10):GUI图形用户界面
本文介绍了Python中使用wxPython框架开发GUI图形用户界面的基础知识。主要内容包括:1)GUI程序三要素(输入、处理、输出);2)wxPython核心组件(App应用程序类、Frame框架类);3)常用控件(StaticText、Panel、TextCtrl、Button等)的使用方法;4)BoxSizer布局管理;5)事件绑定与处理机制。文中通过一个完整的Snake程序示例,演示了如何创建窗口、添加控件、处理按钮点击事件等基本操作,实现了一个包含文本框输入和按钮交互的简单GUI应用。该示例展示
2025-09-26 10:04:52
738
原创 Python进阶(9-2):Sqlite数据库操作
这里使用Sqlite数据库Sqlite数据库不是一个客户端-服务器结构的数据库引擎,而是一种嵌入式数据库,它的数据库就是一个文件,一般以.db作为后缀。sqlite最佳使用就是本地数据库,比如微信聊天记录就是存储在sqlite本地数据。sqlite不适用于数据较多的场景,也不适合于局域网之间进行交互的数据库。在Python中,内置了sqlite3,使用sqlite时,不需要安装任何模块,直接使用即可。在Mysql数据库操作上,仅做少许改动即可示例程序SqliteSnake.py
2025-09-21 16:18:57
204
原创 Python进阶(9):数据库操作
数据库操作数据库database用于将数据保存到磁盘上,为了便于程序保存和读取数据,而且能直接通过条件快速查询到指定的数据,就出现了数据库【Database】这种专门用于查询和存储的软件,以及一种通用的编程语言SQL。数据库连接对象(Connection Object)主要提供获取数据库游标【Cursor】对象和提交-回滚事务的方法,以及关闭数据库连接。游标对象:游标对象(Cursor Object)代表数据库中的游标,用于指示抓取数据库操作的上下文,主要提供执行sql语句,调用存储过程,获取查询结果
2025-09-21 15:40:55
890
原创 Python进阶(8):文件与目录操作
本文介绍了Python中文件与目录操作的基本方法。通过open()函数可创建文件对象进行读写操作,支持多种模式(r/w/a/b等)。使用with语句可自动管理文件资源。文件内容可通过read()、readline()等方法读取,write()方法写入。目录操作需借助os和os.path模块,包括创建/删除目录(mkdir/rmdir)、遍历目录(walk)、获取文件信息(stat)等。文章还演示了路径拼接、递归创建目录、文件重命名等实用功能,并提供了完整的示例代码展示如何获取文件属性信息(大小、创建时间等)
2025-09-21 09:49:53
900
原创 Python进阶(7):异常处理
Python异常处理机制简介:文章介绍了Python中常见的异常类型及处理方法,包括try-except语句捕获异常、try-except-else语句处理无异常情况、try-finally语句确保资源释放等。通过数学运算示例(如开平方、除法运算)演示了异常捕获过程,并展示了如何使用raise主动抛出异常,以及如何自定义异常信息。文章还提供了异常处理流程图,帮助理解程序执行流程。最后通过反正弦计算示例,说明了异常处理在实际编程中的应用。
2025-09-14 16:52:27
618
原创 祖冲之割圆术获取圆周率,获取第一个正N边行的周长除以直径的比率大于3.14
中国古代数学家通过割圆术计算圆周率,该方法利用圆内接正多边形逼近圆面积。魏晋数学家刘徽在《九章算术注》中系统提出这一方法,通过倍增边数使多边形周长接近圆周长。公式π=N×sin(π/N)展示了计算原理。现代C#程序验证发现,正57边形周长比首次超过3.14,正9820边形才超过3.1415926。祖冲之在南北朝时期将π精确到小数点后7位,展现了古代数学家的惊人计算能力和毅力。这一成就体现了中国古代数学的重要突破。
2025-09-10 09:42:23
585
原创 Python进阶(6-2):模块Modules
本文介绍了Python模块的基本概念和使用方法。重点讲解了内置标准模块shutil、os、re的功能,以及模块的__name__属性作用。通过math和random模块的实例演示,展示了如何计算三角函数、生成随机验证码。文章还对比了import和from..import两种导入方式的区别,并解释了顶级模块__name__值为"main"的特性。最后给出了一个生成8位随机验证码的完整示例代码,包含大小写字母和数字的随机组合。
2025-08-28 14:27:26
310
原创 Python进阶(6):模块Modules
Python模块是扩展名为.py的文件,类似于命名空间,用于组织代码、避免命名冲突并提高复用性。创建模块时需注意命名规范,通过import或from...import语句导入模块内容。包(Package)是包含__init__.py文件的目录,用于组织模块并解决模块名冲突问题。导入方式包括完整包名导入、from导入和直接导入定义。每个模块都有__name__变量,值为"main"时表示直接运行。示例展示了矩形和圆形计算模块的创建与使用,演示了模块化编程的优势。
2025-08-11 17:42:20
916
原创 C#获取图像指定像素位置的颜色
本文介绍了使用.NET Framework中System.Drawing.Bitmap类的GetPixel方法获取图像指定像素颜色值的技术方案。通过密封类Bitmap的GetPixel(int x, int y)方法,开发者可以精确获取图像任意坐标位置的Color结构体,包含RGB分量及透明度等属性。文中详细说明了位深度(BitDepth)原理,并提供了Windows窗体应用示例代码,演示了实时获取鼠标位置对应像素颜色信息的功能实现,包括显示RGB值、透明度及HSL色彩空间转换等特性。该技术适用于图像处理、
2025-08-09 12:13:04
517
原创 光标Cursor
CUR文件是静态光标格式,其结构与ICO图标文件相同但包含热点坐标标记点击位置。核心特点包括:1) 使用PE文件规范,含图像数据和透明掩码区;2) 热点坐标默认左上角,可自定义;3) 与ANI动态光标共享单帧结构。开发中可通过Cursor类加载,如游戏《古剑奇谭》通过代码动态切换自定义光标。制作工具如Microangelo支持PSD/JPG转CUR格式,但需注意高分辨率光标在低配设备可能闪烁。实际应用需处理多线程UI更新和热点位置逻辑。
2025-08-05 18:59:52
993
原创 Python进阶(5):类与继承
Python支持多继承,通过继承可以实现代码重用和类关系管理。定义子类时在类名后括号内指定多个父类即可实现多继承。子类可重写父类方法,若需调用父类初始化方法需使用super()函数。示例中Biology和Animal类被Dog类多重继承,Cat类单继承Animal并调用父类初始化。多继承机制使Python类设计更加灵活,能够实现复杂的功能组合。
2025-08-02 16:38:15
443
原创 C#将【程序集引用-依赖关系】展示到NetronLight图表中
本文介绍了如何在C#中将程序集引用关系可视化展示到NetronLight图表中。主要实现功能包括:1)修改NetronLight.SimpleRectangle的Paint事件使文本居中显示;2)创建FormShowAssemblyDependent窗体,包含树形视图和图表控件;3)递归获取程序集依赖关系并在树形视图中展示;4)根据节点层级在图表中生成矩形节点并自动布局;5)为存在引用关系的节点添加连接线。关键点包括计算文本宽度实现居中对齐、层级节点分组处理、自动布局算法以及引用关系连线处理。通过这种方式可
2025-07-18 17:28:57
361
原创 Python进阶(4):类与面向对象程序设计
摘要:面向对象编程(OOP)以对象为核心,对象具有唯一性,包含属性和行为。Python中一切都是对象,类(class)是封装对象属性和行为的载体,通过实例化(Instance)创建对象。OOP三大特征包括:封装(隐藏实现细节)、继承(复用父类特性)和多态(子类差异化实现)。类定义使用class关键字,init()方法类似构造函数,self参数代表实例本身。成员分为类属性和实例属性,访问控制通过下划线前缀实现(private/protected)。@property装饰器可将方法转为只读属性,并添加安全约束。
2025-07-14 17:02:36
815
原创 C#使用Roslyn框架编译器和代码分析(3):提取方法:某一个方法是否调用另一个方法
摘要:本文介绍了如何使用Roslyn框架分析C#代码中方法间的调用关系。通过创建部分类Program.Partial.cs,实现了一个IsCalledOtherMethod方法,该方法可以检测指定方法是否调用了另一个目标方法。该方法首先获取语法树中所有方法声明节点,然后查找指定方法内部的所有调用表达式,最后通过标识符匹配判断是否存在目标方法的调用。测试案例展示了该方法的使用方式,通过读取外部代码文件进行调用关系验证,并输出检测结果。该方法适用于代码分析和重构场景,能有效识别方法间的依赖关系。
2025-07-11 10:52:37
257
原创 C#将树图节点展示到NetronLight图表中
摘要:本文介绍了使用C#开源框架NetronLight将TreeView树形结构节点可视化展示为流程图的方法。通过创建窗体应用程序,添加NetronLight项目引用并扩展其GraphControl控件功能,实现了树节点到流程图的转换。重点演示了如何按节点层级组织布局、生成形状节点以及建立父子节点连线关系,最终将地理行政区划树形数据以层次化流程图形式呈现。项目代码包含树形数据生成、节点深度计算、形状节点定位和连线处理等核心功能模块。
2025-07-10 11:17:45
422
原创 C#使用MindFusion.Diagramming框架绘制流程图(4):为图表增加布局Layout
摘要:本文介绍了使用MindFusion.Diagramming框架实现加权图最短路径算法及多种布局方式的C#解决方案。文章详细说明了如何通过Layout基类派生不同布局样式(包括流程图、树形、分层、环绕等7种布局),并通过FormDijkstraDiagram窗体实现迪杰斯特拉算法计算节点间最短路径。代码展示了节点初始化、边连接、最短路径计算及可视化布局切换功能,其中特别演示了泳道布局和三角形布局两种典型效果。该实现通过下拉框切换不同布局方式,为加权图的可视化分析提供了灵活多样的展示方案。
2025-07-05 16:24:45
475
原创 C#使用开源框架NetronLight绘制流程图
本文介绍了使用开源框架NetronLight在C#中绘制流程图的方法。该框架核心由GraphControl控件组成,包含ShapeBase形状节点(矩形、椭圆、文本标签)和Connection连线。主要元素包括:1)Connector连接端点;2)ShapeBase形状基类及其三个子类;3)节点间连线。文章提供了完整的示例代码,演示如何创建各种形状节点并通过指定端点进行连线,最终形成完整的流程图结构。相比收费的MindFusion.Diagramming,NetronLight提供了轻量级的开源替代方案。
2025-07-05 15:21:04
969
1
原创 C#使用Roslyn框架编译器和代码分析(2):获取某一个方法是否调用另一个方法
摘要:本文介绍了使用Roslyn框架分析C#代码中方法调用关系的方法。通过解析语法树获取MethodDeclarationSyntax节点来识别声明的方法,并利用InvocationExpressionSyntax节点追踪方法间的调用关系。代码示例展示了如何提取方法声明信息(包括返回类型、参数列表)以及检测方法间的调用链(如方法A调用方法B)。文中还提供了完整的程序示例,演示了从代码文件中读取内容、解析语法树、遍历方法调用关系的全过程,帮助开发者实现代码结构分析和调用关系可视化。
2025-06-30 16:37:27
415
原创 C#使用Roslyn框架编译器和代码分析
摘要:本文介绍了Roslyn编译器平台中的Microsoft.CodeAnalysis.SyntaxNode类,它是.NET开源编译器平台的核心组件,用于表示源代码中的语法节点。文章通过一个控制台应用程序RoslynDemo演示了如何使用SyntaxNode进行代码分析,包括解析源代码文件、获取语法树、遍历方法声明及其语句结构,以及识别方法间的调用关系。程序通过分析测试代码code.txt,展示了如何获取方法参数列表、返回类型、方法体内容,并检测方法间的调用依赖关系。该示例体现了Roslyn在代码分析和重构
2025-06-30 09:09:42
476
原创 Ethernet、EtherCAT和Profinet区别与联系
以太网(Ethernet)和EtherCAT是两种重要的网络通信技术。以太网作为通用局域网技术,采用CSMA/CD协议实现数据传输,支持多种网络拓扑和TCP/IP协议栈。而EtherCAT是专为工业自动化设计的实时以太网协议,采用主从架构和硬件处理机制,实现微秒级通信延迟,支持环形网络拓扑。两者都基于标准以太网物理层,但EtherCAT优化了实时性能,特别适用于运动控制等工业场景。相比之下,Profinet是另一种工业以太网协议,与EtherCAT在技术实现和市场生态上存在差异。这三种技术在工业自动化领域各
2025-06-23 16:32:49
1690
原创 C#使用MindFusion.Diagramming框架绘制流程图(3):加权图的最短路径算法
使用MindFusion.Diagramming画出流程图,并按照当前示例图实现最短路径算法[迪杰斯特拉最短路径算法]我们使用MindFusion.Diagramming.DiagramItem的属性Weight权重来进行处理我们设定MindFusion.Diagramming.DiagramLink连接是双向的权重,连接的文本就显示为权重WeightMindFusion.Diagramming.DiagramNode节点之间的最短路径
2025-06-11 12:03:34
482
原创 C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例
摘要:本文介绍了如何使用MindFusion.Diagramming框架在C#中创建流程图应用程序。主要内容包括:1)新建Windows窗体项目并通过NuGet安装框架;2)添加DiagramView控件和Diagram组件;3)设置基本属性如网格显示、节点连接限制;4)实现节点创建、编辑和双击事件处理;5)添加"开始"和"结束"节点作为流程图基础;6)开发节点文本编辑窗口;7)实现获取所有节点和连接信息的按钮功能。文章通过代码示例详细演示了框架的基本使用方法,包括节
2025-06-07 16:47:20
911
原创 C#使用MindFusion.Diagramming框架绘制流程图(1):基础类型
摘要:MindFusion.Diagramming是一款基于C#的图表绘制框架,通过MindFusion.Diagramming.dll库实现。该框架构建于GDI+之上,支持创建流程图、网络图等多种图表类型。核心组件包括Diagram(图表容器)、DiagramNode(节点基类)、DiagramLink(连线)和各类具体节点(如ShapeNode几何节点、SvgNode矢量节点、TableNode表格节点等)。框架提供丰富的属性控制,如节点输入输出连接、形状样式、文本编辑等,并支持XML序列化、拖放操作和
2025-06-06 18:20:13
1188
原创 C#对集合进行分组IGroupingout TKey, out TElement>
C#中的Linq提供了GroupBy()方法,用于根据指定的键选择器函数对集合元素进行分组,返回一个IEnumerable<IGrouping<TKey, TSource>>对象。IGrouping<TKey, TElement>接口表示具有公共键的对象集合,其中TKey为键的类型,TElement
2025-05-22 20:21:20
462
原创 Python进阶(3):函数(接上篇)
两个下划线开始,两个下划线结束的属性代表特殊指定属性函数名.__name__ 打印函数名函数名.__defaults__ 打印默认值元组匿名函数(lambda)是指没有名字的函数,应用在需要一个函数但是又不想费神去命名这个函数的场合。通常情况下,这样的函数只使用一次。兰姆达lambda表达式与C#的兰姆达lambda表达式基本上一致,只是在语法上有所变化(C#使用"=>",python使用lambda关键字)
2025-04-12 15:27:16
647
原创 Python进阶(2):函数
在调用函数时,指定的实际参数的数量必须与形式参数的数量一致,否则将抛出 TypeError 异常,提示缺少必要的位置参数。在调用函数时,指定的实际参数的位置必须与形式参数的位置一致,否则将产生以下两种结果。
2025-04-10 19:53:04
942
原创 Python进阶(1):正则表达式
在实现时,可以使用re模块提供的方法(如 search()、match()、findall()等进行字符串处理,也可以先使用re 模块的 compile()方法将模式字符串转换为正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串。search()方法用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回 Match对象,否则返回 None。如果匹配成功,则返回包含匹配结构的列表,否则返回空列表。count:可选参数,表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配。
2025-04-10 09:44:45
1226
原创 Python入门(9):Python字符串
count()count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回否则返回出现的次数。find()该方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该子字符串时的索引。rfind()[从右往左查找]该方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该子字符串时的索引。index()index()方法与find()方法类似,也是用于检索是否包含指定的子字符串。只不过
2025-04-08 11:18:48
774
原创 Python入门(8):Python序列结构-集合
集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用“&”符号;进行并集运算时使用“|”符号:进行差集运算时使用“-”符号,进行对称差集运算时使用“^”符号。交集:获取两个集合的相同元素并集:合并两个集合,重复元素的只保留一个差集A-B:集合A中的元素,删除掉在B中的元素差集B-A:集合B中的元素,删除掉在A中的元素对称差集:并集集合中移除所有重复元素[并集-交集]
2025-04-03 16:48:24
316
原创 Python入门(7):Python序列结构-字典
定义字典时,每个元素都包含两个部分"键”和“值”,并且在“键”和“值”之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一个大括号“{}”中。使用del命令来删除字典。
2025-04-01 23:56:24
650
原创 Python入门(6):Python序列结构-元组
对于已经创建的元组,不再使用时,可以使用 del语句将其删除元组是不可变序列,所以我们不能对它的单个元素值进行修改,但是元组也不是完全不能修改。我们可以对元组进行重新赋值。在进行元组连接时,连接的内容必须都是元组。不能将元组和字符串或者列表进行连接。在进行元组连接时,如果要连接的元组只有一个元素,一定不要忘记后面的逗号元组推导式print("返回生成器对象:",randomNumber)
2025-04-01 16:21:50
456
原创 Python入门(5):Python序列结构-列表
切片类似于C#中的结构ArraySegment[部分数组]使用列表对象的 remove()方法删除元素时,如果指定的元素不存在,将出现不存在该元素异常,将其优化为先判断。
2025-03-11 14:01:52
1059
原创 Python入门(4):Python流程控制
python和C++一样,if 表达式只要为True,非零,非空,都是有效的语法执行,在判断if条件时,C#做的非常好 ,C#中必须 if(bool类型表达式) ,不能出现 if (1) 的情况,而在python中 if 1 if(a=1) if(a==1)都是有效语法.如果表达式的值为假,就跳过“语句块”,继续执行后面的语句,这种形式的if语句相当于汉语里的“如果……end:用于指定计数的结束值(但不包括该值,如range(7),则得到的值为 0~6,不包括 7),不能省略。
2025-03-08 11:09:32
887
原创 Python入门(3):Python运算符与表达式
Python 中的位运算符有按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)运算符。Python 的运算符的运算规则是:优先级高的运算先执行,优先级低的运算后执行,同一优先级的操作按照从左到右的顺序进行。使用时,可以直接把基本赋值运算符“=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给左边的变量。所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的“先乘除,后加减”是一个道理。比较运算符,也称为关系运算符。
2025-03-05 11:33:28
368
原创 Python入门(2):Python数据类型与转换
Python 是动态类型的语言(也称为弱类型语言),不需要像 Java 或者 C语言一样在使用变量前必须先声明变量的类型。虽然 Python 不需要先声明变量的类型,但有时仍然需要用到类型转换。
2025-03-04 19:22:28
285
AutoSaveTreeNodeDataDemo
2022-03-04
C#常见位操作 与或非 BitOperation
2022-03-05
Base64ConsoleDemo.rar
2021-12-11
Base64EncoderDemo.rar
2021-12-10
CommonFormDesignerDemo.rar
2021-05-09
AutoGenerateFormExtern.rar
2021-05-08
AutoGenerateForm.rar
2021-04-27
光标鼠标CursorDemo
2025-08-05
SaveDefaultXmlConfigDemo.rar
2022-06-29
C#使用GDI绘制九宫格
2022-05-24
九宫格与EightDiagram的画图GDI
2022-05-16
西西弗斯黑洞【123数字黑洞】 卡普雷卡尔黑洞(重排求差黑洞):三位数黑洞495
2022-05-04
FixedDemo C# fixed
2022-04-04
使用循环【迭代】来进行转化数字为中文
2022-03-25
NumberToChineseDemo
2022-03-24
根据运算符的优先级,依次添加到堆栈中 /// 最终返回的列表不存在左右小括号,只有数字 以及 加减乘除运算符
2022-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅