自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 Cognex DataMan二次开发SDK 指南

Cognex DataMan二次开发SDK,主要是二次开发的SDK文档隐藏的有点深,花了30分钟才找到,贼浪费时间,记录下来。方便下次和同样踩坑的人使用。

2023-08-10 11:30:53 601

原创 Visionpro 检查CogToolBlock的Input输入和Output输出

其实var check = tool.Outputs.Where(p => p.Name == name).FirstOrDefault();这里返回检查对象实例,如果结果不为null,可以直接check.Value 获取输出结果或设置输入结果.话不多说,直接上代码。

2023-07-18 11:10:15 892

原创 C# 文件正由另一进程使用,因此该进程无法访问此文件

在上面的代码中,我们使用 FileStream 类来打开和保存文件。在 SaveFile 方法中,我们将共享访问模式设置为 FileShare.Read,以允许其他进程以只读方式访问文件。在 OpenFile 方法中,我们将共享访问模式设置为 FileShare.ReadWrite,以允许其他进程以读写方式访问文件。通过使用适当的共享访问模式,你可以避免由于其他进程锁定文件而导致的访问冲突。

2023-05-18 14:18:21 2584

原创 C# 管理各种数据对象用设计模式实现

在这个示例中,我们使用了工厂模式来创建不同类型的数据对象,并使用模板方法模式来实现数据对象的具体操作。然后,我们使用外观模式来简化数据对象的操作过程。这个示例代码只是一个简单的例子,实际的应用中可能需要更加复杂的设计来满足实际需求。最后,我们可以使用外观模式来简化数据对象的操作过程。然后,我们可以使用模板方法模式来实现数据对象的具体操作。接下来,我们可以使用工厂模式来创建数据对象。

2023-04-23 23:54:20 277

原创 C# 相机通用模块用工厂模式实现

通过上述示例代码,我们可以看到工厂模式的实现过程,它可以根据输入的参数来创建相应的相机对象,从而实现了相机通用模块的设计。

2023-04-23 23:48:58 394

原创 C# 与PLC通讯类用设计模式实现

在与 PLC 通讯的场景中,我们通常会使用第三方的通讯库来实现 C# 与 PLC 的通讯。而不同的 PLC 厂商提供的通讯库可能是不同的,接口也不同,这时我们就可以使用适配器模式来将不同的通讯库转换成一个通用的接口,使得 C# 与不同的 PLC 可以无缝通讯。这样,无论我们使用哪个 PLC 厂商的通讯库,我们都可以使用相同的接口进行 C# 与 PLC 的通讯。适配器模式用于将一个类的接口转换成客户希望的另外一个接口。在 C# 与 PLC 通讯的场景中,我们可以使用适配器模式来实现。

2023-04-23 23:39:27 2230

原创 C#分拣系统用设计模式实现

一个分拣系统通常包含多个分拣站,每个分拣站会收到一些物品并根据一定的规则将物品分拣到不同的区域。观察者模式:用于在物品到达时通知所有分拣站进行处理。工厂模式:用于创建不同类型的物品和分拣站。策略模式:用于定义分拣规则和区域划分规则。

2023-04-23 23:33:07 225

原创 C# 数据统计系统用设计模式实现

这个类继承了我们之前定义的数据统计系统类,并通过传入具体的数据加载、数据分析和数据渲染模块来定义一个基于 Excel 文件、基本数据分析和柱状图渲染的数据统计系统。在上面的代码中,我们定义了一个数据统计系统类,它包含了数据加载、数据分析和数据渲染三个步骤。通过以上的实现,我们可以灵活地创建不同的数据统计系统,并且能够方便地添加新的数据加载、数据分析和数据渲染模块。在上面的代码中,我们定义了一个数据加载接口和两个具体的数据加载类。在上面的代码中,我们定义了一个数据渲染接口和两个具体的数据渲染类。

2023-04-23 23:29:42 301

原创 C# 生产看板用设计模式实现

