自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(160)
  • 资源 (45)
  • 收藏
  • 关注

原创 在ScadaFramework里配置采集Modbus设备

ScadaFramework是一个实现SCADA功能的软件工具,经过简单配置之后,即可采集设备数据,并进行存储、监控、组态可视化,并可将数据上传至平台。本文将介绍如何在ScadaFramework中配置,以采集Modbus协议的设备。

2024-04-01 09:46:50 692

原创 DLMS协议开发指引

某些电表一开始未进入DLMS传送模式,需要进行切换。按照IEC62056-21协议模式E的规定,先发送以下内容:典型的串口设置为:波特率300,校验位Even,数据位7。(也可校验位无,数据位8)V:ASCII码的2,代表使用HDLC。Y:ASCII码的2,代表使用HDLC。Z:ASCII码,波特率选择。1:600Bd2:1200Bd3:2400Bd4:4800Bd5:9600Bd6:19200Bd根据以上设置,此时波特率可调整为9600,进入DLMS数据传送。

2023-08-01 09:44:04 3090 2

原创 在组态软件中开发脚本功能的方法

大多数的组态软件都具有脚本功能,脚本可能是VBS、Lua、C#等语言,也可能是厂家自定义的一种语言。通过脚本,组态软件可以实现非常灵活的功能。。外部数据,最重要的是采集到的数据,也可能是用户创建的配置文件。而改变可视化元素,则包括创建、改变位置、改变状态、删除等操作。本文通过一个示例,介绍在组态软件中实现脚本功能的方法。

2023-06-07 11:05:41 1783

原创 ASP.NET Core Web API用户身份验证

ASP.NET Core Web API用户身份验证的方法有很多,本文只介绍JWT方法。JWT实现了服务端无状态,在分布式服务、会话一致性、单点登录等方面凸显优势,不占用服务端资源。简单来说,JWT的验证过程如下所示:(1)通过用户名和密码获取一个Token。(2)访问API时,加上这个Token。Token包含过期时间、用户角色等信息,可以在多种场合灵活使用。

2023-05-07 10:28:01 3746 5

原创 三级封锁协议实例

在网上看了很多三级封锁协议的例子,大部分都是不正确的(例如T1加了X锁后,T2还加S锁)。以下是正确的实例。首先描述一下三级封锁协议。一级封锁:要写数据,写前加X锁,事务结束才释放。二级封锁:在一级封锁的基础上,要读数据,读前加S锁,读后释放。三级封锁:在一级封锁的基础上,要读数据,读前加S锁,事务结束才释放。一级封锁可以解决丢失修改问题,二级封锁可以再解决读脏数据问题,三级封锁可以再解决不可重复读问题。

2023-04-19 11:20:21 662

原创 LINQ操作汇总

使用方法。以下代码,将原数组,按照每个单词的长度进行升序排序。

2023-02-22 10:59:51 2534

原创 在线流程图和思维导图开发技术详解(六)

在HTML中,给定一个文本范围,超长的文本会自动换行。但在SVG中,文本是不会换行的,只会超出后被裁剪。两者在样式的写法上基本相同,唯一需要注意的是HTML中的color需要转成SVG里的fill。扫描整个根div,生成一个节点树,标注每个节点的字体信息,以及选中信息。这也是很困难的,因为有些节点已经合并或分裂,选中的位置信息需要更新。,当我们把文字2的字体大小改为14px之后,它就跟文字1一样了,两段文字没必要用两个span,合在一起即可。本项目显示的文本皆是富文本,也就是在一个框里面,文本有多种样式。

2022-09-20 16:07:32 617

原创 在线流程图和思维导图开发技术详解(五)

最新的操作会被撤销,恢复操作之前的流程图。有一种方式是,保存一张初始图,然后把每次的操作都记录下来。还有一种方法,也是本项目所采用的方法,就是把所有图元的信息保存起来,序列化成一个字符串。当需要撤销时,从Stack里取出字符串,反序列化成图元信息,覆盖当前的图元信息,重新加载和渲染。在上一节中,我们已经提到,在数据保存时,svg数据也保存了下来。当存在图片时,img引用一个svg,svg又引用一张图片,就会显示不出现。项目后端使用.NET开发,在NuGet中引用一个名为Svg的库,即可实现svg的转换。

