- 博客(151)
- 收藏
- 关注

原创 Unity3d数字化看板-多关节机器人运动控制
机械手运动控制主要是关节的旋转,通过控制多个关节的角度,实现对机械手的同步控制机械手运动控制,可以分解为多个关节的运动,下一关节是跟随在上一关节运动,在处理模型的时候将下一关节作为子物体挂在上一关节下,通过控制多个关节的角度,达到机械手的运动同步。模型示例如下(模型是从网上下载)
2023-04-24 22:51:28
7652
21

原创 ModbusTCP协议报文解析
报文格式交互(通信)标识:2个字节 为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文。协议标识:2个字节 表示该条指令遵循ModbusTCP协议,一般都为00 00报文长度:2个字节 表示后面数据的长度,有几个字节,高字节在前(前六位Modbus/TCP协议不同功能码通用)设备标识 :1个字节 设备地址,这个可以用于局域网里面的具体的地址,如果目标机器有固定ip,这个就不起作用,直接上写成 00功能码:1个字节 功能码在modbus协议用于表示信息帧的功能....
2022-11-23 20:46:12
39756
7
原创 C# Expression动态拼接的用法
Expression动态拼接的用法,手动构造表达式,用于动态条件查询,条件查询你就可以在 LINQ 查询中灵活地使用可配置的 Lambda 表达式进行查询了。,你希望根据字符串字段名动态生成。
2025-04-27 11:40:20
213
原创 C#操作PDF使用iText7报错-根据错误提示,缺少支持包,bouncy-castle-adapter或者bouncy-castle-fips-adapter
根据错误提示,缺少支持包,bouncy-castle-adapter或者bouncy-castle-fips-adapter。我们就搜索bouncy-castle-adapter或者bouncy-castle-fips-adapter,安装itext7.bouncy-castle-adapter之后,再运行代码,就不报错了。
2025-04-27 11:37:37
158
原创 Unity导出WebGL,无法加载,data文件无法找到 404(NotFound)
示例是使用IIS托管启动F12可以看到not found 的报错。
2025-03-19 11:30:04
358
原创 Unity3D导出的WebGL工程运行,解决打开报错“fail...file:// URL”
要解决的是unity3d导出的WebGL项目如何运行,也是常见的报错,就是直接点击index.html启动。Failed to download file Build/DT.data. Loading web pages via a file:// URL without a web server is not supported by this browser. Please use a local development web server to host Unity content, or use
2025-03-17 11:07:21
618
原创 Unity导出WebGL
在Build Settings页面中平台(Platform)切换到WebGL平台如何没有安装WebGL扩展插件,点击下载(Open Download Page)下载扩展安装文件WebGL-Support-for-Editor-2023.1.0f1c1.exe下载完成进行安装注意:安装过程,要关闭unity程序,否则可能无法安装或者安装失败安装完成后,重新打开unity,打开build settings,已经有WebGL选项了。开始构建,添加场景,选择平台然后开始构建(build)
2025-03-17 10:58:53
362
原创 ASP.NET Core WebAPI中使用Jwt实现鉴权授权-System.IdentityModel.Tokens.Jwt
使用直接实现基于 JWT 的鉴权和授权,可以在Core 中手动生成、解析、验证 JWT Token。提供了 JWT 的生成和解析的 API。以下是如何使用该库实现鉴权授权的详细步骤。
2024-12-11 08:51:56
1058
原创 ASP.NET Core中配置Swagger(OpenAPI功能)
是ASP.NET Core中的一个扩展方法,用于注册API探索器,他是Swagger生成文档所必须的。启动,就可以看到Swagger了。注册Swagger服务。
2024-12-11 08:49:42
673
原创 ASP.NET Core WebAPI中使用JwtBearer实现鉴权授权-基于Microsoft.AspNetCore.Authentication.JwtBearer
在Core 中,使用 JWT (JSON Web Token) 实现鉴权和授权是一种常见的方式。JWT 允许在不同系统之间安全地传输用户信息,并且信息是自包含的。下面是如何在Core 中实现 JWT 鉴权和授权的步骤。
2024-12-10 10:49:23
13276
原创 ASP.NET Core实现鉴权授权的几个库
System.IdentityModel.Tokens.Jwt 和 Microsoft.AspNetCore.Authentication.JwtBearer 是两个常用的库,分别用于处理 JWT(JSON Web Token)相关的任务。它们在功能上有一定重叠,但侧重点和使用场景有所不同。
2024-12-10 10:48:26
1179
原创 C#实现一个HttpClient集成通义千问-多轮对话功能实现
多轮对话的token是持续累加的,第二次发送的时候相当于第一次发送和返回的消息也发送了,都算在第二次发送的token中。增加一个result,获取流式输出的content完整内容,返回完整的助手消息内容,用于后续添加到messages中。模型以 JSON 格式生成的函数调用参数。模型生成的工具调用列表(例如函数调用)。模型生成的工具调用列表(例如函数调用)。用于区分相同角色参与者的可选名称。用于区分相同角色参与者的可选名称。用于区分相同角色参与者的可选名称。与助手之前的音频响应相关的数据。
2024-12-09 09:46:55
1351
原创 C#实现一个HttpClient集成通义千问-流式输出内容提取
根据流式返回的数据处理内容对象最后一条显示token的内容将上面两个json内容合并生成一个对象类,主要就是choices字段和usage字段合并两个类就行了具体操作就是复制json内容,切换到一个空的类文件中,然后在“编辑”→“选择性粘贴”→“将JSON 粘贴为类”操作,自动生产类,将上面两个json都生成一遍,合并主类为,得到json类如下。
2024-12-09 09:42:20
969
原创 C#中的string操作详解-截取、分割、连接、替换等
在C#中,string类提供了许多用于操作字符串的方法,包括截取、分隔和连接等。以下是一些常用字符串操作的介绍和实例
2024-12-08 17:01:31
1905
原创 C#开发-集合使用和技巧(十)Union用法-并集
如果你有一个自定义类型,你可以通过重写 Equals 和 GetHashCode 方法来确保 Union 方法正确地识别重复元素。定义一个Person类,有ID和Name,我们定义只有Id和Name都相同才表示是相同set;set;在这个示例中,我们使用了一个自定义的 PersonComparer 来比较 Person 对象,确保 Union 方法根据 Id 进行比较。使用自定义比较器进行 Union,创建一个自定义比较器来比较,里面以Id为基准} }然后使用Union进行比较。
2024-12-07 16:07:44
664
原创 C#开发-集合使用和技巧(九)Join的用法
在C#中,IEnumerable 的 Join 方法用于根据键将两个序列中的元素进行关联。Join 方法通常用于执行类似于 SQL 中的内连接操作。以下是 Join 方法的基本用法:在存储数据时,都是通过ID来确定唯一性,不会重复存储Name之类的,而在使用的时候,显示在界面上,用户不知道ID的意义,则需要显示Name。
2024-12-07 15:48:50
678
原创 C#实现一个HttpClient集成通义千问-测试代码入手学习参数配置
我们学习从测试代码开始,选择一个模型选择的大模型:通义千问2-VL-开源版-7B然后再API示例中,找到C#的示例代码修改代码中apikey为自己的key,也可以改成自己配置在环境变量中的key。 接着修改请求体jsonContent字符串里面的json对象了,修改`model`为我们用的这个大模型代码,模型下面有个模型的代码就是他请求的`model`,可以点击复制一下
2024-12-06 20:11:29
1485
原创 C#实现一个HttpClient集成通义千问-开发前准备
集成一个在线大模型(如通义千问),来开发一个chat对话类型的ai应用,我需要先了解OpenAI的API文档,请求和返回的参数都是以相关接口文档的标准进行的。
2024-12-06 20:08:26
573
原创 Visual studio的AI插件-通义灵码
打开通义灵码问答,就可以像ChatGPT一样问答,并且可以带上打开的代码文件和选择的代码块。使用技巧:写一行注释,然后让他自动生成代码,注释越详细,生成的代码越详细。打开扩展管理器,搜送“TONGYI Lingma”,进行安装。打开行间自动补全,就可以在写代码的时候自动提示代码块。在菜单栏“工具”中可以看到通义灵码。
2024-12-05 23:12:52
1570
原创 WPF+LibVLC开发播放器-音量控制和倍速控制
界面上增加音量的控件和倍速控制控件。主要也是一个`Slider`进度条控件来实现音量调节我们这里设置默认的最大值为100,默认Value值也为100,默认声音开到最大这里目前完全由前端控制音量调节,可以直接使用`ValueChanged`事件实现
2024-12-05 15:49:32
745
原创 WPF+LibVLC开发播放器-进度条显示和拖动控制
PlaySlider_DragStarted:拖动开始,设置拖动标识为true,然后暂停播放。PlaySlider_DragCompleted:拖动结束,标识改为false,然后继续播放。事件,因为在播放时间更新的时候一直在更新Value值,再拖动就会变成一直闪烁。PlaySlider_DragDelta:拖动过程中,实时更新播放器的进度。然后修改时间变化事件,增加判断,让拖动开始时,不再更新,防止拖动异常。实现进度条跟随播放,拖动更新进度。中实现实时更新进度条,在。然后实现拖动的三个方法,
2024-12-04 10:42:33
1159
原创 WPF+LibVLC开发播放器-播放时间显示
Time属性,获取当前播放时间类型:long单位:ms设置Time属性可以修改当前播放进度Length属性,当前视频总的时长类型:long单位:ms只读。
2024-12-04 10:38:20
669
原创 WPF+LibVLC开发播放器-LibVLC播放控制
在button事件中实现播放控制,根据当前状态来暂停和播放。WPF+LibVLC开发播放器-LibVLC播放控制。界面上添加一个Button按钮用于控制播放。播放器里的MediaPlayer进行控制。停止播放,是视频完全停止,进度回到一开始。Pause和SetPause都能实现暂停。前面已有初始化加载播放的代码。停止之后再播放就从头开始播放。属性获取当前播放状态。
2024-12-03 15:50:08
988
原创 WPF+LibVLC开发播放器-LibVLC在C#中的使用
使用WPF+LibVLC快速开发一个播放器。安装下面两个包,**必须安装两个**一个是相关框架对应的包,Winform就安装LibVLCSharp.Winform;WPF就安装LibVLCSharp.WPF,以此类推,他们都默认依赖LibVLCSharp,不需要例外安装一个是对应系统运行的必要的包,windows系统就安装VideoLAN.LibVLC.Windows;其他系统以此类推
2024-12-03 15:25:58
892
原创 C#开发问题-剪贴板操作异常System.Runtime.InteropServices.COMException:“OpenClipboard 失败 (异常来自HRESULT:0x800401D0
使用Clipboard.SetText(xxx);引发下面的异常:System.Runtime.InteropServices.COMException:"OpenClipboard 失败 (异常来自HRESULT:0x800401D0(CLPBRD E CANT OPEN))”此时甚至vs的复制也失效了
2024-11-20 17:44:01
722
原创 C#实现数据采集系统-分组查询
单点查询:1000个点,10000个点,就要查询一千次,一万次如果50个一组,100个一组,1千个点就减少到20次,10次,大大提供了通信效率ModbusTcp查询报文。
2024-11-17 21:01:02
843
原创 C#实现数据采集系统-数据反写(3)ModbusTcp写入数据模块开发
线圈基本都是单个写入,这里就使用05功能码寄存器写入可能多个同时写入,如int32,float等,需要四个字节,则需要2个寄存器,并且数据的两个寄存器是连续的,,其他的如Int64,double,则需要4个寄存器,我们可以一起写入调高效率。跟读报文一样,定义一个写入报文的头,前10个报文,再接收到写入数据是再在后面接上对应的数据字段然后再初始化的时候修改从站地址。
2024-08-23 11:02:44
1437
原创 C#实现数据采集系统-数据反写(2)消息内容处理和写入通信类队列
在ModbusTcp通信类中,添加一个写入队列和写入方法,写入点位先添加在队列中,然后再读数据间隙中,实现写入。处理消息,将消息转换成对应点位和值,然后调用modbustcp的写入方法。然后在启动的时候,订阅各个设备ID的写入主题,添加控制方法。用于存储每个设备的通信类,使用键值对。存储设备ID和通信类,用于快速查找。实现消息订阅方法-设备控制。
2024-08-22 23:04:57
550
原创 C#实现数据采集系统-数据反写(1)MQTT订阅接收消息
订阅方法实现:订阅主题,添加到_topicActions,如果已经连接,则直接订阅,没有连接,则等待连上的时候自动订阅,增加锁来确保订阅成功。然后需要一个键值对用于存储这个关系。在连接方法中,添加订阅。
2024-08-22 22:51:37
965
原创 C#实现数据采集系统-多设备采集
数据采集系统在网络环境下,性能足够,可以实现1对多采集,需要支持多个设备进行同时采集功能,现在就开发多设备采集功能。
2024-08-21 17:46:00
1104
原创 C#实现数据采集系统-周期配置、功能配置
之前采集、推送周期都是写死的现在就是新增一个需求,需要能够配置采集时间,比如我想1s采集一次,5s采集一次或者1分钟采集一次,然后定时推送也是,如此,我想设置推送的时间;还有定时推送和变化推送功能我可以配置是否开启关闭,有时候我只需要一种推送功能即可这样我们就可以在配置中增加这几个个参数。
2024-08-20 08:47:04
898
原创 visual studio使用技巧:快速生成Json、XML对应类
在项目中经常用到json或者xml作为配置文件,进行序列化和反序列化就需要有对应的类,重新写一遍类就比较麻烦,这里就讲一下通过visual studio快速生成json或者xml对应类型的方法。
2024-08-19 10:39:39
1352
原创 C#实现数据采集系统-系统优化服务封装
现在我们调用modbustcp和mqtt都直接在Program,所有加载和功能都混合在一起,比较难以维护类似asp.net core项目的Program.cs代码如下,构建服务配置和启动要实现的效果,Main方法中就是一个服务启动,只需要几行代码。
2024-08-02 10:14:58
661
原创 C#实现数据采集系统-配置文件化
配置信息ip端口,还有点位信息,什么的都是直接在代码里直接写死,添加点位,修改配置,比较麻烦,每次修改都需要重新生成打包。所以将这些配置都改成配置文件,这样只需要修改配置文件,程序无须修改,即可更新。配置代码:如果我们有100个采集,一个个去添加就很累,或者ip地址改了,都要重新改了打包发布再部署所以将这些属性和信息都改成配置文件。
2024-08-02 09:43:48
1188
C# WPF MVVM的Stylet框架使用示例
2024-07-21
c#操作excel NPOI使用手册
2024-07-09
stylet中文文档翻译
2024-07-09
Everything-1.4.1.1024的32位
2024-07-09
FSCapture抓屏工具-免安装版
2024-07-09
chrome插件 OneTabV1.33
2024-07-09
C# 集合一系列扩展方法使用示例
2024-06-17
WPF的MVVM模式下的命令绑定示例
2023-02-23
WPF的MVVM模式各种基础的绑定的示例
2023-02-22
WPF的MVVM简单使用-绑定和命令示例
2023-02-21
Modbustcp通信接口文档模板
2023-02-15
net framework从4.6到4.8.1不同版本的开发者工具包和简体中文语言包
2023-01-24
net framework4.0和4.5开发包(用于visual studio 2022 安装net旧版本)
2023-01-10
自己搭建IOC容器(C#)
2022-12-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人