在这个工作站统计信息显示器类中,我们同样实现了IWorkstationMonitor接口中定义的Update方法,并使用控制台输出工作站的名称和统计信息。在这个工作站状态显示器类中,我们实现了IWorkstationMonitor接口中定义的Update方法,并使用控制台输出工作站的名称和状态。在这个生产线类中,我们使用了一个列表来存储所有的工作站,并实现了获取工作站、添加工作站和移除工作站等方法。在这个工作站状态监控器接口中,我们定义了一个Update方法,用于在工作站状态发生变化时更新工作站状态。

2023-04-23 23:24:03 1060

原创 C#自动清理图片的系统用设计模式实现

这样,当ImageManager删除图片文件时,ImageCleaner会自动清理这些被删除的图片文件,并打印出相应的日志信息。假设我们需要开发一个自动清理图片的系统,其功能是监控指定目录下的图片文件,当图片文件超过一定的时间没有被访问时,就会自动删除这些图片文件。在这个具体的观察者类中,我们实现了OnImageAccessed方法,当被观察到需要清理的图片文件时,会打印出相应的日志信息。最后,我们可以定义一个具体的观察者类ImageCleaner,用于清理被删除的图片文件。

2023-04-23 23:06:12 442

原创 C#参数管理用设计模式实现

建造者模式(Builder Pattern):这个模式用于创建一个复杂的对象,它将对象的构建与表示分离开来。通过使用建造者模式,可以将参数的构建逻辑封装到一个建造者类中,然后使用该类来构建参数对象。这里的ParameterBuilder类提供了一些方法来设置参数的属性,并最终返回一个构建好的参数对象。工厂模式(Factory Pattern):工厂模式用于创建对象,它将对象的创建过程封装到一个工厂类中,以便在需要创建对象时进行调用。在参数管理中,工厂模式可以用于根据不同的参数类型来创建不同的参数对象。

2023-04-23 23:03:02 388

原创 C#实现用户登录使用策略模式实现

然后,我们可以定义多个验证策略类实现该接口,例如PasswordAuthenticationStrategy、TokenAuthenticationStrategy等。我们可以定义一个名为UserLoginService的类,其中包含一个名为Login的方法,用于用户登录。在使用UserLoginService时,我们可以根据需要选择不同的验证策略。首先,我们需要定义一个名为IAuthenticationStrategy的接口,其中包含一个名为Authenticate的方法,用于验证用户登录凭证。

2023-04-23 22:59:14 228

原创 C#实现配方管理设计模式实现

例如,我们可以实现一个配方变更通知器,将其注册为RecipeManager对象的观察者,当有配方被添加、更新或删除时,通知配方变更通知器进行相应的处理。策略模式:对不同类型的配方采用不同的处理策略,例如实现一个RecipeProcessor接口,提供不同的处理策略,例如处理川菜、湘菜、粤菜等不同类型的配方。模板方法模式:提供一个算法框架,由子类实现具体的操作步骤,例如实现一个RecipeImporter类,定义导入配方的算法框架,由子类实现具体的配方导入操作。

2023-04-23 22:54:12 1028

原创 C#用户管理用设计模式实现

总之,使用设计模式可以让我们更好地组织代码,并可以让代码更加可维护和易读。在实现用户管理功能时,我们可以使用工厂模式来创建用户对象,使用单例模式来确保只有一个用户管理器对象,从而让我们更好地实现用户管理功能。我们可以使用工厂模式来创建用户对象,将用户对象的创建过程与客户端代码解耦合。我们还可以使用单例模式来确保只有一个用户管理器对象,避免多个用户管理器对象之间的状态冲突。在客户端代码中,我们使用了UserFactory类创建User对象,并使用UserManager对象来管理User对象。

2023-04-23 22:51:10 329

原创 C#删除图片不要造成电脑卡顿的方式实现

在C#中删除图片并不会造成电脑卡顿,除非你在处理大量文件或者在进行其他繁重的操作。为了避免卡顿,你可以采用异步删除的方式,这样可以让删除操作在后台进行,不会阻塞主线程。

2023-04-23 22:49:00 85

原创 C#删除图片不要造成电脑卡顿的方式实现

