自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(179)
  • 问答 (1)
  • 收藏
  • 关注

原创 WPF依赖属性优先级

在上篇文“依赖属性概述”中提到了依赖属性优先级,虽然知道了局部值具有最高优先级,但是细节上略去太多。这就导致了在实际遇到问题时,可能知道是优先级导致的,但不知道此时应该怎么处理。因此,有必要进一步学习优先级。原文地址这章是相当复杂了,如果对WPF和依赖属性没有一定了解,看原文根本看不懂。我觉得第一遍只要了解有优先级那么一回事儿,大致记一下设置属性的优先级顺序。后面遇到具体问题再细细分析。

2024-03-08 15:19:14 880

原创 WPF依赖属性概述

最近写的博文知识点都比较基础。因为写项目时总会遇到一些奇怪的问题,于是按我的性子,就会回过去学一遍。这归根到底还是自己基础太差,兜兜转转半天还得回来补习。这不,WPF都用了快两年了,又回来学习依赖属性了。原文地址。

2024-03-05 16:02:18 988

原创 WPF应用程序使用MVVM模式

这篇文是2009年2月份的,原文在原文地址。年代有些久远了。但整篇看下来,里面的思想放现在也仍是精髓的,甚至是许多当下主流框架的核心思想,所以决定过一遍学习学习。我一直以为技术点的学习固然重要,但技术随谈类的文也要看。因为技术点是学不完的,而有些随谈中的思想了解后会受益良多。因为这篇文本身讲的很口头了,所以简单以翻译的方式去学习。WPF可以为应用程序开发人员提供很多功能,学习使用这些功能需要转变思维方式。

2024-02-28 13:48:37 1141

原创 C#_var

C#中有一个var类型,不管什么类型的变量,都可以用它接收,实属懒人最爱了。我没有了解过它的底层,甚至没看过它的说明文档,也不知道怎么就用上它了。凭我经验,这种 “隐式也可能是动态” 类型 应该只是效率比较低,其他不会有多少负面影响。所以在不关心效率的场合,我也就一直用着。var c;.. .此时会报错,于是我就知道了,使用var类型时,你必须声明与初始化一体,否则就会报错。还有时,我会用var来接收一些写起来很复杂类型(比如集合嵌套类型),时间一长,自己也不知道此处的var到底是啥类型。

2024-01-02 11:06:25 1088

原创 Git基础学习_p1

Git相信大部分从事软件工作的人都听说过,甚至用过。它是一款版本控制软件,用于管理项目迭代更新。但大部分时候,你可能只是用过。就我个人而言,能想起来并知道其用途的,就下面几个简单命令,还有git remotegit branch等命令会偶尔用一下,但使用时都得上网查询。虽然大部分情况下,这已经够了。但偶尔会出现一些特殊情况,可能是操作时序有误导致的冲突,可能是项目真的有损坏。当然本文并不需要解决这些问题,只是想通过文档学习,对git流程、git基础有个更全面的了解。

2023-12-26 08:38:30 1712

原创 .NET中的Object类学习3_MemberwiseClone方法

按照MSDN文档的章节顺序来,本文应该是第五节。但是学了上一节 Finalize之后,发现其内容对实际开发帮助不大。所以这次跳过了前面的GetHashCode、GetType章节,直接来到MemberwiseClone。因为拷贝操作相对来讲还是比较常用的。名称空间:System程序集:System.Runtime.dll创建一个当前对象的浅拷贝(shallow copy)(副本)。// 返回值 Object 当前对象的一个浅拷贝注意。

2023-11-21 14:38:31 682

翻译 .NET中的Object类学习2_Finalize方法

名称空间: System程序集:System.Runtime.dll允许对象在被垃圾收集(Garbage Collection)回收之前尝试释放资源和执行其它清理操作。~Object();析构函数(destructor)与终结器(Finalizer)本文明明讲的是Finalize方法,在MSDN文档的示例代码却是一个析构函数,这是为什么?