2022-09-20 16:05:52 411

原创 在线流程图和思维导图开发技术详解(四)

当鼠标按下时,我们需要判断按下的地方是在图元上(实际上还要分是否选中、是否锁定等情况)还是在空白的地方。最后鼠标弹起,完成一次事件。在所有处理器中,鼠标事件处理器是最为复杂的,因为在整个页面中,基本可以使用鼠标完成所有功能。除此之外,鼠标的动作还需要配置辅助键,例如CTRL和SHIFT,在拖动图元变换时会用到这两个键。每个动作之后,只需要对当前动作作出处理(例如改变光标、记录当前位置等),然后改变状态即可。可以看到,对于上面的动作,如果不断使用if/else去处理,这个代码层次将会非常多和冗长,难以管理。

2022-09-20 16:04:06 370

原创 在线流程图和思维导图开发技术详解(三)

例如在不保持比例的情况下,只要拖动位置跟“左”有关的,矩形的x坐标和宽度都要修改,而跟“右”有关的,只要修改宽度即可。在计算之前,整棵树的大小是未知的,树摆放在哪里不好把握。我们一开始计算的时候,会假定根节点的坐标是(0,0),然后计算出每个节点的相对坐标。以内部矩形的左上角为例,L1、L2为组矩形的长和宽,l1、l2是左上角点在两条边上的投影点距离组矩形原点的距离。旋转矩形的描述是rect(x,y,width,height,angle),直接给定一个鼠标点P(x,y),无法判断这个点跟旋转矩形的关系。

2022-09-20 16:02:30 1791

原创 在线流程图和思维导图开发技术详解(二)

图元数据描述是本项目开发的一个难点。图元数据的特点包括:(1)图元种类众多,每种图元有自己独特的属性。(2)某些种类的图元存在公共的属性。例如矩形、图片的位置都是通过一个矩形来描述的。(3)管理器对图元有共同的操作。例如把图片数据转化为可视HTML,鼠标拖动时的平移动作等。这些操作在图元内部的实现并不一致。(4)图元存在一些即使而不需要保存的属性,例如是否选中,这是一个不需要保存,每次打开时都有默认值的属性。在本项目中,图元具有以下的数据定义:}这就是图元的基类。

2022-09-20 15:58:01 859 1

原创 在线流程图和思维导图开发技术详解(一)

本项目的最终结果是一个同时具有流程图和思维导图功能的Web版制图软件。能够制作出如下图所示的图:项目具有以下的一些功能:类似软件的常规功能:元件库、分组管理、层次管理、锁定管理、图形样式、文字样式、连接线样式等。用户可添加自定义图片,包括png、jpg、gif、svg等格式,以及一种项目自定义的格式。流程图和思维导图可同时在一个页面中完成编辑。思维导图可变换左侧、右侧、底部、双侧等模式。整图转换为png、svg、jpg等格式。文本支持内部多种样式。

2022-09-20 15:55:52 1320

原创 判断点是否在贝塞尔曲线(Bézier curve)上的方法

但贝塞尔曲线(Bézier curve)并不是y关于x的方程,而是(x,y)关于一个参数t的方程。利用同样的方法,我们也可以使用y求出若干个t。然后比较用x求出的t和用y求出的t,如果都在[0,1]范围内,而且是接近的,那我们可以认为点P就在贝塞尔曲线上。假设贝塞尔曲线经过点P0(x0,y0)、P1(x1,y1)、P2(x2,y2)、P3(x3,y3),现在要判断点P(x,y)是否在曲线上。现在,如果我们需要判断一个点P(x,y)是否在贝塞尔曲线上,就要找到一个t,代入方程中,求出(x,y)跟P一致。...

2022-08-09 15:16:48 1285

原创 contenteditable格式化html文本转svg

