自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 C#算法之计数排序

算法释义:计数排序是一种非基于比较的排序算法,它不依赖于比较操作来确定元素的顺序,而是通过键值索引直接确定元素的输出位置。计数排序适用于一定范围内的整数排序。为什么说是一定范围之内呢?原因如下:计数排序的复杂度为Ο(n+k)(其中k是整数的范围),这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序。

2024-05-10 16:54:49 206 1

原创 C#编程模式之享元模式

创作背景:各位朋友,我们继续学习C#的编程模式,本文主要介绍享元模式。享元模式是一种结构型设计模式,它主要用于减少创建对象的数量,从而提高程序性能。它通过共享对象的方式来减少内存的使用,特别是系统中有大量相似对象的时候,这种模式尤其有效。

2024-05-10 11:45:26 386

原创 C#算法之堆排序算法

算法释义:堆排序算法的基本原理,其实就是利用二叉堆的数据结构,通过构建一个最大堆,然后将堆顶元素(最大值)与末尾元素交换,接着缩小堆的大小并重新调整堆,直到堆中只剩下一个元素。

2024-05-06 13:56:45 287 1

原创 C#编程模式之外观模式

创作背景:给位伙伴,五一小长假结束,我们继续对C#编程之路进行探索。本文将继续编程模式的研究,主要介绍外观模式。外观模式也称为门面模式,是一种结构型设计模式,它的目的是为子系统中的一组接口提供一个统一的高层接口,使各子系统更容易使用。它隐藏了子系统的复杂性,方便使用者访问。外观模式主要有两大部分组成,一个是外观,即高层可访问的接口类;一个是子系统,即实现具体功能的部分,通常包括多个类和接口。

2024-05-06 13:49:40 407

原创 C#编程模式之装饰模式

创作背景:朋友们,我们继续C#编程模式的学习,本文我们将一起探讨装饰模式。装饰模式也是一种结构型设计模式,它允许你通过在运行时向对象添加额外的功能,从而动态的修改对象的行为。装饰模式本质上还是继承的一种替换方式,通过组合的形式来扩展对象的功能。使用场景:当我们不想使用继承来扩展功能的时候,或者我们希望在运行时动态地添加功能的时候,再或者我们想要通过组合的形式来使对象获取更大的灵活性的时候,都可以使用装饰模式。

2024-04-29 14:18:31 556 2

原创 C#算法之希尔排序

算法释义:希尔排序,也被称为缩小增量排序,是一种有效的排序算法,它是插入排序的一种更高效的改进版,通过比较一定间隔的元素来工作,然后逐步较少间隔来排序。小编的理解啊,希尔排序的本质就是不断的分割、分割、再分割,直到间隔为1,这个时候,算法就与插入排序一致了。

2024-04-29 11:42:43 246

原创 C#算法之快速排序

算法释义:朋友们,我们在上文中说到,归并算法是一种分治算法,同样的,快速排序也是一种分治算法。所谓分治算法,原理上来说,是将规模为N的问题分解为若干个规模为较小的M的问题,这些子问题相互独立,并且原理相同,我们把子问题的解都求解完毕,自然就把最初的问题解决掉了。 再说快速排序,它的基本思想是选择一个元素作为“基准”(pivot),然后重新排列数组,使得所有比基准小的元素都在基准的左边,所有比基准大的元素都在基准的右边。这个过程称为分区。之后,递归地对基准左边和右边的子数组进行同样的操作。

2024-04-26 22:45:45 434 3

原创 C#算法之归并排序

算法释义:归并排序是一种分治算法,它采用分而治之的策略,将待排序的数组分成更小的部分,递归地对这些部分进行排序,然后将排序好的部分合并起来。它是一种比较稳定的排序算法。排序过程总结如下: 1、分解:数组拆分为若干子数组。 2、递归:对分解后的子数组进行归并排序。 3、合并:将排好序的子数组进行合并。