2023-11-20 15:48:33 99

翻译 .NET基础_何为托管代码

进一步搜索可了解到,runtime其实省略了一部分内容,全称一般是runtime system或runtime library(注意,这里说的是一般,因为有时确实就是字面意思,指程序运行时期,与编译时相对)。甚至它还有单独的规范,如果你感兴趣,可以阅读相关章节。但是,要注意,当代码通过运行时界限时,执行的实际管理就再次到了非托管代码手中,因此又受到了同样的限制(大概是指非托管代码的那些使用限制)。这边提到的CLR就像之前说的一样的,它比较"重",除了基础的编译执行功能,还会提供一些更高级的服务/功能。

2023-11-17 16:25:37 101

翻译 .NET中的Object类学习1_Object类简介&Equals方法

命名/名称空间:System程序集:System.Runtime.dll支持.NET类层次结构中的所有类,并为派生类提供低级/底层服务。(即对.NET中的所有类都提供底层支持)它是所有.NET类的最终基类;是类型层次结构的根(the root of the type hierarchy)。注意这边说Object是类型层次结构的根,为什么是类型(type)而不是类(class)。大概是因为Object是.NET系统原生的一部分。判断两个对象实例是否相等(相等性)。

2023-11-16 11:23:18 138

原创 矢量图编辑_Inkscape裁剪与蒙版

裁剪(Clipping)和蒙版/遮罩(masking)是限制对象(或对象组)哪一部分可见的方法。对于裁剪,裁剪路径(clipping path )定义了对象的可见部分;而对于蒙版,第二个对象的不透明度由第一个对象的透明度或亮度决定。两种情况下,目标对象都不会被更改;如果需要的话,还可以取消裁剪和蒙版。

2023-11-02 16:29:38 674

原创 CAD图形导出为XAML实践

上位机通常有一个设备/场景界面,该界面用于清晰直观地呈现设备状态。如果界面要求不高,可以用组合简单图形和文字表示设备,并通过给图形变色等手段表示设备状态切换;如果画面要求高,需要做贴图动画甚至是三维模型以更炫酷的方式呈现设备状态。题外话有人可能会觉得这种画面做好看了没多大意义,炫酷画面加上动画不会带来实质性的软件提升,还会增加计算机资源消耗。不过实际情况下,上位机通常是跑在单台主机上的。此时,计算机资源是过剩的,至少不会因为几个动画增加不好的体验。

2023-10-17 14:30:21 649

翻译 Godot4_文档学习3_关于Godot_故障排除

若首次启动后问题仍然存在,则可能是你连接了特定的USB外设时,触发了Windows上的一个已知bug。如果你在脚本中引用的资源的大小写与文件系统上的大小写不同,则导出项目后加载将会失败。这是因为虚拟PCK文件系统是区分大小写的,而Windows的文件系统默认是不区分大小写的。若编辑器或项目显得过于模糊,这可能是由于图形驱动程序在所有Vulkan或OpenGL应用程序上强制使用FXAA(Fast Approximate Anti-Aliasing,一种反锯齿算法)。对话框中指定非资源文件的过滤器而引起的。

2023-10-05 13:47:02 580

翻译 Godot4_文档学习2_关于Godot_常见问题

本文是关于Godot(About)章节的第二部分。本部分由开发者/准备入坑的新人常常问到的问题组成,以问答的方式呈现,挑你感兴趣的看一下,或大致浏览一下即可。GDScript是Godot的集成脚本语言。它从头开始构建,以最少的代码最大化Godot的潜力,使新手和专家开发者都能尽可能地利用Godot的优势。如果你以前用过Python这样的语言写东西,你会觉得很熟悉。有关GDScript提供的功能示例和完整概述,查看GDScript脚本指南。使用GDScript的原因有许多,尤其是当你正在制作原型。

2023-10-04 14:52:37 254

翻译 Godot4_文档学习1_关于Godot_介绍Godot

