自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (3)
  • 收藏
  • 关注

转载 C#中如何捕捉信号的上升沿和下降沿

在上面的例子中,我们分别用2个按钮模拟信号的置位和复位操作,然后在线程中调用GetP和GetN方法分别捕捉上升沿和下降沿。当捕捉到信号变化以后使用窗体上的标题文本进行提示。上升沿和下降沿在我们开发上位机时使用率非常高,常见于消息触发、脉冲归档等。但是在C#中没有类似PLC中的上升沿、下降沿那样的指令,需要我们自己编码来实现。首先我们创建一个用于生成上升沿和下降沿的类,命名为“GetPN”。

2022-09-29 21:52:12 1758 1

转载 c#判断两个对象和对象中的属性是否相同(以及记录对象中的哪些字段,和详细的改变情况)

注意,引用类型进行对比的时候,需要在编辑之前对对象进行拷贝,让拷贝的对象与编辑后的对象进行对比。(因为引用类型不同于值类型,值类型每次操作都会产生一个新的对象,而引用类型在new一个新对象赋值时,其实是在堆上创建了一个内存地址,指向的仍然是原对象,对它操作原对象也会发生变化。原文出处:https://www.cnblogs.com/likui-bookHouse/p/9908045.html。一、当前项目需要记录变更记录,即用户在进行编辑后,将变更操作记录下来。代码1:(仅仅返回是否变化的标识)

2022-09-27 18:51:14 979

原创 工业相机飞拍模式介绍及相机曝光值计算

例如:相机现在的曝光时间是2000us,传送带运动的速度是100mm/s,使用的相机分辨率为2448*2048,视野范围是300mm*250mm,物体运动的方向是水平方向,精度要求拖影不超过1/2像素。1.视觉停拍:传统的视觉定位采取停拍的方式,即工件按照既定的轨迹运动,当运行到拍照点时,运动轴速度减为0停下来进行拍照、图像采集、运算处理、纠偏,待视觉系统处理完成后,继续完成接下来的轨迹运动,v-t图如下。即机构按照既定的轨迹运动,当运行到拍照位时,运动轴不停止运动,瞬间完成高速抓拍的功能。

2022-09-03 12:23:11 17231 1

原创 C# WinForm程序防止多开的方法总结

一、Winform启动的时候,检测是否存在同样的进程名,防止程序多开;二、利用Mutex互斥对象防止程序多开;

2022-08-28 11:41:43 2184 2

原创 将DataTable转换为List<T>以及<T>类

ConvertHelper类请参考 https://www.cnblogs.com/axiaoshuye/articles/15697734.html。最开始是使用循环一个个给类的属性赋值,但是这样效率低并且无法复用。将DataTable转化为List,使用DataTable.ToList();将DataTable转化为,使用DataTable.ToData();转换的前提条件是DataTable字段名要与对应类的属性名一致。填充已有内容,使用DataTable.FillData();...

2022-08-28 11:11:40 2965 1

转载 深拷贝、浅拷贝、引用拷贝的区别

目录作者:小牛呼噜噜 |计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」

2022-08-23 13:07:32 126

原创 C# List排序简介及四种方法介绍-附代码

有时用户需要按某项排序,但是查询结果以List格式存储,我们当然可以自己编写一个快速排序的方法进行排序,但是还有多个选择,并且可能比你写的短、效率也不差,那不如在恰当的时候选择其他方法对List进行排序。c#的一大特色就是Linq,他遍布c#里里外外,利用他可以减少大量的代码,不过他是从SQL中出来的,所以SQL还是了解之后,这个就好懂了。方法一: List的OrderBy与OrderByDescending方法。方法二:使用Sort方法,方法四:使用Linq。

2022-08-23 12:42:28 18342

原创 visionPro图像与Halcon图像格式互相转换代码

【代码】visionPro图像与Halcon图像格式互相转换代码。

2022-08-23 10:34:53 2430 2

原创 Visionpro ID 工具 C# 代码对应 -基本参数

只是把常用的属性和基本用法介绍了。

2022-08-21 12:12:02 468

转载 .NET性能优化-使用ValueStringBuilder拼接字符串

这一次要和大家分享的一个Tips是在字符串拼接场景使用的,我们经常会遇到有很多短小的字符串需要拼接的场景,在这种场景下及其的不推荐使用也就是使用+=运算符。目前来说官方最推荐的方案就是使用来构建这些字符串,那么有什么更快内存占用更低的方式吗?那就是今天要和大家介绍的。今天和大家分享了一下高性能几乎无内存占用的字符串拼接结构体,在大多数的场景还是推荐大家使用。但是要非常注意上面提到的的几个场景,如果不符合条件,那么大家还是可以使用高效的来进行字符串拼接。

2022-08-20 19:38:38 305

转载 .NET性能优化-快速遍历List集合

是.NET中的泛型集合类,可以存储任何类型的数据,因为它的便利和丰富的API,在我们平时会广泛的使用到它,可以说是使用最多的集合类。在代码编写中,我们经常需要遍历一个List集合,获取里面的得元素进行一些业务的处理。通常情况下,集合内的元素不是很多,遍历起来非常快。但是对于一些大数据处理,统计,实时计算等动辄数万、十万数据的List集合,如何快速的遍历它呢?这就是今天需要和大家分享的内容。今天和大家聊了聊如何快速的遍历List集合,在大多数的情况下推荐大家使用foreach。

2022-08-20 17:26:55 291

原创 C# FileSystemWatcher 实时监控文件的增加、修改、重命名和删除实例

好多时候,我们都需要知道某些目录下的文件什么时候被修改、删除过等,如果能用miniFilter驱动过滤来做的话当然是最好不过了,这是内核级别的,当然也比较复杂。这里需要注意一个问题:因为FileSystemWatcher类本身就是一个多线程的控件,在实例化一个FileSystemWatcher时就自动创建了一个线程,在事件处理的方法中需要使用委托的方式封送到主线程中处理。//声明传递文件Created、Changed、Deleted对象和委托,用于文件增加、删除、修改时更新UI界面。...

2022-08-17 20:53:37 2188

转载 VisionPro PatInspect(CogPatInspectTool使用方法)

PatInspect主要用于缺陷检测,例如印刷字符检测、部分缺失或者明暗变换、激光打标内容检测等,该检测方法对光照的稳定性要求较高,视野内的光照不均匀极易造成误判与过杀。通过将当前图像与“训练图像”对比,获取“原始差异图像”,再将“原始差异图像”与“阈值图像”进行对比,进而获取“阈值差异图像”得到最终的当前图像与训练图像的差异,通常差异区域为缺陷所在。...

2022-08-15 22:33:40 1983

原创 C# 内存泄露与资源释放-代码中改善注意的几个问题点

实际上由于各个开发人员的水平跟接触面不同,又没有经过统一的培训(各个人对内存释放的理解与关注度不同,或者写代码时就没考虑内存未被释放这种问题),发现问题的时候项目往往已经做到了一个阶段(SIT测试),系统也比较庞大了,这种时候才发现内存泄露的问题确实是很头疼的。如果你觉得写这样的一段代码很Cool,很简洁,你在项目也有这么写代码,那你就碰到大麻烦了,你试试在Form2中开个大一点的数组来检查内存,然后运行,按几下button1按钮,你就会发现,内存一直增加,即使你调用GC也无济于事。...

2022-08-15 20:05:06 638 3

原创 海康相机SDK二次开发的一些报错和解决办法

常见的问题类型有: 相机节点不存在或者无法访问,例如,自动曝光,在手动曝光情况下,自动曝光节点会被隐藏,或者其他相机存在这个参数,而使用的相机无此参数,例如线扫相机的行频参数等等,还比如说部分相机无此功能,例如event参数,部分相机固件暂不支持用户调用。sdk接口调用,有一定流程顺序,例如getimagebuffer在startgrabing之前调用,就违反了接口流程,就会报错顺序调用错误 还比如,没有调用startgrabing接口,就去调用频繁调用stopgrabing接口,也会报此错误。...

2022-08-12 22:48:43 5635

原创 DALSA网口线扫相机SDK开发详解例程(C#版)

Win 10系统很扯淡,报错的提示一点都看不懂,我换Win 7的系统后,也报错,但是明确把错误原因找出来了。当你完全理解了这篇文章(以及我提到的两篇),Dalsa网口线阵相机的开发基本就没啥问题了,当然这时候你返回去看官方demos会有新的收获,比如我上面的UpdateFrameRate()就是从官方demos中剥离出来的,该函数可以得到采图时的实际帧率。文章二的代码缺少关键的GetCameraInfo()方法,是不能直接运行的,但是这篇文章的讲解更全面、深入,可以说两篇都是必备的啦。...

2022-08-12 22:46:03 2029 1

原创 .NET(C#) 如何配置用户首选项及保存用户设置

访问修饰符:“访问修饰符”按钮指定 Properties.Settings(对于 C#)或 My.Settings(对于 Visual Basic)帮助程序类的访问级别,这些类分是 Visual Studio 在 Settings.Designer.cs 或 Settings.Designer.vb 中生成的。加载Web设置:“加载 Web 设置”将显示“登录”对话框,让你能够加载经身份验证的用户或匿名用户的设置。但是,你在项目的app.config里是看不到修改值的,这里记录的就是创建时的默认值。...

2022-08-12 22:41:27 1775

原创 DALSA工业相机SDK二次开发(图像采集及保存)C#版

2,然后读取配置文件(配置文件是通过官方自带的CamExpert来生成的)读取参数,也可以在程序中配置,本程序有个setting按钮,按一下就可以配置拉,把想配置的参数写在对应的代码块里(当然小编很懒,没做显示的功能,所以按按钮的时候你可能觉得按了个寂寞,但已经配置好了)。还有个读取参数的按钮(当然小编也没做显示的功能,所以也按了个寂寞),但有助于debug的时候查看数据,也可以自己打印出来看看。3,Snap是快照,可以设置快照的张数,因为写本程序时只有相机没有镜头,所以是黑乎乎一片…...

2022-08-12 22:30:58 3481 6

原创 使用Basler相机SDK采集的显示图片

添加Basler引用,复制安装目录pylon 6\Development\Assemblies\Basler.Pylon\x64路径下的Basler.Pylon.dll文件到你的项目debug目录下,并使用using Basler.Pylon;设置好后,打开pylon Viewer程序,这是basler提供的相机调试工具,测试下相机是否正常,然后就可以开始进入VS开发了。注意:一旦打开相机连接,必须有关闭,否则相机将会连接不上,这种情况下等待几分钟后,连接对象会被系统回收,再次连接即可。...

2022-08-12 22:11:57 1663

转载 C#深度克隆泛型对象T及List<T>的扩展方法

我们想要a和b都是各自互不影响的,那么只能是完全地新建一个新的对象,并且把现有对象的每个属性的值赋给新的对象的属性。这里我们写两个泛型方法分别对对象T和集合List进行深度克隆的实现,我们的方法实现方式是“扩展方法”,就是能在原有的对象后面直接“点”操作。那么a指向的是b的地址,这样在有些时候就会造成如果修改a的值,那么b的值也会跟随着改变(a和b是同一个引用内存地址)。出处:https://www.cnblogs.com/7tiny/p/7007291.html。这样就完成了对user1的深度克隆!...

2022-08-10 10:28:14 531

原创 CogBlobTool斑点工具的编程接口RunParams参数中英对照

CogBlobTool斑点工具的编程接口RunParams参数中英对照。

2022-08-04 17:11:36 723

翻译 WinForm——Text控件基本用法总结

目录1、常用属性:Text属性MaxLength 属性MultiLine 属性HideSelection属性ReadOnly属性PasswordChar 属性ScrollBars属性SelectionLength属性SelectionStart属性SelectedText 属性LinesModifiedTextLength属性WordWrapPasswordChar属性ShorcutsEnabled属性2、常用方法:AppendText方法Clear方法Focus方法Copy方法Cut方法Paste方法Un

2022-07-06 17:41:24 3079

原创 VisionPro 坐标空间树-介绍基本用法及概念

VisionPro中的每一幅图像都有自己的坐标空间树,即Coordinate Space Tree,坐标空间树由根空间(root space)与用户空间(user space )组成。在图像处理过程中,通过根空间与用户空间之间的坐标转换实现图像在不同坐标系下的转换,例如,当进行Blob分析时可能需要在根空间下,在进行尺寸测量时,可能需要将坐标空间转换到实际物理坐标系下。VisionPro中坐标空间树可以通过图像的CoordinateSpaceTree属性获取。用户空间(user space)一定能通过一个

2022-06-10 10:49:16 2872

转载 DataGridView控件常用属性

一、单元格内容的操作*****// 取得当前单元格内容*******另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的行:DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过 CurrentCell 来设定

2022-06-09 22:58:54 1729

原创 CogIDTool扫码工具的运行参数Params类属性整理

CogIDTool 运行参数Params整理

2022-06-05 22:44:19 730

原创 Visionpro空间/空间坐标系字符的含义

在visionpro中名字空间是一个非常重要的概念。简单的说就是在图像中的一个特殊坐标系。下面说下名字空间中一些固定的字符的特殊含义:1)“.”=这个表示使用输入图像的当前名字空间。即cogimage中的“SelectedSpaceName”表示的名字空间。2)“#”=像素空间,即图像中左上角为(0,0)点的像素坐标系空间。注意坐标系仅仅为整数3)“@”=根空间,默认是中左上角为(0,0)点的像素坐标系空间。但是此处的坐标系支持浮点即小数。而且默认的名字空间都是基于根空间的。意思就是标准的空间名称是类似于“

2022-06-03 13:07:03 1287

原创 VisionPro图片的保存,打开,带图形格式的保存

/// <summary> /// 获得ICogImage图像格式 /// </summary> /// <param name="imagepath"></param> /// <returns></returns> private ICogImage GetImage(string imagepath) { if

2022-05-21 15:45:19 5799 1

原创 VisionPro获取Blob的外接矩形和最小外接矩形

Blob工具提供这两个接口我们就可以通过脚本来获取它的几何信息了,如四个点的坐标等。

2022-05-16 22:03:19 2008

原创 CogBlobTool斑点工具的RunParams及Result属性整理

//********************************************运行参数设置**RunParams************************************* //******************************************** ************************************* //设置->分段->模式 SegmentationParams.M

2022-05-16 21:59:04 1632

原创 使用VisionPro的CogImageFileTool工具读取本地图片和保存图片到本地

/// <summary> /// vpro保存图片到本地 /// </summary> /// <param name="cogImage">输入图像</param> /// <param name="fileName">文件名</param> private void SaveImage(ICogImage cogImage, string fileN.

2022-04-13 22:32:55 4216

原创 C#在VS中利用VisionPro库读取相机列表及取像

在 .NET 环境下通过VisionPro打开相机并获取图像的基本步骤如下:1.创建CogFrameGrabberGigEs对象,获取连接到图像采集卡的所有相机设备。2.通过CogFrameGrabberGigEs获取单个对象ICogFrameGrabber的引用,支持的图像格式、相机序列号等信息可以从该接口对象中获取。3.通过CogFrameGrabber的CreateAcqFifo方法创建ICogAcqFifo接口对象,在使用CreateAcqFifo方法时须指定图像格式、相机端口等信息。4.通

2022-04-08 16:54:39 3888 1

转载 C# 跨线程更新UI界面的适当的处理方式,友好的退出界面的机制探索

本文主要讲讲C#窗体的程序中一个经常遇到的情况,就是在退出窗体的时候的,发生了退出的异常。联系作者及加群方式(激活码在群里发放):Cooperation - HslCommunication 官网欢迎技术探讨我们先来看看一个典型的场景,定时从PLC或是远程服务器获取数据,然后更新界面的标签,基本上实时更新的。我们可以把模型简化,简化到一个form窗体里面,开线程定时读取 1 2 3 4 5 6 7 8 9 1.

2022-04-08 15:33:00 1235 1

转载 C# 线程的挂起与唤醒 (AutoResetEvent,ManualResetEvent)

如果说C#和C++有什么不同,博主不得不说,对于异步的支持程度是C#的一一个伟大的进步。 其实早期的C++都没有异步,并发的概念。博主第一次使用C++创建异步程序的时候,是使用boost库的内容进行实现的。相对而言,C#对于异步的支持可以说是相当的好。相信很多名词大家都很耳熟能详,比如说Thread,BeginInvoke,Delegate,backgroundworker等等。。。其实楼主在使用了这么多的异步操作过程中,还是觉得backgroudworker比较好用。 当然,我们今天要...

2022-04-07 17:36:26 2080

转载 将 .NET Framework 项目转换为 .NET Standard 项目

如今 .NETCore是未来发展的主流(至少在 .NET 5 发布之前),而我们如果要改造一个项目为 .NETCore项目,则它引用的项目应当先改造为 .NET Standard 项目。下表给出了每种平台支持指定的 .NET Standard 版本的最低版本(参考):简单说明一下:.NET Standard 2.0 支持 .NET Core 2.0 和 .NETFramework4.6.1(最好使用 4.7.2 或更高),所以使用这些版本的话就不用进行多平台配置了。.NET ...

2022-04-07 17:30:11 1580 1

转载 C#Array,List,Dictionary的相互转换

本篇文章会向大家实例讲述以下内容:将Array转换为List 将List转换为Array 将Array转换为Dictionary 将Dictionary转换为Array 将List转换为Dictionary 将Dictionary转换为List首先这里定义了一个“Student”的类,它有三个自动实现属性。class Student { public int Id { get; set; } public string Name { .

2022-04-07 17:26:50 2312

原创 C# 退出应用程序的几种方法

Application.Exit();//好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵this.Close();//只是关闭当前窗体。Application.ExitThread();//退出当前线程上的消息循环,并关闭该线程上的所有窗口。 也会失灵Environment.Exit(0); //前面三种方法都不能很好的退出程序,此方法可以完全退出程序,这个要强制得多。Process.GetCurrentProcess().Kill();//此方法完全奏效,绝对是完全退出。

2022-04-07 17:16:09 4747

转载 Json随着编码的延续,终究还是会遇到那剩下的 20% 功能介绍

一:背景1. 讲故事在开始本文之前,真的好想做个问卷调查,到底有多少人和我一样,对 JsonConvert 的认识只局限在SerializeObject和DeserializeObject这两个方法上(┬_┬), 这样我也好结伴同行,不再孤单落魄😁😁😁,或许是这两个方法基本上能够解决工作中 80% 的场景,对于我来说确实是这样,但随着编码的延续,终究还是会遇到那剩下的 20% ,所以呀。。。我的场景是这样的:前段时间写业务代码的时候,我有一个自定义的客户算法类型的Model,这个Mode...

2022-04-07 16:44:37 88

转载 Newtonsoft 六个超简单又实用的特性【上下篇】

【上篇】一:讲故事看完官方文档,阅读了一些Newtonsoft源码,对它有了新的认识,先总结 六个超经典又实用的特性,同大家一起分享,废话不多说,快来一起看看吧~~~二:特性分析1. 代码格式化如果你直接使用JsonConvert.SerializeObject的话,默认情况下所有的json是挤压在一块的,特别不方便阅读,如下所示: static void Main(string[] args) { var report...

2022-04-07 16:41:39 4202

原创 C#查询指定文件夹下的每个文件及子文件夹占空间的大小

static void Main(string[] args) { while (true) { //指定文件夹下的每个子文件夹占空间的大小 Console.WriteLine("--------------------查询指定路径下所有的文件及子文件夹占空间大小-------------------"); Console.WriteLine("请输

2022-04-07 14:18:32 942

转载 C#多线程下的调优

C#多线程学习

2022-04-07 14:00:26 344

C#中实现海康相机取的图像格式与VisionPro图像格式的转换.rar

C#中实现海康相机取的图像格式与VisionPro图像格式的转换.rar

2021-07-31

Basler USB相机与VisionPro配置.pdf

USB相机与VisionPro软件配合使用介绍-Basler USB相机

2021-07-31

VP+USB相机软件Imageingicextaik_3.2.0.zip

安装这个Imaging官方提供的软件后就可以直接通过VP连接Imaging品牌的USB相机

2021-05-11

空空如也

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

TA关注的人

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