在C#中删除图片并不会造成电脑卡顿,除非你在处理大量文件或者在进行其他繁重的操作。为了避免卡顿,你可以采用异步删除的方式,这样可以让删除操作在后台进行,不会阻塞主线程。

2023-04-23 22:47:53 275

原创 用C#怎么实现求CPK和最大值 最小值,怎么用设计模式设计一个类和接口描述它更方便

我们还定义了一个CalculatorFactory工厂类,它根据客户端代码传入的类型参数,返回相应的具体计算器对象。在客户端代码中,我们使用工厂类创建不同类型的计算器对象,并调用它们的Calculate方法进行计算。这样,客户端代码就不需要关心具体的计算器对象的创建过程,从而达到了解耦合的目的。然后我们定义了三个具体的计算器类,分别用于计算CPK、最大值和最小值。根据上述需求,我们可以使用工厂模式来创建计算器对象,这样可以将具体的计算器对象的创建过程与客户端代码解耦合,从而使客户端代码更加简洁。

2023-04-23 22:46:34 621

原创 C#的接口和抽象类怎么区分?什么时候使用它们?

比如说,你可以定义一个 Animal 抽象类,规定所有动物都必须具有 Eat 和 Sleep 方法,但对于不同的动物,它们的实现方法是不同的,因此你可以定义一个 Dog 类和一个 Cat 类,分别继承 Animal 类,并实现它的抽象方法。接口不能包含实现,也不能被实例化。接口可以被实现(即继承),一个类可以实现多个接口,而且接口实现必须提供所有接口成员的具体实现。接口的主要作用是定义类型之间的契约,实现了接口的类必须按照接口定义的契约来实现它的成员,从而可以实现不同类型之间的通用性和互换性。

2023-04-23 22:40:22 233

原创 C# 判断点是否在多边形内

奇偶规则的思路是从点出发,向任意方向发出一条射线,统计射线与多边形的交点个数。如果交点个数为奇数,则点在多边形内,否则不在多边形内。射线法的思路是从点出发,向任意方向发出一条射线,统计射线与多边形的交点个数。如果交点个数为奇数,则点在多边形内,否则不在多边形内。该程序中,多边形由四个点构成,点的坐标为 (1, 1)。程序统计射线与多边形的交点个数,并根据交点个数的奇偶性进行判断,最终输出结果。程序统计射线与多边形的交点个数,并根据交点个数的奇偶性进行判断,最终输出结果。下面分别介绍这两种方法的实现。

2023-04-23 22:34:53 1301

原创 C#求点集最小拟合圆

该程序使用二维数组表示点集,其中每行表示一个点的横纵坐标。程序先将第一个点作为初始圆心,然后依次处理其它点,对于每个点,如果该点在当前圆内,则不做任何处理;否则,以该点为圆心,更新圆。对于每个点,计算该点与当前圆心的距离,若距离大于圆的半径,则更新圆心和半径。最终得到最小拟合圆的圆心坐标。2、对于其它点,若该点在当前圆内,则不做任何处理;否则,将该点作为圆心,更新圆。3、对于每个点,计算该点与当前圆心的距离,若距离大于圆的半径,则更新圆心和半径。1、选取任意三个点作为初始圆的三个点,计算其外接圆。

2023-04-23 22:27:35 353

原创 C# 实现剔除相邻的点坐标集合

【代码】C# 实现剔除相邻的点坐标集合。

2023-04-23 22:23:41 161

原创 一组点,怎么求轮廓最小外接矩形??C#实现

该算法的基本思想是,在点集上绕着一个点旋转卡尺,保持卡尺间距不变,直到卡尺夹住点集边界上的两个点,记录此时卡尺的长度。然后,将卡尺旋转一定角度,直到卡尺夹住另外两个点,再记录此时的卡尺长度。重复这个过程直到卡尺夹住了所有的点,最终得到的最小卡尺长度就是最小外接矩形的对角线长度。找到距离点P1最远的点P2,将卡尺从P1和P2的中点开始沿着点集的凸包边缘旋转,记录此时卡尺的长度。记录每个旋转角度下的最小卡尺长度,最终得到的最小卡尺长度就是最小外接矩形的对角线长度。

