- 博客(280)
- 资源 (15)
- 收藏
- 关注

原创 在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
2662
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
14095
4
原创 西门子触摸屏如何用一页动态显示所有IO变量
代码1: 写FC块, 将IO 区的变量映射到DB区中。图1, 建立DB块 , 存放注释和按钮的IO信号。图3: HMI变量和PLC变量的映射。图2, FC块的IO变量定义。
2024-12-09 11:58:12
906
原创 C# 中 yield关键字的使用
结果就是GenerateSequence1 会卡死,GenerateSequence 每有一个元素进入IEnumerable, 都会打印出来。延迟执行:只有在实际需要时才会生成下一个值,这对于处理大量数据非常有用。每次迭代时生成一个值,并且在下次迭代时继续从上次离开的地方开始。节省内存:不需要一次性将所有数据加载到内存中。
2024-10-15 09:39:25
459
原创 在wpf 中 用mvvm 的方式 绑定 鼠标事件
在 wpf中, 如果遇到控件的 MouseEnter MouseLeave 属性时, 往往会因为有参数object sender, System.Windows.Input.MouseEventArgs e 很多人选择直接生成属性在后台, 破坏了MVVM, 这其实是不必要的. 我们完全可以用 xmlns:i=“http://schemas.microsoft.com/xaml/behaviors”
2024-10-15 09:09:41
933
原创 用linq和sqlsugar 聚类的对比
例如我现在有个需求, 焊接机器人生产 “封头” 和 “支座” 2种产品, 每次生产完毕, 机器人发信号给PLC ,记录一次生产类型, 完成时间等属性. 我们需要把这些产品 按日期+小时, 分段统计出 每个小时 各种类型的产品产量. 并用echart 用柱状图展示出来, 每小时一组.在第一次分组后,每个分组只包含一种类型(A或B),并且每个分组内的Count表示该类型在该时间点的数量。在第二次分组时,我们将这些分组按Date和Hour重新组合,并分别计算A和B的数量。如果用linq 是这么做。
2024-10-15 09:06:05
372
原创 使用附加属性 实现wpf中的passwordBox 的明文/密文密码切换
【代码】使用附加属性 实现wpf中的passwordBox 的明文/密文密码切换。
2024-07-04 15:01:01
605
原创 用Microsoft.Extensions.Hosting 管理WPF项目.
点击显示所有文件, 将app.xaml包含在项目中。将app.xaml 的属性-生成操作改为"页"点击运行, 此时项目已经可以运行起来了。此时 已经用Host管理了wpf项目.在app.xaml.cs中 写入。在app.xaml中 删除。
2024-06-24 12:57:09
1054
原创 用C# 的System.Threading.Channels 模拟2台PLC, 用消息队列实现异步任务之间的通信
【代码】用C# 的System.Threading.Channels 模拟2台PLC, 用消息队列实现异步任务之间的通信。
2024-05-20 00:19:08
399
原创 在aspNetCore webApi中使用System.Threading.Channels 建立一个高性能的Plc通信库
注入到Ioc中的Class。
2024-05-19 21:07:49
552
原创 在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端
【代码】在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端。
2024-05-19 20:58:55
287
原创 在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
1364
原创 .net8 net8webapi中 KeyedService 和Wpf 的 prism 框架 KeyedService 的比较
【代码】.net8 net8webapi中 KeyedService 和Wpf 的 prism 框架 KeyedService 的比较。
2024-05-13 09:24:59
331
原创 C# , .netWebApi, WPF 用特性实现类似Java 的Ioc 自动装配@Component
之前用接口实现了自动注册IOC, 总是觉得美中不足, 毕竟没有真正实现用注解/特性实现自动注入, 这次我们来实现一个用特性注入Ioc的扩展方法.写C# 一直很羡慕Java的@Autowired 自动装配. 因为C# 必须手动在Ioc里注册。
2023-11-11 03:47:51
1847
原创 C# , .netWebApi 用接口实现类似Java 的Ioc 自动装配@Autowired
写C# 一直很羡慕Java的@Autowired 自动装配. 因为C# 必须手动在Ioc里注册,这样, 凡是实现接口IScoped , ISingleton 的类都在Ioc中自动注册了。
2023-10-15 23:35:04
1244
原创 用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
1758
原创 .netCoreWebAPI中, 使用IHttpClientFactory 避免端口号被耗尽
【代码】.netCoreWebAPI中, 使用IHttpClientFactory 避免端口号被耗尽。
2023-10-08 07:27:30
206
原创 .net6 WebApi使用工厂模式+IOC
Impl实现类要显式的调用父类(抽象类的)构造函数, 所以要写base(db). 因为db已经在子类中的构造函数中定义过了, 这时base 就不需要写参数类型了。按照泛型接口-抽象类-Impl实现。Controller中调用。
2023-10-07 00:01:30
673
原创 .netCore用DispatchProxy实现动态代理
然后,通过调用 MyProxy.Create 方法,你可以创建一个代理对象,该对象实现了你指定的接口或类,并且会拦截方法调用并执行你的逻辑。DispatchProxy 允许你在运行时创建一个代理对象,该代理对象可以拦截对其所代理的对象的方法调用,并在方法调用前后执行自定义的逻辑。当你使用动态代理时,你可以创建一个中间对象(代理对象),该对象可以拦截对另一个对象(目标对象)的方法调用,并在方法调用前后执行自定义的逻辑。它的作用是生成一个代理类,该代理类实现了一个接口,并在接口的方法调用时执行自定义的操作。
2023-10-06 00:23:26
788
原创 WPF中, 如何将控件的触发事件绑定到ViewModel
在DataGrid 等控件中, 有很多这种带闪电符号的触发事件. 如果用传统的事件驱动, 则直接在后台中建立 一个private PropertyChanged(Sender s, EventAgars Args) 即可. 但是如果需要绑定到ViewModel的话? 应该怎么做?带闪电符号的触发事件实现viewModel绑定前端触发事件的写法: <DataGrid x:Name="myDataGrid" AlternationCou
2023-10-05 16:26:19
3616
原创 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
1023
原创 Kuka机器人设计通用码垛程序
1, 再config中定义层数cengshu , 每层码垛的个数(码垛的次数)cishu , 每层的高度levelHeight , 码垛放置点的集合putPoint[,] ,预放点1集合prePut1[,], 预放点2集合prePut2[,]
2023-08-27 20:44:50
6951
2
原创 .net6中, 用数据属性事件触发 用httpclient向服务器提交Mes工单
MES开发中, 客户往往会要求 工单开始时记录工艺数据, 工单结束时将这些工艺数据回传到更上一级的WES系统中. 因为MES系统和PLC 是多线程读取, 所以加锁, 事件触发是常用手段.
2023-08-26 23:50:32
770
原创 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
1700
KepServer可以将任何工业设备的通信协议转换为opc协议,然后用OPCAutomation进行上位机数据读写。
2022-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人