Unity最近做了一波死,大量独立游戏开发者转战Godot。随这波潮流,我也打算学习下Godot。奈何没接触过游戏开发,不知从何学起,还是认为先从Godot官方文档开始看起,不过Godot官方文档中文版尚未翻译完全,而且已翻译部分质量也不高,所以决定边翻译英文文档边学习。后面有机会也可以将翻译的内容更新到官方文档,Godot官网文档Godot有许多版本的,现在(2023.9)官网上最新的是4.1。Godot(一般读作/ɡoʊdɑːt/,go和dot两单词组合在一起,我看不少人将音译写成。

2023-09-30 23:17:29 228

原创 C#读取CAD文件(dwg/dxf)并处理

项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。这里的CAD图纸是指CAD文件,包含多种格式,dwg/dxf/dwf/stl/pdf等等。识别其中内容,主要指文件中的图元信息(也叫实体Entity),指线段、圆弧、矩形等图形元素。得到图元基础信息(比如长度、坐标、粗细)后,进一步做处理(如得到交点、得到线段间间隔、圆弧与线段切点等)。听起来有点难,因为作为软件工程师,对CAD相关事物并不了解,它是未知的;

2023-09-26 11:53:40 4809

原创 WPF——Control与Template理解

最近又翻看了下刘铁猛的《深入浅出WPF》,发现对模板章节中的部分内容有了更深的体会,所以写篇文扯扯。文章标题是Control与Template,翻译成控件与模板。将两者放一起不是无缘无故的,在WPF中,两者关系相当密切。写了这么多,主要就是谈了谈对控件以及两个模板的理解。这种理解更像是WPF开发(也不限于WPF)的内功,不对写代码直接产生效率提升,但会有长远的积极影响。

2023-09-12 15:22:17 909

原创 C#上位机中的单例应用思考

之前写过一篇关于单例的文——C#中单例模式的实现,讲了讲单例是什么以及在C#中的常见代码实现,那篇文的内容偏理论,并不实用。getget;();...如果你还没有用过这种容器的方式,可能会觉得很麻烦;而一旦接受了这种方式,你会发现它变成了一种定式。几乎所有应用程序都可以这么做(服务容器的这种方式本身也是一种设计模式Ioc)。这些内容不是本文要讲的东西,本文主要想讲讲上位机程序中单例的应用,以及一个场景该怎样使用单例的思考。单例是很基础的设计模式,记住它是为了。

2023-08-28 09:59:21 767

原创 行业常识_Modbus

与之相比,Modbus TCP使用以太网作为物理介质,支持更高的传输速率,可以达到以太网的标准速率,如10Mbps、100Mbps或1Gbps。而Modbus TCP则采用基于TCP/IP的报文结构,将Modbus数据帧封装在TCP报文中,然后通过IP网络进行传输。Modbus RTU不依赖于网络基础设施,可以在简单的串行连接上进行通信,适用于较小的局域网。该协议采用主从通信的模式,典型的主设备(master)包括现场仪表、工控机、显示面板,典型的从设备(slave)为可编程逻辑控制器(PLC)。

2023-08-15 13:21:01 330

翻译 OPC_OPC UA规范_概述与概念

OPC UA是广泛适用于工业领域(industrial domains)的组件,例如工业传感器和致动器(actuator)、控制系统、制造执行系统和企业信息化系统,包括IIoT(Industrial Internet of Things,工业物联网)、机器对机器通信(Machine to machine,M2M),以及工业4.0和中国制造2025。这些系统旨在交换信息,并对工业过程发送命令和控制。OPC UA定义了一个通用的基础模型,以使这种信息交换更便捷。

2023-07-06 09:21:55 2620

原创 机器视觉_HALCON_模板匹配_1.CreateScaledShapeModel

在HALCON算子手册中,对算子的介绍通常包含HALCON原生程序、C#、C++以及C四种语言的介绍。本文以介绍HALCON原生程序下的算子(用其它语言联合HALCON开发,肯定要能看懂HALCON原生示例程序)的形式来学习该算子。虽然标题的CreateScaledShapeModel是大驼峰命名法,是C#和C++采用的命名,但这是因为我以往文章标题是以下划线分段的,为了美观和避免歧义,我才使用了驼峰式命名(不然标题就变成了。

2023-06-17 01:41:50 2524 1

原创 机器视觉_HALCON_图像采集接口编程手册_1.第一章节介绍

但在开启采集之后,设置就会报如下错误(比如上面"Width"和"Height"的设置)。于是,我查阅了算子文档中的内容,发现里面并没有这部分的描述,甚至第一个参数的建议值都没有出现"Width"、“Height”、“Gain”。这使得我不太敢继续往下写相机初始化和修改配置的代码。在我一番查阅后,发现有一个文档叫,简单翻阅了一下,了解到该文档主要描述了如何创建一个HALCON图像采集接口,以及如何将第三方图像采集硬件集成到HALCON系统所需的基本技术。

2023-06-05 00:59:39 1963

原创 机器视觉_HALCON_编程指南_多线程编程

本文是HALCON的programmers_guide(编程指南)中的2.2章节,章节名直译是——用HALCON进行并行编程,实际上就是多线程编程嘛。因为HALCON是机器视觉软件,涉及图像处理,图像处理往往就会牵扯到多线程,所以这章非常重要。它会给你一些多线程编程的建议与参考。实话讲,看完这节,并没有给我带来很大的启发。

2023-06-01 22:47:33 1432

原创 行业常识_交换机

项目中经常会用到交换机。交换机有多个网口。你可以用一根网线,网线一端插入交换机网口,另一端插入网络设备,那么该网络设备就连上了交换机。多个网口连上不同网络设备,并给网络设备配置好地址,就能互相访问了。交换机,英文是Switch,和任天堂的Switch一样。从名称也可以看出,其主要功能是交换。交换,是指按照通信两端传输信息的需要,用人工或设备自动完成的方法,把要传输的信息送到符合要求的相应的路由上的技术统称。广义的交换机就是一种在通信系统中完成信息交换功能的设备。

2023-05-24 02:40:21 847

原创 C#_Attribute

当需要访问程序元数据中的属性时。检查和实例化程序集中的类时。在运行时构建新的类。使用 System.Relection.Emit 中的类。执行延迟绑定,访问在运行时创建的类上的方法。

2023-05-18 05:30:11 583

原创 Ioc中的服务生命周期

前面写过一篇博客,是关于Ioc控制反转的。那篇文中,主要介绍了Ioc思想及其常见实现方式——依赖注入(DI),然后演示了的使用(这个应该算.NET自带的DI包)。不过DI的使用上,只是简单演示流程,并未进行深入学习。本文就DI中的服务生命周期(ServiceLifetime)进一步学习。在Ioc中,Singleton用于在整个应用程序生命周期中只创建一次,每次请求都是同一个实例的情况;Scoped用于同一作用域内只被创建一次;Transient每次请求都是一个新的实例;

2023-05-08 22:01:09 795

原创 行业常识_RFID

RFID连起来就是指通过“无线电波的频率做身份鉴别的技术”,全称是Radio frequency identification 技术,中文译作。公交卡中的芯片,读取读卡机发出的扣费信息,查找卡中余额,执行扣费逻辑。走上一辆公交车,公交车上置有读卡机,读卡机既是一个“发射器”,又是一个“接收器”。RFID的工作原理是基于无线电波通信的,从上面RF介绍中也可以知道这点。ID,是identification的缩写,n. 识别;在射频中,频率是衡量无线电波的特性的一个重要参数。再来解释一下,RFID的工作原理。

2023-05-02 16:21:30 990

原创 WPF_Application

该类封装了一个WPF应用程序。该类派生自DispatcherObject,实现了IQueryAmbient接口。Application类封装了一个WPF应用程序。Application实现了单例模式(Singleton Pattern),以提供对其窗口、属性和资源作用域服务的共享访问。通过Application.Current访问。通过Application.Current.Dispatcher可以将操作排队到UI线程中执行,这在跨线程操作中非常有用。

2023-04-11 11:09:02 456

原创 .NET_Dispatcher与DispatcherObject

提供用于管理线程工作项队列的服务。所以它是一个抽象的东西,用于管理线程工作项的。表示一个与Dispatcher关联的对象。

2023-04-10 21:21:31 568

原创 机器视觉_HALCON_内存管理_C#中HObject对象申请释放解析

使用HALCON联合C#进行开发时,若用HDevelop导出代码,可以在导出的代码文件中看到类似下面的代码,从用户手册中可以知道,ho_为前缀的ho_Image是一个图像变量(当然,根本原因是HObject类是图像类)。在ho_Image从图像设备中获取图像前,还有一行代码加这行代码的理由如上图所述,导出的C#代码中图像对象由HObject表示,但是从GC的角度看,HObject是非常小的,因此可能会被忽略。

2023-04-08 08:57:54 2107

原创 .NET是个啥_拓展

差不多一年前写过一篇博客——.NET是个啥。那篇博客基本上就是按照官方文档的翻译,并加入一些自己的理解和吐槽来写的。现在回过去看呢,虽然内容全面,但是停留在表面。(相当于回答了它是什么,它包含了什么)什么意思呢?通过那篇博客,可以知道.NET是微软的开发平台,它包含各种各样的工具。但是,微软为什么要开发这样一个平台?这个平台是怎么实现的?和其他平台/技术(如Java)有什么不一样?这些拓展的问题,似乎并没有办法得到解答。本文主要围绕这几个问题,来讨论、进一步认识.NET。

2023-04-05 19:43:54 12265

原创 机器视觉_HALCON_HDevelop用户指南_7.图像采集助手

在选择图像采集接口时,用户可以设置相应的设备参数,如图像格式等。在成功与所选的图像采集接口建立连接后,可以在活动的图形窗口中抓取并显示图像。使用实时图像时,可以交互式地调节所选接口支持的参数(交互式调节就是可以GUI操作,并且可以马上从图形窗口中看到反馈)。要设置一个通用参数,请从列表中选择,并编辑分配的值,即 = 后面的值。这个设备ID,实际上是由设备的多个参数组合而成的,其中就包括设备物理地址。还能指示助手生成HDevelop代码,该代码将连接到所选的图像采集接口,设置指定的参数并捕获图像。

2023-03-31 22:26:10 2148

原创 行业常识_串口相关

作为一只厂狗,经常听到一些词,“RS232”、“RS485”、“串口”、“DB9”…在我眼里,一律是这个玩意儿,为什么会产生这种(错误的)认识呢?因为有人告诉我上图中的物体叫USB转485数据线。USB我认识啊,就是左边的那个接头;那剩下的一个头就是485咯。再加上插上这两个头的通信叫串口通信,这玩意儿叫串口线好像也没啥问题。那USB转232数据线的外观和上图一样,所以我自然以为是一个东西。很明显,这种认识的方式不对的。所以有必要从头学习一下。

2023-03-30 09:09:53 731

原创 Windows AI学习_2.Windows机器学习_介绍

由于我是个机器学习菜狗,所以许多基础概念还未了解过,文中涉及到时,我会临时学习,以相对白话的方式介绍(当然存在不严谨之处不可避免,后期会慢慢修正)。Windows ML内置于Windows 10和Windows Server 2019的最新版本中,并且还可以作为NuGet包用于向下兼容至Windows 8.1。开发便捷。

2023-03-26 21:58:39 696

原创 Windows AI学习_1. 缘起

不管你觉得AI高大上也好,还是“就这”也好,它越来越普及是事实,使用的门槛会越来越低(大部分人也就是学习如何使用它,而不需要过多关注底层机理性的东西)。最近GPT比较热门,我也使用了一段时间的GPT,发现它真的很强大,甚至可以编写代码(这个“甚至”没必要加,这并不是什么稀奇的事情)。那我写本系列文章的目的,也是想探究一下VS中集成的机器学习有什么用、怎么用,能否给我们的程序注入一些新的元素。看到本文的人,可能有一部分是相关专业的人,会想,就这?机器学习嘛,很多人都知道,是跟AI有关系的。

2023-03-24 20:38:35 508

原创 《深入浅出WPF》——x名称空间

此时,类充当的角色就是对象的“模具”,使用它创建出来的对象在型号(即内存大小)和内部布局上都完全一样。x:Shared一定要和x:Key配合使用,如果x:Shared的值为true,那么每次检索到这个对象时(共享对象),我们得到的都是同一个对象,否则,得到的是对象的一个新副本。在WPF中,几乎每个元素都有自己的Resources属性,这个属性是个“Key-Value”式的集合,只要把元素放进这个集合,这个元素就称为资源字典中的一项(item),当然,为了能够检索到该项,就必须为它添加x:Key。

2023-03-14 09:56:39 544

原创 《深入浅出WPF》——XAML语法及基础知识

下面是一段简单的xaml代码:这一大段代码,其中还有两个看着像主页地址的东西……它们都是些什么呢?让我们来一个一个地分析。XAML是一种由XML派生而来的语言,所以很多XML中的概念在XAML是通用的。比如,使用标签声明一个元素(每个元素对应内存中的一个对象)时,需要使用起始标签和终止标签,夹在起始标签和终止标签中的XAML代码表示隶属于这个标签的内容。如果没有什么内容,则这个标签为空标签,可以写为为了表示同类标签中的某个标签与众不同,可以给它的特征/特性(Attribu

2023-03-12 15:12:42 2364

原创 WPF_ObservableCollection基本使用及其注意项

ObservableCollection基本使用如上述代码示例所示。其中要注意的是,替换ViewModel中的绑定对象并不能真实替换ItemSource。还有ObservableCollection不是线程安全的,ItemSource绑定其后,不能跨线程(UI线程外)修改ObservableCollection,关于这点会另辟文进行介绍。

2023-02-20 16:39:45 2771 1

原创 机器视觉_HALCON_示例实践_1.检测圆形

整个过程其实并不复杂,毕竟我们只是调用算子,不需要关注算法细节。但这里还是得稍微总结一下,阈值化,拿到图之后通常会先阈值化一下,方便后续处理。选取ROI,获取一个形状,然后用该形状去裁剪原图。

2023-02-14 16:37:53 5480

原创 CommunityToolkit.Mvvm学习笔记(5)——ObservableValidator

有时验证一个属性需要viewmodel去访问其他的服务、数据或API。这边提供了多种方法向属性添加自定义验证,使用哪种方法取决于场景和灵活度需求。下面有个示例,它说明如何使用} }2} }100} }typeof} }nameof} }} }在本例中,有一个静态的方法,它通过注入到viewmodel中的服务对Name属性执行验证(依赖注入章节有介绍)。该方法接收name。

2023-02-09 16:18:53 2131

原创 机器视觉_HALCON_HDevelop用户指南_6.代码导出

按照HDevelop用户指南/手册的章节顺序,代码导出是第十章的内容。但6789这四章,是偏查阅的内容,不是那种流程介绍的。拿第六章GUI来说,里面子章节对HDevelop中的各种窗口做详细说明,显然前期学习阶段没有必要把里面的内容全看一遍,在用到时查阅更好,剩下的789章同理。从个人使用的角度来讲,在学完1-5章后,已经对HALCON基本概念和HDevelop基本使用有了一定了解,之后就想把HDevelop的功能导出来,试着集成到自己的程序中。

2023-02-06 13:50:34 1203

空空如也

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

TA关注的人

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