自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(209)
  • 资源 (1)
  • 收藏
  • 关注

原创 【git】更改dafault和protect属性

本文介绍了如何将GitLab项目的默认分支设置为main并对其进行保护。操作步骤包括:1)确认main分支存在;2)在项目设置中将main设为默认分支;3)配置分支保护策略(如限制推送/合并权限);4)可选处理旧分支;5)同步本地仓库。需要Maintainer/Owner权限,操作后被拒通常因权限或保护规则导致。完成后main将成为受保护的默认分支。

2025-08-19 11:18:29 266

原创 【git】改 GitLab 远程分支名;

摘要:要修改GitLab远程分支名,需将旧分支推为新名并删除旧分支。默认分支还需在GitLab设置中更改指向。通用命令包括本地重命名、推送新分支、删除旧分支。修改默认分支需额外在仓库设置中更新,并同步保护规则。若使用TortoiseGit,可通过图形界面完成相同操作。常见问题包括受保护分支权限不足、CI/MR目标分支需同步更新等,需相应调整权限或由Maintainer操作。(150字)

2025-08-19 11:11:45 428

原创 【C#】 GridControl与GridView、容器和视图

本文介绍了DevExpress中GridControl与GridView的区别及正确使用方法。GridControl是数据容器,负责绑定数据源和承载视图;GridView负责表格呈现,处理列、排序、过滤等显示功能。文章提供了两种配置方法:A)删除重建并重命名控件;B)通过Smart Tag手动添加和配置视图。同时给出了代码示例,包括数据绑定、视图设置、列格式化和行着色等常见操作。强调GridControl用于数据绑定,GridView负责显示设置,两者需配合使用且命名要规范。

2025-08-15 17:41:24 352

原创 【C++】自研基 2 Cooley–Tukey

本文介绍了基2 Cooley-Tukey快速傅里叶变换(FFT)算法的实现要点。该算法要求输入长度N为2的幂次,通过三层关键操作实现高效计算:首先进行倒位序重排(将输入序列按索引二进制位反转顺序排列);然后进行M=log₂N级蝶形运算,每级将数据分组进行2点蝶形计算并乘以旋转因子;最后输出存储在输入数组中。文章还说明了该算法在具体实现中的变量对应关系、与上下游系统的交互流程,以及需要注意的归一化处理和输入长度要求。该算法将DFT复杂度从O(N²)降至O(Nlog₂N)。

2025-08-15 16:04:47 791

原创 【C】环境搭建与运行说明--模板

环境搭建与运行摘要(IAR + VS Code,STM32H723) 本文档提供STM32H723开发环境搭建指南,包含以下核心内容: 工具链配置:IAR EWARM + VS Code + STM32CubeProgrammer 硬件要求:ST-LINK调试器、目标板及SWD连接 软件安装清单:IAR 9.x.x、设备包、CLI工具等 开发流程: IAR GUI编译下载验证 命令行构建与烧录 VS Code任务集成 验证标准:串口输出/LED心跳等运行证明 常见问题排查:时钟配置、链接脚本等 文档包含详细

2025-08-15 11:36:43 1016

原创 【C#】DevExpress.XtraEditors.MemoEdit memoEditLog控件讲解

本文介绍了 DevExpress.XtraEditors.MemoEdit 控件的特性与用途。作为 DevExpress UI 组件库中的多行文本编辑框,它类似于标准 .NET 的 TextBox(Multiline),但提供了更多样式和属性。MemoEdit 适合显示大段文本或日志,支持滚动条和只读模式,但不支持富文本格式。如需多色文本显示,建议改用 RichTextBox 或 DevExpress 的 RichEditControl。该控件适用于单一颜色的日志显示场景,但无法单独设置每行颜色。

2025-07-30 17:04:26 156

原创 【git】在 GitLab 上如何把 A 分支(如 feature/xxx)合并到 B 分支(如 trunk)

GitLab 分支合并与删除操作指南 选择分支: Source branch(源分支):选择要合并的分支A(如 feature/xxx)。 Target branch(目标分支):选择合并目标分支B(如 trunk)。 提交合并请求: 通过 Compare branches and continue 创建 Merge Request(MR)。 审核通过后,合并代码到目标分支。 删除源分支: 合并时勾选 “Delete source branch” 自动删除分支A。 未勾选可后续手动删除。 示例:将 feat

2025-07-30 11:13:52 494

原创 【Servo】裸机还是RTOS驱动架构如何选?