2024-04-26 22:38:13 426

原创 C#算法之插入排序算法

算法系列:各位朋友,我们继续C#算法的学习之路。今天同样是一个简单直观的排序算法--插入排序。插入排序的原理是通过构建有序序列,对未排序序列进行扫描,找到相应位置并插入。插入排序,在数据规模较小或者部分数据已经处于有序的情况下,其效率很高。插入排序的事件复杂度不唯一,平均值为n的平法,其中n是列表的长度。空间复杂度为1。

2024-04-24 14:47:43 360

原创 干货来袭!C#WPF使用MediaElement控件进行视频播放

创作背景:工控项目,如果能加入设备的视频介绍,那将是锦上添花的效果。所以小编进行了代码测试,并且简单的实现了视频播放功能。闲话少叙,接下来就看主要代码。

2024-04-24 11:02:48 1244

原创 C#算法之选择排序算法

算法系列:朋友们,我们继续了解C#的算法,这里介绍选择排序算法。选择排序算法也是一种比较简单直观的算法。它的工作原理是每一次从待排序的数据元素中选出最小(最大)的一个元素,存放在序列的起始位置,直到全部参与排序的数据都排完。它的时空复杂度和冒泡算法一样,时间复杂度为元素个数的平方,空间复杂度为1。

2024-04-23 16:55:56 118

原创 C#编程模式之组合模式(Composite)

创作背景:各位朋友,我们继续C#编程模式的探讨,这次探讨的模式是组合模式。它和桥接模式一样,是一种结构型设计模式,允许使用者将对象组合成树形结构来展示其“部分和整体”的层次结构。要求同样比较严格,用户对单个对象和组合对象的使用需具有一致性。组合模式我的理解就像是俄罗斯套娃,大圈套小圈😃😃。上代码!!!

2024-04-23 16:45:47 1336

原创 C#算法之冒泡排序算法

冒泡排序:是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。此外,冒泡排序是稳定的排序算法,这意味着相等的元素在排序后会保持它们原始的顺序。冒泡排序可以通过记录最后一次交换的位置来优化,因为在这个位置之后的元素已经在前面的迭代中被排序好了,所以不需要再次检查。这样可以减少不必要的比较,从而提高效率。创作灵感:数据处理过程中,最常见的就是排序问题,排序的方式由很多种,我会同各位朋友进行逐一的探讨,首先从比较简单的冒泡排序算法说起。

2024-04-22 15:24:34 328

原创 C#编程模式之桥接模式(Bridge)

创作背景:各位朋友,我们继续C#编程模式的交流,本文主要介绍桥接模式。小编查阅了很多资料,大部分文献给出的关于桥接模式的官方定义如下:是一种软设计模式,属于结构型模式,它用于将抽象部分与具体实现部分分离,以便它们可以独立地变化。这种模式通过创建一个连接(桥)来将抽象和实现部分分离,从而允许它们可以独立地进行扩展和变化。我自己的理解,桥接模式其实就是对产品进行“打碎”,若干个碎片都可以随意变化,然后根据需要,将变化后的所有碎片重组成一个新的产品,这就是桥接模式,它实现了解耦,非常方便产品的多元化创建。

2024-04-22 15:13:45 629 2

原创 C#Winform调用tcp/ip调用斑马打标机示例

创作背景:在工控行业中,打印二维码是一个很常用的功能,而斑马设备又是其中的佼佼者。有幸在一个项目中使用过斑马打印机。 程序的源码在文章末尾有连接,这里直接展示关键代码。代码不是终版,且均由我一个人完成,所以不存在泄密和侵权的情况,各位伙伴可以放心使用。

2024-04-19 17:11:54 670 1

原创 C#WPF通过串口(232协议)调用基恩士打标机进行打标

