![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
爱炸薯条的小朋友
机械专业的图像算法学生
展开
-
C#异步方法的简介和常用所遇到的异步任务的解决办法
异步编程的概念,如何取消异步编程,异步任务如何超时,异步线程通讯,再同步方法中调用异步方法,ValueTask,在异步应用和取消长时间执行的同步任务,同时完成任务原创 2024-08-27 23:01:13 · 803 阅读 · 0 评论 -
大恒相机SDK开发
大恒相机sdk适用于大恒相机网口与USB使用,并将采集数据转化为Halcon对象。原创 2024-03-09 14:31:21 · 712 阅读 · 0 评论 -
上位机模块之圆形测量,基于halcon的二次开发
在编写通用上位机或普通上位机时,我们经常会遇到对多个产品或者有新增产品的情况,但是直接修改代码又会非常麻烦,所以直接使用通用的上位机模块与序列化可以快速解决不同产品的问题。在halcon的算子中针对常见的几何图像进行测量。其中add_metrology_object_generic可以对圆,椭圆,矩形,直线进行测量。主要内容可以直接查看文档。在halcon的文档中,对通用参数与位置的描述比较的模糊。通用参数与位置并不是一一对应的情况,而是相对的,在程序和上文列举了部分最常用到的参数。halcon文档解析。原创 2023-11-15 17:23:07 · 374 阅读 · 2 评论 -
上位机模块之序列化与反序列化,二进制序列化
在计算机中,任何数据的本质都是二进制编码的数据,所以我们在使用二进制序列化时可以将任意的数据进行序列化。在halcon中自带的算子提供了许多序列化方式,当然都是针对某些特殊的形式,比如模板匹配的模板文件.shm或者仿射变换矩阵等。由于他们本质上都是二进制的数据,所以在使用.net的序列化时,我们可以将我们的模块文件(Halconhandle)进行序列化保存。在常规的上位机编写中需要用到许多存储数据,存储对象的时候,我们存储数据的过程就是序列化,我们提取数据的过程就是反序列化。原创 2023-11-15 16:46:44 · 310 阅读 · 0 评论 -
上位机模块之halcon绘制ROI与获取ROI,在hsmartwindow实现
1.Halcon自带的.netROI是通过调用HDrawingObject中的算子实现的,获取ROI同样也是,如何去得到延申的其他ROI。在Halcon的帮助文档中,搜索SetDrawingObjectParams并在.net格式中我们可以找到halcon所支持的全部ROI区域的参数,我们根据区域参数去获取即可。在上位机中通常需要使用到绘制ROI模块或者获取已经绘制好的ROI区域的参数,在这里通过使用hsmartwindow窗体控件进行对ROI的绘制和获取。原创 2023-11-15 16:03:08 · 1529 阅读 · 0 评论 -
使用Halcon的HsmartWindows窗体控件显示3D模型
通常我们需要在上位机查看我们采集到的3D图像,但是我们采集的3D图像通常都是深度图或者数据形式,我们在转换成halcon的3D模型后在上位机上直接查看。所以需要单独显示一个类控件。第二:在程序中,由于显示3D模型是一个无限循环的过程,所以需要使用多线程显示,不然会出现程序卡死的情况。第一:在程序代码中,我们第一步需要将显示窗口绑定在我们的控件中,不然窗体上是什么都没有显示的。由于halcon的导出代码量非常大,所以以文件的形式上传。原创 2023-11-15 14:49:07 · 559 阅读 · 0 评论 -
上位机模块之TCP数据解析类
上位机通常会与PLC进行数据通讯在通讯时一般使用16进制与ACS2码进行发送,所以工具类中提供4个方法进行解析数据。1.将字符串集合转换为字节数组,集合为数字(十进制)3.将字符串指定区域的转换为ACS2,其他区域为数字。2.将字符串集合转换为字节数组,集合全为字母。使用方法,全部复制粘贴,创建对象即可使用。4.将字节数组的指定区域转换为字符串。对TCP首发数据提供4个方法。原创 2023-03-29 11:54:08 · 417 阅读 · 1 评论 -
C#上位机之NG选点
使用方式,将NG选点窗口复制到项目中,并链接好完成NG选点按钮控件,和picbox控件。通过使用提前将NG原图保存下来,并将路径传入方法中,在从NG选点窗口中创建的CSV进行获取到数据即可。获取数据经过处理,可以直接输出图像上的坐标而不是控件坐标。在定位项目中,经常会在生产的时候出现模板匹配找不到或者匹配错误的情况,在匹配不正确的时候需要快速人工确认方向,所以就需要一个人工选点的功能——NG选点。原创 2023-03-28 16:24:00 · 229 阅读 · 1 评论 -
C#上位机模块之独立窗口进度条
在上位机开启时,由于需要加载大量的控件,类和相关的文件。所以在加载时需要创建一个独立窗口的进度条用于在加载主窗口前预留一定的时间,并使得上位机更加美观。对进度条窗口进行设置,将图标与边框去除。对进度条设置:属性为public共有。第一步:新建一个窗体类。原创 2023-03-27 16:43:21 · 387 阅读 · 0 评论 -
C#上位机模块之窗体控件随着窗体大小等大变换
在实际的上位机中会经常出现例如拖动框体,或者窗体全屏的情况,但是在绘制窗体的时候往往不能达到全屏状态进行书写。并且在工控机中由于成本控制原因,往往选取价格偏移的设备,或者触摸屏的形式,所以在分辨率不同时也需要对控件等比例放大缩小。所以在程序中设定箱体自动变换大小时,控件跟随变换即可。在窗体中设计大小变换函数即可。原创 2023-03-27 16:37:44 · 1119 阅读 · 0 评论 -
C#上位机模块之CSV存储类
在上位机中,经常会出现将数据存储到本地中,所以我写了一个常用的工具类用于直接调用,快速完成对CSV的存储。方法4在文件多的时候会出现运行时间慢的情况。方法1:对项目debug路径下创建以时间为名字的CSV文件,并写入题头与数据。其中输入数据为:路径(string),题头(List),数据(List)方法1和2:在同一时间传入200个数据时耗时为0.99ms。方法2:对绝对路径创建CSV文件,并写入题头与数据。其中方法1与方法2是重载函数,使用时需要注意。方法4:CSV保存时间,删除超出时间的路径。原创 2023-03-27 16:31:03 · 1590 阅读 · 2 评论