裸机还是RTOS驱动架构如何选?

2025-07-24 16:11:45 692

原创 【C++】去均值,扫频(Bode分析)、DFT/FFT前的预处理非常重要

去均值是信号预处理的关键步骤,主要作用是消除直流偏置对频域分析的影响。时域信号中的非零均值会导致DFT/FFT分析时主频点的幅值和相位失真,降低信噪比。通过去除直流分量,可以确保频域分析结果准确反映系统真实响应。在代码实现上,通常先计算信号均值再减去。输出信号(如反馈信号)必须去均值,输入信号(如激励信号)也建议处理。这一操作能有效提升扫频和频谱分析的可靠性。

2025-07-24 13:34:53 227

原创 【Servo】传递函数,工程例子,伺服系统bode

传递函数:控制系统的数学核心 传递函数是描述系统输入输出关系的频域数学模型,公式为G(s)=Y(s)/U(s)。它揭示了系统的动态特性(如惯性、延迟),能预测任何输入对应的输出响应。 典型实例: 水箱系统:输入流量与输出水位的关系呈现一阶特性G(s)=1/(As) 伺服驱动器:速度环传递函数G(s)=K/(Ts+1),K为增益,T为时间常数,反映系统响应速度 工程应用: 通过伯德图分析频率响应 用于系统整定和性能评估 通过-3dB点(对应ω=1/T)确定系统带宽 传递函数将复杂物理系统转化为可计算的数学模型

2025-07-21 17:15:02 863

原创 【Servo】常见的信号频谱分析方法,csd 和 welch 是什么

信号频谱分析方法:welch与csd简介 welch和csd是两种常见的信号频谱分析方法,分别用于不同的频谱估计目的。welch方法用于估计信号的自功率谱密度(PSD),反映信号自身的频谱能量分布,适用于噪声分析和频谱特性提取。csd方法则用于估计两个信号的互功率谱密度(CSD),分析信号间的频域相关性,常用于系统辨识和频率响应分析。在频响函数(FRF)计算中,通过csd与welch的比值($H(f) = \frac{S_{yu}(f)}{S_{uu}(f)}$)可得到系统的传递特性。这两种方法在工程信号处

2025-07-21 15:04:15 512

原创 【Servo】伺服驱动器扫频功能方案文档

本文档介绍了伺服驱动器扫频功能的设计方案,包含需求背景、验收标准、实现方案和UI界面设计。该功能通过频率响应分析(Bode图)诊断系统特性,优化伺服参数。方案采用上位机+下位机协作模式,支持参数配置、自动数据采集与分析、伯德图可视化及报告导出。UI界面分为参数设置区、实时进度监控区和伯德图展示区,提供一键操作、曲线缩放对比和异常提示功能,满足工业自动化场景下的伺服系统调优需求。

2025-07-17 16:00:26 579

原创 【Servo】伺服驱动器扫频功能、实现方式、闭环扫频上下位搭配方式

伺服驱动器扫频功能、实现方式、闭环扫频上下位搭配方式

2025-07-17 13:42:56 1133

原创 【C】为什么要有基准时钟、为什么要再分频

摘要:采样系统需要基准时钟(如8kHz的SYSTEM_FREQ)并通过分频系数(SAMPLING_RATE_DIV_COEFF)调整采样率。分频机制允许灵活降低采样频率(如8kHz/2=4kHz),无需修改硬件时钟。这类似于利用钟表滴答声的频率,通过间隔计数来降低操作频率。分频系数确保了采样率与基准时钟保持整数倍关系,实现稳定触发和便捷调整。

2025-07-10 11:21:07 158

原创 【C#】PanelControl与Panel

DevExpress的PanelControl和.NET自带的Panel控件各有特点。PanelControl支持丰富的主题样式和外观定制,适合已使用DevExpress皮肤的项目;而标准Panel控件轻量高效,适合不需要第三方依赖的简单场景。选择时需考虑项目是否已采用DevExpress皮肤以及对外观定制的需求程度。

2025-07-09 16:46:15 475

原创 【Servo】伺服驱动器里的“超程”,是工业自动化、运动控制领域的常用术语

伺服超程解析 超程指伺服系统运动超出预设机械极限(正向/负向),常见于滑台越位、电机过转等情况。系统通过物理限位开关或软限位检测超程,触发报警并强制停机,保护设备及人员安全。故障需检查实际越限、限位设置或参数错误。核心作用在于防止机械损坏与安全事故。