创作背景:突然想起来去年做了一个关于调用基恩士打标机的项目,据我的了解,大多数客户与基恩士设备的通讯都是TCP/IP模式,但是我们这个项目的甲方特意要求使用串口模式进行通讯,二者的指令都是一样的。下面将这个项目的关键处理点分享给大家。 想要精准控制一个设备,我们首先要了解设备的工作原理,以及控制顺序等信息。这里原理就不做过多介绍(因为我也不懂😂)。

2024-04-19 16:32:15 358 1

原创 C#WPF相对好看的登录界面

创作背景:每一个项目都会有一个登录窗口,我个人是比较在意登录窗口的美观程度的,起码来说不要让人看到登录窗口,就有劝退的既视感。这里给出一个相对简单,并且有种简约美感的界面,分享给大家。

2024-04-19 15:34:34 561 1

原创 C#编程模式之原型模式

模式介绍:各位朋友,我们继续探讨C#的编程模式,本文介绍原型模式。原型模式的本质,其实就拷贝加创建一个新的实例。那可能就会由朋友问了,这么简单的原理,直接New一个新的实例,然后把原型类赋值给新类不香么?朋友,确实可以这样,但是原型模式存在的意义远不止于此,且听我娓娓道来。 首先从应用来说,很多时候,我们New一个新的实例,会消耗很多资源或者耗费很多时间,我们使用原型模式的时候,就能省去耗时耗力的操作。举个最常见的例子,也是最常用的使用场景,对对象的历史节点进行保存、恢复、撤销等。

2024-04-19 10:44:46 569 1

原创 C#WPF使用LiveCharts绘制环线饼图

本文主要介绍使用LiveCharts绘制饼图的实际应用。

2024-04-18 15:42:08 475 1

原创 C#编程模式之建造者模式

模式介绍:各位伙伴,我们继续对编程模式进行深入浅出的探讨,本文主要介绍的模式是建造者模式。相对与工厂模式关注单一性质的产品而言,建造者模式更关注的是复杂产品的创建,尤其是产品各个部分的创建过程。建造者模式会根据各部分的不同来创建不同的产品。 适用性介绍:工厂模式适用于创建单一性质的产品;建造者模式适用于创建复杂、由多个部分组成的对象。

2024-04-18 10:43:41 720 1

原创 C# WPF 使用LiveCharts绘制折线图的一些技巧

创作背景:近期项目由涉及到使用LiveCharts绘制曲线的需求,在项目推进过程中,反复去精进磨合,总结了一小部分关于LiveCharts使用的过程和技巧,整理如下:1、在NuGet程序包中搜索如下图所示的内容并添加到程序中。2、在需要使用LiveCharts的窗体中添加如下引用。3、绘制图像,这里以折线图为例子。4、注意,在默认绘制折线图的时候,折线下面会有虚影,入下图所示:

2024-04-17 14:25:40 1213

原创 C#编程模式之抽象工厂模式

模式介绍:今天我们介绍第三中编程模式,抽象工厂模式。顾名思义还是和工厂相关,同时也与工厂方法模式有着千丝万缕的联系,但是其本质又与工厂方法模式大相径庭。这里先来简单介绍下二者的区别,以免混淆。抽象工厂模式:提供一个接口,用于创建一系列相关的对象,而无需指定具体的类。它适用于需要一次性创建多个相关对象,以形成一个族群。抽象工厂模式通常由抽象工厂、具体工厂、抽象产品和具体产品组成。通过切换具体工厂实现类,可以改变整个族群。

2024-04-17 13:59:01 584

原创 C# WPF项目打包成一个exe安装包教程(VS2022)

创作背景:一直想找到一个合适方法将项目打包成一个安装包,曾经尝试很多次,也再网上找了很多资料,这里进行一个总结,希望能给有需要的朋友提供一份思路,避免走我走过的弯路。****特别注意**** :一定要将需要打包项目和Set up项目放到一个解决方案中!!!!

2024-04-16 15:12:09 5027 3

原创 C#编程模式之工厂方法模式

