自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(271)
  • 资源 (15)
  • 收藏
  • 关注

原创 C# 中,使用OpcUaHelper读写OPC服务器

【代码】C# 中,使用OpcUaHelper读写OPC服务器。

2023-05-02 10:09:42 2786

原创 在Java 中 利用Milo通信库,实现OPCUA客户端,并生成证书

程序结构:配置文件resources:opcua.properties西门子PLC端口号为4840,kepserver为49320它对应的实体类调用:opcnode.properties:opcnode.index,西门子PLC为3,kepserver为2它对应的实体类调用:生成证书类:KeyStoreLoaderOPCUA订阅,写入,读取等工具类:ClientRunner:ClientHandler:生成证书,读,写,验证等操作:开启定时器,订阅模式读取变量:

2023-02-16 20:09:03 2164 4

原创 使用Nmodbus4 使用RTU和TCP两种方式读取数据,博途ModbusTCP设置,客户端和服务器端

建立ModbusTCP通讯库using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Modbus.Device;using System.Net.Sockets;using thinger.cn.DataConvertHelper;using System.Net;namespace NModbusHelper

2022-01-06 05:22:13 11660 2

原创 用C# 的System.Threading.Channels 模拟2台PLC, 用消息队列实现异步任务之间的通信

【代码】用C# 的System.Threading.Channels 模拟2台PLC, 用消息队列实现异步任务之间的通信。

2024-05-20 00:19:08 238

原创 在aspNetCore webApi中使用System.Threading.Channels 建立一个高性能的Plc通信库

注入到Ioc中的Class。

2024-05-19 21:07:49 288

原创 在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端

【代码】在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端。

2024-05-19 20:58:55 156

原创 在C# 中 使用 System.Threading.Channels 建立一个高性能的TcpServer

viewModel: public partial class TcpServerChannelViewModel : ObservableObject { private Socket socketServer = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );

2024-05-18 01:38:44 1116

原创 C# 使用channel 实现Plc 异步任务之间的通信

【代码】C# 使用channel 实现Plc 异步任务之间的通信。

2024-05-14 10:26:49 178

原创 .net8 net8webapi中 KeyedService 和Wpf 的 prism 框架 KeyedService 的比较

【代码】.net8 net8webapi中 KeyedService 和Wpf 的 prism 框架 KeyedService 的比较。

2024-05-13 09:24:59 210

原创 wpf中, 使用MultiBinding 和转换器实现多条件筛选

这样就实现了根据年龄, Id 筛选按钮的enable了。

2024-01-28 23:10:25 1119

原创 使用Halcon实现模板匹配

机器视觉

2023-12-17 23:19:22 664 1

原创 C#中如何借助委托|反射|表达式来传递类对象属性的“引用”

【代码】C#中如何借助委托|反射|表达式来传递类对象属性的“引用”

2023-12-09 16:09:08 724

原创 PLC ST语言经典电路之 一键启停 和 时钟脉冲

PLC

2023-11-27 22:20:03 931

原创 C# , .netWebApi, WPF 用特性实现类似Java 的Ioc 自动装配@Component

之前用接口实现了自动注册IOC, 总是觉得美中不足, 毕竟没有真正实现用注解/特性实现自动注入, 这次我们来实现一个用特性注入Ioc的扩展方法.写C# 一直很羡慕Java的@Autowired 自动装配. 因为C# 必须手动在Ioc里注册。

2023-11-11 03:47:51 1599

原创 C# , .netWebApi 用接口实现类似Java 的Ioc 自动装配@Autowired

写C# 一直很羡慕Java的@Autowired 自动装配. 因为C# 必须手动在Ioc里注册,这样, 凡是实现接口IScoped , ISingleton 的类都在Ioc中自动注册了。

2023-10-15 23:35:04 1115

原创 用wpf替代winform 解决PLC数据量过大页面卡顿的问题

winform 由于不是数据驱动, 页面想刷新数据必须刷新控件, wpf则不用. 可以利用wpf 的数据绑定和IOC, 页面中的消息传递, itemscontrol 实现大量数据刷新, 上位机页面不卡顿代码如下:<Window x:Class="NavTest.Views.NewMainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas

2023-10-13 12:28:58 1248

原创 WPF中的多重绑定

在这里的 Button 的isEnabled属性用了多重绑定给converter, 用来筛选条件。

2023-10-12 14:21:54 2080

原创 .netCoreWebAPI中, 使用IHttpClientFactory 避免端口号被耗尽