2025-07-09 16:41:53 177

原创 【Servo】伺服驱动器里的“超程”,是工业自动化、运动控制领域的常用术语

伺服超程解析 超程指伺服系统运动超出预设机械极限(正向/负向),常见于滑台越位、电机过转等情况。系统通过物理限位开关或软限位检测超程,触发报警并强制停机,保护设备及人员安全。故障需检查实际越限、限位设置或参数错误。核心作用在于防止机械损坏与安全事故。

2025-07-07 14:34:07 434

原创 【C】陷波滤波器

陷波滤波器是一种选择性衰减特定频率信号的滤波器,在伺服系统中主要用于抑制机械共振。它能精准滤除导致电机异响、抖动的共振频率点(如42Hz),从而提升系统稳定性。实际应用中可用于消除振动噪音、提高系统带宽,甚至多级并联处理多频点共振。调试时需精确测定共振频率并合理设置带宽,避免过度影响正常控制。作为伺服调试的关键工具,陷波滤波器有效解决了机械共振引发的抖动、过流等问题。

2025-06-28 16:08:05 626

原创 【C#】`ComboBox` 和 `ComboBoxEdit`的区别

WinForms中ComboBox与ComboBoxEdit的区别 ComboBox是WinForms原生下拉框控件(System.Windows.Forms),满足基本选择输入需求,轻量易用但功能有限。ComboBoxEdit(如DevExpress的XtraEditors)是第三方增强控件,支持主题美化、自动补全等高级功能,需引用DLL。 如何选择? 普通场景:用原生ComboBox 复杂UI需求:选用第三方ComboBoxEdit (注:后者需配合控件库使用) 两者核心差异在于功能扩展性与自定义程度。

2025-06-28 09:35:13 497

原创 【C#】WinForms C# 控件布局常用方式

WinForms C#控件布局常用方式包括:绝对定位(简单但不推荐)、Anchor锚定(半自适应)、Dock停靠(大块分区推荐)、布局容器控件(如TableLayoutPanel和FlowLayoutPanel)及嵌套布局。合理使用Panel分区结合Dock和TableLayoutPanel可实现复杂响应式布局。VS中WinForms设计快捷键包括Ctrl+箭头键微调位置/大小、对齐操作(如Ctrl+Shift+方向键)、等间距分布及Tab顺序设置等。实用建议:避免控件重叠,优先使用Panel+Dock组合

2025-06-27 17:10:30 1318

原创 【C#】 DevExpress.XtraEditors.SidePanel

DevExpress.XtraEditors.SidePanel

2025-06-26 16:31:38 447

原创 【C#】winform-嵌套控件的自动适应(自适应布局)

winform-嵌套控件的自动适应(自适应布局)

2025-06-24 15:53:16 467

原创 【Servo】自整定、惯量识别、调谐

自整定、惯量识别、调谐

2025-06-23 14:50:31 836

原创 【Servo】 工程师视角的伺服驱动器扫频功能讲解 ,涵盖原理、作用、常见类型、工程注意事项

工程师视角的伺服驱动器扫频功能讲解 ,涵盖原理、作用、常见类型、工程注意事项

2025-06-20 11:27:20 1006

原创 【C】count per second,即“每秒脉冲数”

count per second,即“每秒脉冲数”

2025-06-19 14:08:51 283

原创 【C】Servo开环扫频和闭环扫平

Servo开环扫频和闭环扫平

2025-06-18 16:35:31 479

原创 【C】概念扫除“扫频”、“伯德图”、“频谱图”、“FFT”

【C】概念扫除“扫频”、“伯德图”、“频谱图”、“FFT”

2025-06-17 15:36:06 623

原创 【C】典型的嵌入式软件架构

典型的嵌入式软件架构

2025-06-16 17:21:27 636

原创 【C】PCD(Peripheral Controller Driver)

PCD(Peripheral Controller Driver) 在STM32 HAL库体系中,指物理控制层驱动,也就是USB控制器外设的直接驱动层

2025-06-12 09:20:31 388

原创 【C】 USB CDC、Bulk-OUT 端点

认识USB CDC、Bulk-OUT 端点

2025-06-11 15:28:46 799

原创 【C】十六进制(Hex)与ASCII

十六进制(Hex)与ASCII码是计算机中常见的编码方式。

2025-06-10 17:06:10 1729