工厂模式主要有以下分类:1、简单工厂模式;2、工厂方法模式;3、抽象工厂模式。简单工厂模式暂时不做介绍,抽象工厂模式会在后续更新,这里将会介绍工厂方法模式。工厂方法模式的核心是将对象的创建抽象成一个工厂接口,让子类来实现这个接口以创建具体的对象。

2024-04-16 13:28:01 175

原创 C#编程模式之单例模式

创作背景:我个人对于编程本质的理解就是“数据+算法”,衍生出来的就是编程模式,编程模式就类似于骨架,会使你的程序更具立体化。在我们的日常应用程序中,总有需要保持一个唯一实例,例如IO处理、数据操作等,我们需要创建一个公共实例来节省资源的开销。但是这种延迟加载可能会使代码难以维护,所以在需要延迟加载、避免性能开销且确保线程安全的情况下,使用Lazy实现单例模式更好,如果无法确保以上内容,建议使用方式一,它也能满足单例使用需求。这是我在项目中的实现单例的方式,其中的处理逻辑各位伙伴可自行修改。

2024-04-15 10:25:06 337 1

原创 C#局域网通断的判断(类似ping命令)

创作背景:在项目运行期间,偶尔会有网络邻居通讯的情况,这时需要先判断与网络邻居的通讯是否正常。我们知道这种情况通常会使用命令行,执行ping命令来判断与某个网络邻居地址是否连接。那么在C#中如何进行这样的判断呢?其中第一个参数修改为需要连接的IP地址,第二个参数是超时时间设置。

2024-04-15 09:34:27 233 1

原创 C#WPF项目进行开机自启动设置

创作背景:某些功能性服务工具,需要开机自启动,基于此,针对之前的时间同步程序进行改进,增加开机自启动功能。 功能介绍:1、检查当前项目是否已经设置开机自启动功能;2、设置开机自启动和取消开机自启动。 功能实现:1、检查项目开机自启动设置。2、设置开机自启动。3、取消开机自启动。

2024-04-12 09:11:41 561

原创 C#基于最小二乘法对曲线进行线性拟合,并计算斜率

创作动力:在工控测试类项目中,经常需要对测试数据进行深度计算,其中就包含斜率的计算,为了验证计算的正确与否,需要对excel数据进行二次验证,此时需要一款能够读取excel数据并进行线性拟合计算的斜率的小工具,本项目就应运而生。文章末尾包含源码链接。功能介绍:1、能够获取Excel中所有sheet页的内容,并赋值到DataTable。 2、对获取到的数据使用最小二乘法来进行线性拟合。

2024-04-11 10:59:00 495 1

原创 C#WPF与多PLC通讯、心跳、时间同步

项目背景:在产线中,经常出现PLC触摸屏的时间与真实时间不一致的情况,因此需要定时进行时间同步。实现功能:1、通过S7实现PC与PLC通讯;2、通过创建自定义控件来实现多PLC通讯(将PLC实例到自定义控件中,通过控件来控制PLC通断);3、定时发送心跳信号。

2024-04-10 16:17:10 463 1

原创 C#WPF与PLC通讯之心跳

创作背景:在工控行业,PC与PLC之间的通断直接决定了整体系统的可靠性。为了监控PC与PLC是否处于正常连接状态,引入了心跳机制,顾名思义就是通过模拟心脏跳动,在程序中即为定时通讯。我这里只做PC给PLC心跳信号,思路如下:创建PLC连接,定时向PLC固定的DB地址中写入变化的值(1与2交替变化)。

2024-04-10 15:48:23 705 1

原创 C#基于winform创建触摸屏可用的模拟键盘