【代码】.netCoreWebAPI中, 使用IHttpClientFactory 避免端口号被耗尽。

2023-10-08 07:27:30 147

原创 .net中用标志位解决socket粘包问题

以下为wpf中, 用标志位"q" 解决粘包问题。

2023-10-08 07:23:30 419

原创 .net6 WebApi使用工厂模式+IOC

Impl实现类要显式的调用父类(抽象类的)构造函数, 所以要写base(db). 因为db已经在子类中的构造函数中定义过了, 这时base 就不需要写参数类型了。按照泛型接口-抽象类-Impl实现。Controller中调用。

2023-10-07 00:01:30 560

原创 .netCore用DispatchProxy实现动态代理

然后,通过调用 MyProxy.Create 方法,你可以创建一个代理对象,该对象实现了你指定的接口或类,并且会拦截方法调用并执行你的逻辑。DispatchProxy 允许你在运行时创建一个代理对象,该代理对象可以拦截对其所代理的对象的方法调用,并在方法调用前后执行自定义的逻辑。当你使用动态代理时,你可以创建一个中间对象(代理对象),该对象可以拦截对另一个对象(目标对象)的方法调用,并在方法调用前后执行自定义的逻辑。它的作用是生成一个代理类,该代理类实现了一个接口,并在接口的方法调用时执行自定义的操作。

2023-10-06 00:23:26 502

原创 WPF中, 如何将控件的触发事件绑定到ViewModel

在DataGrid 等控件中, 有很多这种带闪电符号的触发事件. 如果用传统的事件驱动, 则直接在后台中建立 一个private PropertyChanged(Sender s, EventAgars Args) 即可. 但是如果需要绑定到ViewModel的话? 应该怎么做?带闪电符号的触发事件实现viewModel绑定前端触发事件的写法: <DataGrid x:Name="myDataGrid" AlternationCou

2023-10-05 16:26:19 2479

原创 2分钟讲清楚C#的委托, C语言的函数指针,Java的函数式接口

委托的意义在于, 它可以将函数封装成可以像变量 int, string这样的类型传入到另外的函数中, 例如函数int Test(int a, int b, Calculate c)定义一个最简单的委托 delegate int Calculate(int a, int b);换成C语言的 typedef int (*Calculate)(int a, int b)这大大提高了函数的功能和可扩展性, 可以在不改变Test函数的参数的同时,很多人不知道, C# 的委托, 和C语言的函数指针是一个东西。

2023-09-02 14:25:08 866

原创 使用Vue3中的pinia管理 前端的对象

【代码】使用Vue3中的pinia管理 前端的对象。

2023-08-28 10:03:09 141

原创 Kuka机器人设计通用码垛程序

1, 再config中定义层数cengshu , 每层码垛的个数(码垛的次数)cishu , 每层的高度levelHeight , 码垛放置点的集合putPoint[,] ,预放点1集合prePut1[,], 预放点2集合prePut2[,]

2023-08-27 20:44:50 3799 1

原创 .net6中, 用数据属性事件触发 用httpclient向服务器提交Mes工单

MES开发中, 客户往往会要求 工单开始时记录工艺数据, 工单结束时将这些工艺数据回传到更上一级的WES系统中. 因为MES系统和PLC 是多线程读取, 所以加锁, 事件触发是常用手段.

2023-08-26 23:50:32 682

原创 C# Atrribute和反射, 工厂模式和依赖注入的简单例子

Attribute 需要以Attribute 结尾, 并继承Attribute。

2023-08-08 01:34:36 377

原创 Vue的常用语法

span

2023-07-17 00:41:38 256

原创 wpf 使用附加属性实现控件拖动

项目中添加一个名为DragMoveBehavior的类,代码如下。

2023-07-04 12:30:08 689

原创 c# 中索引器的使用

【代码】c# 中索引器的使用。

2023-06-21 18:52:42 109

原创 WPF中实现动态导航

主页面<mah:MetroWindow x:Class="Kx.View.MyMainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" x

2023-06-11 23:45:47 1447

原创 WPF中,利用Livechart使用动态图表

ViewModel利用消息机制从MainViewModel读取PLC的动态数值:using CommunityToolkit.Mvvm.ComponentModel;using CommunityToolkit.Mvvm.Messaging;using CommunityToolkit.Mvvm.Messaging.Messages;using Kx.Service.Entry;using Kx.Utils;using LiveCharts;using LiveCharts.Defaults;

2023-06-11 23:40:11 1390 3