原创 【C】ASCII为计算机系统和设备之间的信息交换提供了基本标准

ASCII为计算机系统和设备之间的信息交换提供了基本标准

2025-06-10 16:53:46 872

原创 【C#】C++的回调函数和C#的事件委托在某些方面有相似之处

C++的回调函数和C#的事件委托都实现了某种形式的动态调用机制,但C#提供了更强大的语言支持,特别是在类型安全和事件管理方面。C++的回调函数更加灵活,但它要求开发者手动管理函数指针,而C#的事件和委托机制则为回调提供了更高层次的抽象。

2025-06-10 16:06:29 441

原创 【C++】回调函数,是什么,怎么用?

回调函数,是什么,怎么用?

2025-06-10 15:39:56 508

原创 【Servo】信号激励;激励数据、采集数据、跟踪数据

信号激励;激励数据、采集数据、跟踪数据

2025-06-06 18:03:46 1676

原创 【C++】std::wstring` 和 C# 的 `String`(全称 `System.String`)

std::wstring(C++)和 System.String(C#)是两种不同的字符串类型,核心差异

2025-06-04 14:03:05 1098

原创 【C++】虚函数是什么?为什么需要它?

虚函数机制是C++实现运行时多态的核心底层支持。

2025-05-30 16:36:31 512

原创 【C++】C++面向对象设计的核心思想之一: 接口抽象、解耦和可扩展性

C++面向对象设计的核心思想之一: 接口抽象、解耦和可扩展性

2025-05-30 16:22:50 771

原创 【C++】给定数据长度n,采样频率f,频率分辨率是多少?

给定数据长度n,采样频率f,频率分辨率是多少?

2025-05-26 15:22:02 666

原创 【Servo】频谱分析(FFT) 概念

频谱分析(FFT)

2025-05-22 14:24:27 592

c-cpp-properties.json、launch.json 和 tasks.json三者文件

c_cpp_properties.json、launch.json 和 tasks.json三者文件

2024-10-16

使用Python语言 ,实现批量删除C/C++类型注释

批量删除C和C++注释 1.目前支持去掉.h .hpp .c .cpp .java 这些以//或/**/为注释符的源文件 2.支持递归遍历目录 3.当前版本为Python2.7版本,故只有安装了Python2.7(或Python3.x以下版本的才可以直接使用,测试没问题后将编出exe直接使用) 4.使用方法:【记得自己备份一份以防万一】 (1)建立源目录,如d:\src(路径中最好不要有中文); (2)将delcomment.py放到某处(路径中最好不要有中文),如d:\delcomment.py (3)打开cmd,输入切换到(2)中delcomment.py所在的目录(这里是d:\),输入python delcomment.py d:\src 回车 (4)完成了去掉了注释的源代码 不明白的欢迎提问,知无不言

2024-08-02

基于多态的企业职工系统资料.zip

基于多态的企业职工系统资料

2024-01-29

C++实战练手-通讯录管理系统-源码

【C++】实战练手--通讯录管理系统 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: * 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 * 显示联系人:显示通讯录中所有联系人信息 * 删除联系人:按照姓名进行删除指定联系人 * 查找联系人:按照姓名查看指定联系人信息 * 修改联系人:按照姓名重新修改指定联系人 * 清空联系人:清空通讯录中所有信息 * 退出通讯录:退出当前使用的通讯录

2024-01-26

QSerialport多线程方法

QSerialport多线程方法 使用Qt也已经有一段时间了,虽然使用过继承QThread重写run函数,以及继承QObject然后使用MoveToThread两种方法实现多线程,但是在QSerialPort的使用过程中,两种方法都存在一定的问题。 典型的问题: QObject: Cannot create children for a parent that is in a different thread. QObject::startTimer: Timers cannot be started from another thread 原因:在主线程中创建了QSerialPort对象在子线程中调用,或者在子线程中创建然后在主线程中调用了。 对于继承QThread重写run函数的情况,往往容易在run外部定义QSerialport *port = new QSerialport()对象,然后在run中调用port->readAll()等函数,然而根据QThread的特性,只有run函数才运行在新的子线程中,所以这里就跨线程调用了 QSerialport对象,会出现上述报错。

2024-01-08

关于整合SSM的思维导图

这是详情对于之前文章https://blog.youkuaiyun.com/weixin_44939430/article/details/105702376?spm=1001.2014.3001.5501 的一个整体文件描述

2022-01-29

空空如也

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

TA关注的人

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