把文字包住,字体对应face属性,字体颜色对应color属性,字体大小对应size属性。我们知道,在一个div里加上contenteditable="true"之后,它就变成了一个可编辑的框,而且是能满足基本需求的富文本编辑框。算法的思想是一个字一个字的选取,获取选择部分的位置,当选择部分的y值比第一个字的y值大(而且超过了某个阈值),则从这个字符开始换行了。上文中已经说过,HTML里的文本是会自动换行的,但SVG里的文本不会。如果是BR结点,结束上一行,添加新的一行,只有BR结点这个元素,再新建一行。..

2022-07-28 17:32:40 988

原创 svg文本<text>详解

在SVG中,text的基本用法如下:其效果如下图所示: 注意上图中红点的位置坐标即为(20,20)。可以看到,默认情况下,text使用以下默认属性:可以对文字的颜色、字体、字体大小、是否粗体、是否有下划线、是否斜体等进行设置。需要注意的是,样式基本与html相同,除了color,svg中使用fill进行颜色设置。其效果如下图所示:水平对齐的方式有三种,分别是左对齐、居中对齐、右对齐。其设置的属性是text-anchor,对应的值分别是start、middle、end。默认值是start。居中对齐...

2022-07-14 09:40:09 11991

原创 判断空间四点(多点)共面的计算方法

如果三点非共线,那么三点必然共面。如果现在有第四点,如何判断这个点跟前三点共面呢?如果有超过四个点,实际上也是从第四个点开始,一个个判断是否跟前三个点共面。可以使用向量和行列式的方法去计算。我们先来看行列式的几何意义。对于二阶行列式,它的行向量组成了一个平行四边形,而其值就是平行四边形的面积。类似的,对于三阶行列式,它的行向量组成了一个平行六面体,而其值就是这个平行六面体的体积。四个点刚好能形成三个向量,而如果四点不共面,那么这个平行六面体的体积就不会是0。反过来说,如果平行六面体的体积是0,也就是如果行列

2022-06-21 16:22:56 4000

原创 已知两点求直线一般方程,已知三点求平面一般方程

我们知道,直线的一般方程是,而平面的一般方程是。对于直线方程,有ABC三个未知数。但我们知道,已知两个点只能求出两个未知数。对于平面方程是同理的。事实上,一般方程里的参数是有冗余的。例如,和这两个方程事实上描述的是同一条直线。那我们可不可以直接把一个系数约掉呢,例如变成。很遗憾这行不通,因为A有可能是0。任何一个参数都有可能是0,无法约掉。这样的话,在求解的时候,我们就需要分类讨论。先判断某一个参数是否为0,如果是0,则可以去掉该参数。少了一个参数,点数和未知数的数量相同,就可以求解了。如果没有参数是0,那

2022-06-08 06:51:01 1283 1

原创 三维空间圆弧描述方法

在以下的描述方法中,我们用到:圆心:(x0,y0,z0),需3个数值。弧起点:(x1,y1,z1),需3个数值。弧终点:(x2,y2,z2),需3个数值。弧方向:(xd,yd,zd),长度不重要,只需表达出方向,所以需要2个数值。弧度:θ,需1个数值。描述方法:1、圆心+弧起点+弧终点+弧方向需要11个数值。可以描述所有圆弧。2、圆心+弧起点+弧方向+弧度需要9个数值。可以描述所有圆弧。3、弧起点+弧终点+弧方向需要8个数值。不能描述圆周。描述圆周时,弧起点和弧终点重合。4、弧起点+弧终点+弧上任一点需要9

2022-06-07 13:40:08 1061

原创 线段与线段交点的求解

本方法适用于二维和三维的情况。假设线段AB和线段CD交于点K,如下图所示:由于三角形AKM和三角形BKN相似,故有: (1)由于三角形ACD和BCD共底,故有: (2)根据两向量叉乘数值为其围成的平行四边形的面积,有: (3)综合(1)(2)(3)式,有 (4)假设原点为O,有 (5) (6)结合(4)(5)(6)式,有 (7)根据(7)式即可求出K的坐标。...