2023-04-23 22:18:45 1289 3

原创 当机器人可旋转角度很小的时候求旋转中心

其中,(x1, y1)和(x2, y2)是两个不同点的坐标,cx和cy是旋转中心的坐标,theta是旋转角度。需要注意的是,如果机器人的旋转角度较大,则这种方法可能不太准确,因为机器人不再是一个刚体,而是可能会发生形变。具体来说,假设机器人绕着某个旋转中心旋转,我们可以选择两个不同的点,并记录它们在旋转过程中的位移向量。然后,通过求解方程组,可以计算出旋转中心的坐标。如果机器人的旋转角度很小,可以近似地将机器人看作一个刚体,在这种情况下,可以通过测量机器人在旋转过程中的两个不同点的位移来确定旋转中心。

2023-04-23 22:07:43 380

原创 C#删除文件,提示文件都被占用

当我们执行文件操作时,总会遇到一些奇奇怪怪的问题, 什么文件被占用了,文件不存在。我们想办法解决一部分遇到的问题

2022-06-24 00:10:52 1816

原创 研华GPIO的功能实现代码

基于研华工控机自带的GPIO做IO触发和接收IO信号。代码如下using Susi4.APIs;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace GpioLib{ public class IO { #regi

2022-01-22 14:01:25 2399 4

原创 UVW 在C#中的代码实现

今天聊聊UVW平台用C#实现平移和旋转的功能。众所周知,UVW平台功能强大,可以实现绕任意点旋转。本来我的工作就是视觉相关。对于视觉来说, UVW平台在图像里面仅有一个旋转中心。因为相机位置固定, 我们只求出平台的旋转中心就可以做视觉引导。进入正题。Talk is simple,code first.下面R, θx1 , θx2 , θy1为供应商提供的固定参数, 和购买的平台有关,需要咨询供应商获取。简单的理解就是把XYR方向的分量转成UVW对应的轴分量。 XYR分量可以叠加。 /// &

2022-01-22 13:53:23 1893 2

原创 海康VisionMaster绘制图形到显示窗口

颜色枚举 /// <summary> /// 颜色枚举 /// </summary> public enum ColorConstants { Red = 16711680, Green = 65280, Blue = 255, }绘制圆 public class CircleGraphic : VMControls.RenderInterface.ICircle {

2022-01-22 13:44:09 927

原创 海康VisionMaster的使用

关于提示:海康VisionMaster4.0出来也有一段时间了。 公司项目上开发为了降低成本,VisionMasterr上了首选,之前都是搞康耐视系列, 现在做完项目了, 一起回顾下海康的软件一、使用步骤1.下载VisinMaster,链接:https://www.hikrobotics.com/cn/machinevision/service/download?module=0 ,目前最新的已经是4.1版本了 ,这里我们围绕4.0讲一下。2.关于怎么导入海康自己的库, 这里不做多详解, 有兴趣的

2022-01-21 11:04:16 8813

原创 海康相机回调方式理一下

在自带的例程里面Grab_Callback就是回调的例子。详细代码就不贴了。首先是相机初始化 // ch:枚举设备 | en:Enum device MyCamera.MV_CC_DEVICE_INFO_LIST stDevList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE |.

2021-02-08 10:00:26 5767 2

原创 在线流程图编辑软件

当然是我最喜欢的ProcessOn啦首先好看是一个, 另外不用下载工作套件。很清晰可以看出整个系统的流程,最后还可以下载分享,真是太喜欢了

2021-02-08 09:18:01 192

原创 C# visionpro搜索区域拖动改变事件

C# visionpro搜索区域拖动改变事件 CogRectangle rectangle = null; private void Form1_Load(object sender, EventArgs e) { rectangle = new CogRectangle(); rectangle.Interactive = true; rectangle.GraphicDOFEnable = C

2021-02-04 16:10:33 819 2

原创 visionpro求旋转中心,拟合圆心操作

3点拟合方式 /// <summary> /// vpro拟合圆求圆心,3点 /// </summary> /// <param name="p1X">点1X</param> /// <param name="p1Y">点1Y</param> /// <param name="p2X">点2X</param>

2021-02-04 16:05:18 3300

原创 C#写文本写Csv文件操作

代码内容关于写入文件操作 /// <summary> /// 写csv文件或者文件文件,采用using方式自动释放内存 /// </summary> /// <param name="content">内容</param> /// <param name="fileName">文件名</param> private void writeData(strin

2021-02-04 15:49:32 329

原创 visionpro加载toolblock 和保存toolblock

/// <summary> /// 加载vpp文件 /// </summary> /// <param name="fileName"></param> /// <returns></returns> private CogToolBlock loadVpp(string fileName) { return Cog.

2021-02-04 15:43:53 2282

原创 visionpro 窗口显示文字

代码让visionpro在窗口显示数据 /// <summary> /// 显示label到窗口 /// </summary> /// <param name="cogDisplay1">显示控件</param> /// <param name="x">显示的位置X</param> /// <param name="y">显示的位置Y</

2021-02-04 15:39:03 3961

原创 visionpro图片读取、写入

简单的文件操作,包括读写 /// <summary> /// vpro写图片到本地 /// </summary> /// <param name="cogImage">输入图像</param> /// <param name="fileName">文件名</param> private void SaveImage(ICogImage cogImage,

2021-02-04 15:31:26 3553

原创 C#winform遍历控件判断控件类型

用foreach 遍历窗口控件,判断类型用 XXX is XXXXforeach (var item in Controls) { if (item is PictureBox) { //do something } if (item is Button) {

2021-02-04 13:24:12 1206

原创 C#属性

C# 属性在某一方面来说还是蛮好用的VS自动属性快捷方式:prop//这个时候感觉和定义字段的时候差不多 public int MyProperty { get; set; }propg// 只读属性(get only) public int MyProperty { get; private set; }propfull//当想要执行多一点操作的时候,我一般用这个定义 private int myVar; public int MyProperty

2021-01-31 21:30:27 172

原创 ZPL指令打印 斑马打印机指令打印

首先**ZPL(Zebra Programming language)**是斑马家搞的ZPL语言,用于和打印机通讯打印开发的指令。 然后理解了这个只是个指令的东西后,我们接着就想想怎么弄,本着怎么简单怎么来的原则, CSDN翻来翻去,找不到现成的。就自己摸索摸索吧。 工具: **ZebraDesigner** 目的:生成我们想要的ZPL指令,实在记不住站里面一堆指令设置。 在Designer里设计了如下画风生成ZPL指令开始-------> 选择打印最后找到我..

2021-01-29 22:48:34 7568 2

原创 关于旋转中心的计算以及运用

首先摆上套用公式:x=(x1-x2)cosθ-(y1-y2)sinθ+x2y=(y1-y2)cosθ+(x1-x2)sinθ+y2Remark: x2,y2为旋转中心,x1,y1为Mark点坐标,θ为旋转角度,x,y为Mark点绕旋转中心旋转θ角度后的坐标。旋转中心的计算方法:在机器视觉行业一般采用FitCircle 拟合圆的方式计算得出。或者通过3组或者3组以上坐标算出。为什么需要用到旋转中心呢? 因为机器人或者机器轴吸取物料时,轴心和产品中心不一致,所以转θ角度后的位置需要旋转中心算出来。

2021-01-20 09:57:02 14878 12

Delsa相机SDK_8.60.exe

delsa官网下载太慢了? 来这里试试, 版本是2021/02/01最新

2021-02-01

PL23XX_Prolific_DriverInstaller_v204.zip

绿联USB转串口驱动

2021-01-20

MVS_STD_3.3.1_201207.exe

海康相机驱动版本3.3.1

2021-01-19

SunnyUI-2.2.10

一款很好用的UI自动定义控件,常用的都具备了。给作者点赞

2021-01-19

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

TA关注的人

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