原创 在Winform/WPF中用反射快速实现依赖注入

利用反射快速将Impl,Service,ViewModel注入到IOC容器。

2023-06-11 23:31:29 597

原创 WPF上位机,如何在表格中动态更新数据

如果Student 继承了通知接口 ObservableObject。只能通过自身成员的增加和删除通知WPF的DataGrid。但是ObservableCollection。

2023-06-10 21:09:27 654

原创 用NModbus4 实现Modbus服务器端(从站,Slave,有源码地址)

我们做上位机除了读取PLC,单片机的数据,也经常需要转发数据,将数据转发给BS应用等,这时候一个Modbus服务器就非常有必要了,它简单开源稳定,今天我就用C# 实现一个Modbus服务器。GitHub地址:https://gitee.com/helodoger/my-csharp-code.git。

2023-06-10 20:58:54 1760

原创 C# 中的一些矩阵运算方法

【代码】C# 中的一些矩阵运算方法。

2023-06-10 17:54:40 1608

原创 如何在.NetFramework下使用c#10.0

C# 10.0 提供了很多高级语法糖和很多方便的特性,例如new(), global using, record等。但是.netFrameWork 只支持到C# 7, 对于做工控,需要调用.netFrameWork非托管代码,无法脱离.netFrameWork的小伙伴们很不友好。今天介绍一下如何在.netFrameWork下使用C# 10.0。可以在某个类中加入以下代码,就完美支持了。第二步,看到了xml配置文件,加入。

2023-06-05 17:33:52 503

原创 使用C# 监控工业相机在文件夹新增的照片,并存储到数据库

工业应用大多依赖于Windows平台,Windows上天然集成了.net运行时,封装简化了win32API,使用C# +Sqlsugar+serialPort 就能轻松实现以上需求。最近接到某电子厂一个需求:检测工件。通过工业相机每次对工件拍3张照片,并通过扫码枪的扫码信号将照片和二维码信息一起存储到数据库。这样的事件监控文件新增,同理还有文件改动,删减等。

2023-05-25 20:50:59 242

原创 在winform中,实现数据驱动的MVVM模式,不刷新控件更新控件

【代码】在winform中,实现数据驱动的MVVM模式,不刷新控件更新控件。

2023-05-07 20:16:14 611 1

原创 springboot中,使用mybatisPlus实现分页查询,条件查询

因为前端需要复合条件的数据和数据数量,java不能返回2个以上的参数,所以封装一个返回值类。mybatisPlus的mapper,Service和Impl。Controller(查询对应 /list)建立一个封装的VO,接收前端返回的数据。

2023-04-26 00:53:45 291

C# 使用OPCUA 读写PLC数据

C# 使用OPCUA 读写PLC数据

2023-05-02

OCR识别图像并提取文字,生成二维码

OCR识别图像并提取文字,生成二维码

2022-07-17

KepServer可以将任何工业设备的通信协议转换为opc协议,然后用OPCAutomation进行上位机数据读写。

KepServer可以将任何工业设备的通信协议转换为opc协议,然后用OPCAutomation进行上位机数据读写。

2022-07-17

Nlog,SerialLog,log4Net

Nlog,SerialLog,log4Net

2022-06-26

OpencvSharp的示例程序

OpencvSharp的示例程序

2022-06-22

C#编程环境的网络调试助手

C#编程环境的网络调试助手

2022-06-18

Prism 上位机框架 webApi

Prism 上位机框架

2022-06-14

EFCore调优 EFCore调优

EFCore调优

2022-06-11

xamarin +Prism 滑动导航

xamarin +Prism 滑动导航

2022-06-02

xamarin +Prism 进行移动端开发

xamarin +Prism 进行移动端开发 安卓 IOS WINDOWS

2022-06-02

wpf prism框架 MQTT客户端和服务器端

wpf prism框架 MQTT客户端和服务器端

2022-05-31

WPF, Prism框架下的串口调试助手

WPF, Prism框架下的串口调试助手

2022-05-30

WPF工业上位机 MVVM 实时趋势 历史趋势 报表

WPF工业上位机 MVVM 实时趋势 历史趋势 报表

2022-05-29

博途辅助,利用OpennessApi自动生成程序

博途辅助,利用OpennessApi自动生成程序

2022-05-29

自制串口调试助手 C#源代码

自制串口调试助手 C#源代码

2022-05-29

NPOI的使用,sqlsugar查询Excel

NPOI的使用,sqlsugar查询Excel

2022-05-29

空空如也

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

TA关注的人

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