创建一个可以运行在触摸屏上的模拟键盘,开机自启动,启动后显示的是圆形悬浮框,当有输入需求时(改为鼠标左键长按300ms以上),显示键盘,或者双击圆形悬浮框显示键盘。我们知道想要完成此功能,大致需要如下知识储备:1、使用SendKeys类来模拟键盘输入。;2、使用全局钩子来监控某些触发事件(例如何时需要显示键盘等)。在开放过程中,也有一些小tips,在后文涉及到的地方会有详尽描述,文章末尾也有相关源码链接。

2024-04-09 14:37:34 945

原创 C# ModbusRtu 通讯例程详解

工控,通讯则是基础。今天我们就来一起学习一下关于ModbusRtu通讯的相关内容。适合初学者积累相关经验。本文含有ModbusRtu通讯库,通讯示例。 硬件设备包括电推杆、压力变送器等。ModbusRtu通讯库内含方法包括读取输入线圈、读取输出线圈、读取输出寄存器、发送指令、CRC校验等。

2023-06-02 14:06:19 3318

原创 这是我的第一篇文章

目前从事的行业属于非标自动化,主要是做上位机,涉及到的技术点主要包括通讯、数据处理等。涵盖PLC、MES、打标等。基本上就是Win form和WPF为主,欢迎各位大手观摩指导.。

2023-05-30 16:42:19 87 1

C#winform使用TCP/IP调用斑马打印机打印二维码

C#winform使用TCP/IP调用斑马打印机打印二维码。其中包含使用C#模拟命令行代码执行ping指令的功能。

2024-04-19

C#编程模式之工厂方法模式+抽象工厂模式

本资源主要介绍工厂方法模式和抽象工厂模式。二者都与工厂相关,,但是其本质又大相径庭。这里先来简单介绍下二者的区别,以免混淆。 抽象工厂模式:提供一个接口,用于创建一系列相关的对象,而无需指定具体的类。它适用于需要一次性创建多个相关对象,以形成一个族群。抽象工厂模式通常由抽象工厂、具体工厂、抽象产品和具体产品组成。通过切换具体工厂实现类,可以改变整个族群。 工厂方法模式:它将对象的创建延迟到子类中进行。由子类决定具体实例化哪个类。通过切换具体工厂的子类,来改变单个实例(也可说产品)。

2024-04-17

C# winform基于最小二乘法计算斜率

这是一个C#winform项目,能够获取Excel中所有sheet页的内容,并赋值到DataTable。对获取到的数据使用最小二乘法来进行线性拟合,在对拟合后的数据进行斜率计算。同时,附赠NPOIHelper类,此类包含多种操作excel的方法,包括将DataTable数据存储到excel等。

2024-04-11

C#WPF与PLC心跳通讯,时间同步等

C#WPF项目,通过S7与多个西门子PLC通讯,能实现心跳机制,能定时发送时间同步信号;包含悬浮框功能,最小化变成悬浮框,双击悬浮框恢复至主页面。

2024-04-10

C#基于winform所创建的模拟键盘程序

C#基于winform所创建的模拟键盘程序,因为有项目需求,所以自定义一个模拟键盘。包含模拟发送键盘指令、最小化显示悬浮框等。项目能直接运行在触摸屏上。在这个程序中,能运用到如下知识:1、通过win32发送键盘直连;2、通过SendKeys.Send、SendKeys.SendWait等发送指令;3、winform窗体变成圆形,且填充图片等

2024-04-09

C# winform TCP-IP 服务端 可实现一个IP地址多端口号同时启动服务

这是一个基于C# winform TCP-IP 服务端程序。可实现一个IP地址多端口号同时启动服务。包含创建TCP-IP服务、监听客户端反馈的消息、处理并回复消息给客户端。

2023-06-16

C#含有ModbusRtu通讯库,通讯示例 硬件设备测试例程

C#含有ModbusRtu通讯库,通讯示例。 硬件设备包括电推杆、压力变送器等。ModbusRtu通讯库内含方法包括读取输入线圈、读取输出线圈、读取输出寄存器、发送指令、CRC校验等。

2023-06-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除