自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Halcon之光度立体法

要保证好的图像质量,首先要确保相机采集的图像具有线性特征,可以使用算子radiometric_self_calibration确认相机特性,如果相机采集的图像是非线性的,可以利用算子 lut_trans 矫正灰度信息。但对于一些特殊的产品,因为阴影的原因,三个方向打光不能很好的表征缺陷特征,造成重建的图像特征不明显,这个时候就需要在原来基础上增加打光方向,避免死角。这个角度是以图像为准的,比如光从图像右侧打过来,角度就是0°,从上面打过来,角度是90°,从左面打过来,角度是180°,下边打过来是270°。

2024-05-23 16:52:43 105

原创 log4net- 使用教程

用户可以从http://logging.apache.org/log4net/下载log4net的源代码。解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。右击项目新建一个config类型文件,取名为log4net (log4net 的配置信息单独的写在一个config文件里比较好管理,与其他代码分离清楚)Log4net就是为这样一个目的设计的,用于.NET开发环境的日志记录包。3. Log4net的结构。

2024-05-17 11:46:07 512

原创 单例模式及其应用

这样可以确保只有一个缓存管理器实例被创建,所有的数据都可以通过该实例进行缓存和访问,避免了多个缓存实例导致的数据冗余和一致性问题。使用单例模式可以确保只有一个日志记录器实例存在,所有的模块都可以通过该实例将日志信息写入到同一个日志文件中,避免了多个日志实例导致的日志信息分散和不一致的问题。:在应用程序中,可能会有大量的任务需要并发执行,为了提高性能和资源利用率,可以使用单例模式来实现线程池。这样可以确保只有一个线程池实例被创建,所有的任务都可以提交到该实例中进行并发执行,避免了频繁创建和销毁线程的开销。

2024-04-28 17:13:31 983 2

原创 C# 使MessageBox.Show弹出框保持最前

【代码】C# 使MessageBox.Show弹出框保持最前。

2024-04-28 15:24:23 385

原创 OCX文件注册方法

按照上面的方法步骤进行操作,.ocx格式控件文件就可以注册加载成功,也不会出现Dllregisterserver调用失败,出现0x8002801c的错误了。遇到这个问题的朋友快去试试吧。1、根据自己电脑系统的位数将这个控件放入不同的文件夹内,32位系统的放入C:\Windows\System32文件夹内,64位系统的放入C:\Windows\SysWOW64文件夹内。2、以管理员的身份运行cmd.exe,Win10系统可以在左下角搜索栏搜索cmd.exe,然后右键点击该结果,选择“以管理员身份运行”;

2024-04-28 14:47:58 142

原创 关于读取PLC寄存器数据的一些理解

单次读取和分100次单独读取之间的时间差异可能还取决于您的读取代码的实现。例如,如果您的代码在分100次读取时进行了100次独立的通信请求,而没有使用并行或批量处理,那么时间差异可能会更大。在一次读取中,网络延迟只会发生一次,而在100次单独读取中,每次读取都会受到网络延迟的影响。如果您的应用需要实时监控和响应PLC数据的变化,那么可能需要更频繁地读取数据,以确保及时获取最新的数据。如果您的通信通道带宽有限或受网络延迟影响,那么可能需要调整较大的数据量和较低的读取频率,以减少通信开销和响应时间。

2024-04-28 09:12:14 181

原创 C#虚方法的使用场景

通过使用虚方法,您可以在派生类中重写基类中定义的方法,从而实现不同对象在相同方法调用时表现出不同的行为。您可以在基类中定义一个虚方法来处理控件的绘制逻辑,然后在每个具体的控件派生类中重写该方法以适应特定的绘制需求。您可以创建一个基类来处理数据库连接和一般的数据访问逻辑,然后在具体的数据访问对象派生类中重写虚方法以执行特定的数据库操作。您可以使用虚方法来定义基类中的角色动作,然后在具体的角色类中重写这些方法以实现特定的动作。通过虚方法,您可以实现基类的通用功能,并通过派生类的重写来定制特定类型的行为。

2024-04-26 17:31:54 518 3

原创 打开另一个程序并将其吸附到已经创建好的空窗体中

函数将其窗口句柄(handle)设置为您的窗体的子窗口。要在C#中打开另一个程序并将其吸附到已经创建好的空窗体中,您可以使用。类来启动另一个程序,并使用。

2024-04-26 16:36:42 279 1

原创 各种编码详解

已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

2024-04-26 12:20:58 700 1

原创 修改电脑IP信息帮助类

【代码】修改电脑IP信息帮助类。

2024-04-25 14:06:21 601 1

原创 软件开机自启动的方法

然后根据需要设置为所有用户还是指定用户,包括任务启动的延迟时间(比如相机启动时间较长,但是软件启动时间断,软件启动后可能会出现相机掉线的情况,所以可以设置一定的延迟时间,等相机启动后软件再自动开启)。、win8的系统,在系统的开始菜单里,有个“启动”文件夹,打开启动文件夹后,只需把要开机自启动的程序的快捷方式放入该文件夹,系统登录成功后就会自动打开设置的软件。鼠标右键点击计算机,选择管理选项,进入计算机管理,在任务计划程序窗口,创建任务,输入任务名称。设置完成后,可以在任务管理器启动中,查看是否设置成功。

2024-04-25 13:49:27 421 1

原创 WinForm多线程修改控件,在窗体未创建或关闭时报错