2022-06-07 11:12:28 242

原创 物联网数据采集网关开发历程(三)

网关内运行的是Linux系统(本文涉及的是Ubuntu系统,下文中所说的也都是基于Ubuntu系统)。由于AMD64和ARM两种架构在部署的过程中差异较大,需要分开说明。.NET安装在AMD64架构下,.NET的安装使用官方说明即可。先运行:wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debdpkg -i packages-mi

2022-06-02 11:39:39 1260

原创 物联网数据采集网关开发历程(二)

在后续对系统的描述中,需要用到一些名词概念,在此作出解析:设备系统采集来自一台设备的数据,设备需具有通信接口,以及使用特定的通信协议进行通信。设备可以是一台检测仪器、一个小型仪表、一个传感器,甚至是一块单独的PLC。因子因子是设备的属性,包括设备的测量值、状态、控制单元等。例如对于一台空调来说,以下属性可以称为一个因子:当前设定温度(测量值)设备状态:当前是运行中还是待机中(状态)设定当前工作模式:制冷、制热还是除湿(控制单元)链路系统与设备的物理连接方式以及基础通信协议,即通信过程中链路层以下的部分。例如

2022-06-02 11:11:02 1029 2

原创 物联网数据采集网关开发历程(一)

本系列博文所指的开发是指软件系统的开发,不包括硬件开发。由于网关软件系统是跨平台的,可以运行在Windows系统上,也可以运行在Linux系统上。所以,只要在一台小主机上安装了此软件系统,就形成了一个数据采集网关。本系统用于测试的小主机如下图所示:它的一些参数如下表所示:最终网关所支持的功能包括:系统配置、数据采集、设备反控、数据显示、数据存储、数据上传等。除了基本的网关功能,需要特别说明的是系统具有很强的灵活性。系统支持大量采集协议(Modbus、DLMS、DL645、OPC-UA等)和上传协议(MQTT

2022-06-02 11:08:16 3177

原创 .NET在开发Linux ARM工控程序时的注意事项

.NET是一个跨平台的开发框架,可以以一套代码同时发布到Windows和Linux平台。但是对于CPU是ARM的系统,开发过程就比较崎岖了。以下是我在开发过程中遇到的一些问题和解决方案。一、安装.NET在Linux平台上安装.NET已经比Windows平台要复杂很多了,在ARM架构下,情况更加复杂。经过测试,我发现行得通的方法是:1、在官网下载对应系统的安装包。2、文件传送到Linux系统上,解压。3、配置环境变量,把刚才解压的路径加进去。二、安装包下载源一般情况下,ARM架

2022-05-27 13:15:39 729

原创 西门子S7通信协议中TSAP的确认

在西门子S7通信协议中,TSAP是类似于地址的一个值,用两个字节表示。TSAP分为Local TASP(相当于采集程序的地址)和Remote TSAP(相当于PLC的地址)。对于不同的PLC型号,地址的默认值不尽相同,而且,这两个值是可以修改的。如果被修改了,只能通过查询获得。对于以下型号,TSAP的默认值和可能值如下表所示:PLC型号 Local TSAP默认值 Local TSAP可能值 Remote TSAP默认值 Remote TSAP可能值 S7-200

2022-05-27 11:34:54 10137

原创 DLMS通信协议OBIS编码

在DLMS协议中,所有电相关物理量需要使用一个OBIS编码进行表示。OBIS编码分为ABCDEF六组,其他A为1代表电相关,B为通道,一般是0不指定,F一般是255。所以区分各个物理量的是CDE三组数据。例如,CDE的编码是21.7.0,那么完整的ABCDEF表示就是1.0.21.7.0.255。以点号分隔,常用的电物理量OBIS编码如下表所示:物理量 相位 方向 有无功 DLMS编码 电能 总 总 有功

2022-05-27 11:01:26 2981

原创 .NET在Linux平台上开发串口功能

我们知道,.NET是跨平台的,可以运行在Windows、Linux、Mac上。但如果你在做工控方面的开发,你很快会发现,系统提供的SerialPort类,只能运行在Windows平台上。下面介绍.NET在Linux平台上完整的串口功能开发步骤。一、在虚拟机上增加串口如果你有一台带有串口的工控电脑,那这一部分的内容可以跳过。当然,为了调试方便,能在一台普通电脑上调试串口功能,也是很有意义的。我们这里使用的虚拟机软件是VirtualBox,虚拟机安装Ubuntu系统,而外部的主机当然是Windo

2022-05-16 15:54:25 1415

原创 VirtualBox主机与虚拟机互相ping通的方法

一般情况下,按照VirtualBox默认的配置,主机可以ping通虚拟机,但虚拟机不能ping通主机。但是使用上面的配置,虚拟机内就不能连接外网了。如果想跟主机ping通,又能连接外网下载东西,那么需要增加一个网卡。2、 在高级部分,控制芯片不要使用默认的,要改成PCnet-Fact III。2、在高级部分,控制芯片不要使用默认的,要改成PCnet-Fact III。使用上面的配置后,虚拟机就既能ping通,又能上网了。就是上面两个改动,然后就可以双端都ping通。1、连接方式选择网络地址转换(NAT)。.

2022-05-16 15:02:11 3793 2

原创 ffmpeg音视频处理常用操作

视频缩放1、缩放到一个固定大小:ffmpeg -i {input} -s {width}x{height} {output}2、原大小固定比例等比例缩放:ffmpeg -i {input} -vf scale=iw{width_ratio}:ih{height_ratio} {output}3、固定宽等比例缩放:ffmpeg -i {input} -vf scale={width}:{width}/a4、固定高等比例缩放:ffmpeg -i {input} -vf scale

2021-12-23 08:13:37 1474

原创 判断点是否在图形(矩形、椭圆、多边形)内的算法(二)

我们在上一篇文章中介绍了判断一个点是否在图形内的算法,那如果是大量的点呢?例如我们要在一个2000*2000的画布中,把所有在图形内的点填充为红色,在外面的填充为绿色。这样的话,我们就要对4百万个点进行区域判断,这个计算量是非常巨大的。对于上一篇中介绍的方法,我们有一些优化的空间,例如:(1)因为三角函数的计算是很耗时的,先把cos和sin值求出来。(2)矩形的判断是比较快速的,可以先求出椭圆和多边形的外接矩形,如果在外接矩形外,肯定就不会在图形内了。但是这样的优化之后,计算量仍然.

2021-12-16 11:35:13 1397

原创 判断点是否在图形(矩形、椭圆、多边形)内的算法(一)

我们在下面的介绍中,只讨论三种图形,分别是矩形(包括正方形)、椭圆(包括圆)和多边形。对于矩形和椭圆,比较常见的描述方法是(x,y,w,h),另外再加一个旋转角度a(绕中心旋转)。而对于多边形,一般的描述方法是一个二维点的数组。事实上矩形也是多边形(四边形),因为它的描述方法不一样,所以我们分开讨论。一、无旋转矩形这是最简单的一种情况,判断方法也简单。只要判断点的横坐标是否在[x,x+w]、纵坐标是否是[y,y+h]内即可。二、旋转矩形对于旋转矩形,比较常规的做法是:..

2021-12-13 10:26:57 9188 7

原创 .NET单机软件保护策略(3)机器码和有效期

机器码机器码是一台电脑的身份证,在软件认证时就是对这个身份进行认证。一般机器码由提取电脑的硬件信息生成,包括CPU ID、硬盘序列号、主板序列号和MAC地址等。正常的电脑以上信息都有,但也不排除部分没有,例如没有网卡,就没有MAC地址。但这不影响,我们使用某一个,或某些合并到一起都可以。获取CPU ID:ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection moc = mc

2021-11-18 13:35:26 820 1

原创 .NET单机软件保护策略(2)软件证书制作

单机软件的一个特点是,你毫无保留地把程序都交给用户了。所以,如果软件能够反编译,任何的证书都形同虚设。也正因为此,我们下面所谈的,都是在软件已经过保护,不能反编译为前提的。软件的认证,一般有三种元素存在: 机器认证:只能在特定的机器上运行。 用户认证:认证跟特定的用户名关联。 时间认证:有固定的有效期,超出时间认证失效。 对于单机软件来说,更多时候是机器认证和时间认证结合,用户认证不太可用,因为用户名可以交给其他人使用。本文先介绍机器认证的方法。软件证书制作和使用的

2021-11-18 11:37:34 475

原创 .NET单机软件保护策略(1)防反编译

.NET单机软件的保护有两大难点,分别是: 编译的结果不是机器码,而是IL代码,反编译非常容易。 不联网的软件没听说过不能破解的。 所以,我们的保护策略也不是说绝对的安全,只是能防多少是多少。首先对于第一点,我们先看一个例子,以产生直观的感受。假设我们写了一个简单的软件,代码如下所示:static void Main(string[] args){ if (!CheckVerify("my_password")) { return;

2021-11-18 10:39:03 1233

原创 Vue项目加载本地配置文件的方法

作为客户端,Vue项目需要使用服务端地址。但是在开发过程中,服务端地址是经常变化的。而且,如果Vue项目作为不同公司的产品,那么服务地址就是不固定的。显然,我们不能每次就为了一个地址,改完再发布一次。Vue3以前,如果不希望打包的文件,是放在static文件夹下,到了Vue3,改成是public文件夹。可以在此文件夹里新建一个config.json这样的文件存放配置信息,这个文件不会被打包。使用的时候,可以使用require。例如config.json如下所示:{ "name":"my

2021-09-27 14:31:52 1910

原创 CefSharp和Vue交互开发

一、Web端调用C#代码要实现Web端调用C#代码,CefSharp要求先定义一个对象,绑定到浏览器中。我们可以任意定义一个类,里面是需要在网页中调用的方法,如下所示:public class BoundObject{ public void doSomething(string para) { }}然后通过以下语句绑定到浏览器中:Browser.JavascriptObjectRepository.Register("boundCef"

2021-09-26 11:37:45 4103

原创 ASP.NET Core后台运行(Windows Service)方法

我们知道,ASP.NET Core网站开发完成以后,运行的时候会出现一个控制台窗口,如下图所示:一方面,这个窗口不太雅观,而且容易被用户不小心关闭;另一方面,系统重启之后,服务不会随系统一起启动。为了解决上面的问题,可以把ASP.NET Core应用包装成Windows Service,具体方法如下:1、开发好ASP.NET Core应用。(本文介绍的是基于.NET 5)2、在项目中添加包Microsoft.Extensions.Hosting.WindowsServices。3、.

2021-09-23 15:42:03 3408

原创 Vue组件打包成库和使用库的方法

一、开发组件开发组件的过程并无特殊之处,跟平时在Vue项目里定义component是一样的。有一点需要注意的是,平时在Vue项目里,组件的name可以不写,但如果要打包成库,组件的name必须写。为了描述方便,我们把将要打包的组件定义为MyCom1、MyCom2。其示例代码如下:<template> <div> </div></template><script>export default { name: "MyC..

2021-09-02 16:51:21 4826 7

原创 开发一个小巧而稳定的Socket Client(C#)

我们在上一篇文章中介绍了Socket Server的开发,这一篇介绍Socket Client的开发。

2021-08-02 14:03:55 1656

原创 开发一个小巧而稳定的Socket Server(C#)

有一些现成的Socket服务端可以供我们使用,例如SuperSocket、FastSocket,甚至是DotNetty。DotNetty是很庞大的,另外两个会小一些。但如果我们并不是要做一个多强大的服务器,只是想简单收发一下数据,能自动重连,能稳定运行就够,那我们不必使用上面的第三方库。最基础的服务端模板下面的代码实现了最基础的服务端功能:ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Proto

2021-07-30 06:40:46 2585

原创 云图和热力图的绘制算法

云图和热力图是很像的两种图,它们的区别在于,云图的数据源要求图的每一个区域都有数值,而热力图是在图上的某些离散点有数值。事实上,云图可以看作是高密度的热力图。云图在开始绘制云图之前,我们先来研究云图的数据源。假设我们现在要绘制以下数据的云图:这是一张5*4的表格,可能我们要绘制的云图是500*400这个大小。我们很容易会想到这样一种绘制方法:(1)表格的一个格子代表一个像素,数值代表一种颜色,如下图所示:(2)把这张5*4的图片放大100倍,得到500*400的云图。这种方.

2021-07-26 10:53:08 6525 4

云图(等高线图)绘制算法源码

介绍三种绘制云图或等高线图的算法。点距离反比插值、双线性插值和面距离反比+双线性插值。

2019-04-26

WPF MVVM完整示例(登录窗口)

包含了在MVVM模式下的数据绑定、命令和事件、PasswordBox的绑定、RadioButton等一对多控件的绑定、关闭窗口和打开新窗口和数据验证等内容。

2019-03-29

C#实现4种经典迷宫生成算法和迷宫寻路算法

C#实现4种经典迷宫生成算法和迷宫寻路算法,4种经典的迷宫生成算法是:(1)使用并查集算法生成,(2)使用深度优先算法生成,(3)使用随机算法生成,(4)使用递归切割算法,而迷宫寻路使用A*算法。

2018-12-05

象棋五子棋AI源代码(C#)

象棋和五子棋的AI源代码,用C#写的,可运行。战力还可以。

2018-11-26

用HTML5写的五子棋游戏

比较简单地实现了五子棋游戏,两人轮流下,判断胜负。

2018-10-11

用HTML5写的俄罗斯方块游戏

用HTML5写的俄罗斯方块游戏,支持键盘上下左右移动和旋转。

2018-10-11

SZY206-2016水资源监测数据传输规约

网上特别难找的2016版水资源监测数据传输规约

2018-09-30

工控机网络通信工具类

工控机网络通信工具类,包括跟平台连接、跟仪器连接。

2018-09-06

C#表达式运算类

能进行以下运算:四则运算、乘方开方、三角函数、逻辑运算。

2018-09-05

WPF报表控件(表格和图表)

用WPF做的报表控件,小巧但实用。能够自定义表头,导出Excel表格和打印。

2018-09-05

应用程序守护程序

监测需要保护的程序,保证程序在运行状态,如果程序退出,则会自动启动程序。有源代码。

2018-09-05

WPF带水印的输入框

WPF做的带有水印的TextBox。内容为空时出现浅灰色文字。有源代码。

2018-09-05

WPF日期时间控件

WPF日期时间控件,可选择日期和时间。日期时间格式自定义,用yyyy-MM-dd HH:mm:ss这样的字符串定义格式。有源代码。

2018-09-05

Visual C++编程的语音合成程序

使用Visaul C++编程,使用Speech SDK中的语音合成技术,有源代码

2009-01-03

Visual C++编写的屏幕捕抓程序

使用Visual C++编写,可以捕抓屏幕并保存到剪贴板,有源代码

2009-01-03

Visual C++编写的播放动画程序

使用Visual C++编写,有源代码,播放AVI动画

2009-01-03

Visual C++编写的CD播放器

使用Visual C++编写,有源代码,播放光驱中CD中的歌曲

2009-01-03

Visual C++编写的万年历

用Visual C++编写,有源代码,使用方便,可查询史后的所用日期。

2009-01-02

使用Visual C++编写的备忘录

可以设置每天提示自己一些事情,用Visual C++编写,有源代码。其中包含了一些时间的获取方法。

2009-01-02

基于Visual C++的黑白棋游戏源代码

基于Visual C++ MFC,有网络功能、人机对战功能,使用方便,较智能

2008-12-21

组态软件开发脚本功能Demo

在组态软件中开发脚本功能,使用C#(WPF)语言开发,脚本语言也是C#。实现了读取外部数据以及改变可视化元素。

2023-06-07

汉字拼音对照表(6700字)

几乎包含所有可能会用到的汉字。拼音有声调。多音字列出了所有拼音。

2023-05-06

方程求解源代码,一元二次方程,一元三次方程,一元四次方程

方程求解源代码,包括一元二次方程,一元三次方程,一元四次方程。使用求根公式进行求解,解为复数解,二次方程总是有两个解,三次方程总是有三个解,四次方程总是有四个解。如果只需要实数解,可判断虚部是否为0。

2022-08-09

格式化html文本转svg文本源代码

格式化的HTML文本转换成SVG文本源代码。利用contenteditable属性,div标签里的文本将可以编辑。借助execCommand,div标签的字体样式可以动态调整。源代码中包含了计算HTML文本结构、判断换行等功能,生成跟HTML所见一模一样的SVG文本。

2022-07-28

C#绘制三维云图源代码和测试项目

C#绘制三维(3D)云图,包含完整VS项目工程、源代码和测试数据,可直接运行看效果。

2022-06-27

编译原理(紫龙书)中文第2版习题答案

编译原理(紫龙书)中文第2版习题答案。覆盖和解析都比较全面。

2022-06-06

C#实现的一元四次方程求解源代码

C#实现的一元四次方程求解源代码,对一元四次方程ax^4+bx^3+cx^2+dx+e=0进行求解。

2022-06-02

C#实现的树形图控件源码

C#实现的树形图算法,能够定制大量树形结构的图。包含WPF示例程序,能够直接运行。算法大致为,指定每个元素的宽高,元素与元素的间距、层与层的间距,然后计算出每个元素的位置。

2022-06-02

C#实现的云图算法(源代码、示例程序)

使用C#语言实现的云图算法(源代码),包含使用WPF写的示例程序,可直接运行看效果。

2022-06-02

热力图算法实现(C#、包含源码、示例)

使用C#语言实现的热力图算法,有WPF示例程序,可直接运行看效果。

2022-06-02

虚拟Modbus协议设备软件

类似于Modbus Slave但更强大的虚拟设备软件。 1、支持Modbus-RTU、Modbus-TCP协议。 2、支持串口、TCP、UDP等连接方式。 3、数据可以随机变化。 4、支持自定义设备通信协议,也就是不一定是Modbus协议。 5、支持多设备共用串口,任意从机地址都能回复。 运行软件需要先安装.NET6。

2022-06-02

BP神经网络基本架构实现(源代码)

实现了BP神经网络的基本结构,是学习神经网络很好的示例程序,包括以下内容: 1、输入层、输出层、隐含层。 2、可以解决分类问题和回归问题两大问题。 3、多种激活函数、输出函数和损失函数可供选择。 4、实现了梯度下降方法。

2022-06-02

DLMS通信协议OBIS编码和DL645编码

包含两部分内容: 1、DLMS通信协议OBIS编码 2、DL645电能表通信协议编码

2022-05-27

OpenCvSharp测试程序DEMO

OpenCvSharp是一个C#对OpenCV的封装。本测试程序是一个WPF项目,提供众多数字图像处理的示例代码,包括图像平滑、边缘检测、二值化、区域分割、滤波等。

2020-05-06

.NET Core WebSocket示例

ASP.NET Core Web应用程序,包含服务端和客户端的示例代码(js)。

2019-09-29

最小圆覆盖算法(C#)

C#实现的最小圆覆盖算法。给定一个点(x,y)的列表,返回圆心坐标和半径。

2019-07-09

坐标轴刻度取值算法完整代码

坐标轴刻度取值算法完整代码,生成比较优雅和人性化的刻度。

2019-06-13

等高线图算法完整代码(C#)

使用C#对等高线图算法(Marching squares)的完整实现代码。

2019-06-12

C#编写的矩阵类,包含矩阵一般的操作

用C#写的矩阵类,包含矩阵的四则运算、叉乘、转置、行列式、逆矩阵、卷积等。

2019-06-06

WPF高性能绘图的方法

WPF高性能绘图的方法,使用WriteableBitmap对象,介绍使用GDI+绘制图形和操作像素的两种方法。

2019-05-06

空空如也

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

TA关注的人

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