百度之后,发现需要判断控件的IsHandleCreated和IsDisposed等属性,并且如果还有错误,可以再捕获InvalidOperationException异常,避免程序崩溃,每次涉及到UI变动的地方都这么判断的话,则太麻烦。WinForm多线程修改控件时,提示在“创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”报错信息,并且如果没有捕获到,则可能导致程序崩溃,直接关闭。

2024-03-27 09:24:00 246

原创 实现调试软件通过网线连接修改控制器的IP设定

思路:双方定义一个共同的通信端口,调试软件定义为发送端,通过广播的方式发送指令,看门狗定义为接收端,接收发送端发来的命令,为保证数据的完整性我们需要定义一下报文格式,我使用的是CRC16_IBM效验。调试软件与看门狗软件通过UDP通信实现互相身份识别验证,解析指令执行修改本地IP信息,修改完成后双方地址信息都知道了,这样就可以建立TCP通信了。项目要求:实现看门狗软件与外部调试软件在不知道对方信息的状态下建立可靠的通信。CRC效验静态库方法(nuget安装包,搜索“

2024-03-25 15:01:06 401

原创 C#定时执行一次任务

项目中有个需求缓存垃圾清理,不想用timer一直刷新读取判断是否执行,我想要在每天定时执行一次任务。

2024-03-13 15:47:07 838 1

原创 c#闭包问题

而在第二个正确的例子里,在每一次循环中,会创建一个新的临时变量u来保存当前循环的i,当委托或Lambda创建时,闭包这个新的临时变量u,且每个不同委托引用的u是互相独立的,其到委托执行时都是不会变化的,所以使用临时变量来保存匿名函数想要引用的外部函数变量可以解决闭包陷阱。“foreach”的遍历中定义的临时循环变量会被逻辑上限制在循环内,“foreach”的每次循环都会是循环变量的一个拷贝,这样闭包就看起来关闭了(没有了)。在c#中,内层的函数可以引用包含在它外层的函数的变量,即使外层函数的执行已经终止。

2024-03-12 13:08:31 1028 1

原创 C#泛型委托理解(Deleagte与Action、Func用法)

关键字到匿名委托方法,再到Action和Func,Action是无返回值的委托,Func是有返回值的委托,现在基本上都是基于Action和Func来写委托的,有些和业务逻辑连接起来写匿名委托方法。Func(有返回值)------T1和T2为0-16个参数类型,T3为返回值类型。其实C#已经帮我们封装好了泛型委托,无返回值泛型委托Action,有返回值泛型委托Func。Func(有返回值)------T1为0-16个参数类型,T2为返回值类型。//声明泛型委托,有返回值从。

2024-03-11 17:25:31 921 1

原创 使用MX Component三菱自带网口与上位机通讯设置方法

查看刚刚设置的Wizard,打开【Communition Setup Utility】,切换至【List view】,【Display】切换至【Program】模式,查看参数。打开三菱mx安装目录下的文件,路径为//ACT//Samples//Vcs.net//Sample2010,读写数据需要在编程模式下才可以使用,点击【OPEN】,修改代码参数。10.切换至【Connection Test】,点击【Test】,成功!4.设置pc端,本次使用Q10Udehcpu自带网口,端脑端使用网卡,tcp协议。

2024-03-11 13:08:57 631 1

原创 C#后台无窗体程序实现

由于项目要求做一个C#窗体隐藏后台计算程序并唯一,找到两种方法实现后台应用程序,下面讲讲怎么实现。

2024-03-11 10:28:09 430 1

原创 C# UDP实现本地网络下两台设备间广播通信

在使用TCP/IP 协议的网络中,主机号为全1的IP地址为广播地址。两者的区别就是,本地广播在不知道目标主机的网络地址下,如果目标主机是在本地网络,可以发送本地广播,本地网络下的所有主机都能接收广播。直接广播是目标主机的网络地址知道,那该网络地址网段下的所有主机都能收到广播,直接广播更精确范围更小些。地址就是255.255.255.255,它不经路由转发,发送本地网络下的所有主机,只能在局域网内转发,主要是不用知道目标主机的掩码与网络地址,本地转发同本地网络下的所有主机。掩码最后为0的位为主机位。

2024-03-11 10:15:24 1022 1

原创 C#程序以管理员权限运行

【代码】C#程序以管理员权限运行。

2024-03-07 11:03:55 658 1

原创 C# Nuget上一个轻量级TCP\IP通讯库(SimpleTCP)

工作中经常遇到需要实现TCP客户端或服务端的时候,如果每次都自己写会很麻烦且无聊,使用SuperSocket库又太大了。这时候就可以使用。

2024-03-06 12:58:59 1304

原创 C# lambda表达式及匿名方法

Console.WriteLine("通过委托调用方法:a+b={0}", a + b);Console.WriteLine($"通过匿名方法:a+b={a + b}");//匿名方法概念:这个方法没有具体名称,只有委托关键字,方法参数,方法体,所以称为匿名方法。匿名方法概念:这个方法没有具体名称,只有委托关键字,方法参数,方法体,所以称为匿名方法。//通过Lambda表达式,Lambda表达式就是将匿名方法进一步封装,Lambda表达式:就是将匿名方法进一步封装,基本定义规范:(参数)=>{方法体}

2024-03-05 14:09:54 360

原创 SECS GEM 常用指令概略

功 能 信息 → ← 名称 功能概略 支 持 动作概要 StreamX             SxF0 B 中止处理 事务中止处理 ○ 任意信息都能返回中止 Stream1   装置的状态           S1F0 B 中止处理 事务中止处理

2024-03-05 13:08:51 635

空空如也

空空如也

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

TA关注的人

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