当前位置: 首页 > news >正文

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面,如下图,大概有13处,也许还不完整哈。

  • 1.CommandManager选项卡
  • 2.下拉选项卡
  • 3.菜单栏
  • 4.下级菜单
  • 5.浮动工具栏
  • 6.快捷方式工具栏
  • 7.FeatureManager工具栏区域
  • 8.MontionManager区域 ModelView?
  • 9.任务窗格
  • 10.前导视图工具栏
  • 11.定制三方工具条
  • 12.PMP界面
  • 13.右键菜单
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
我们来看一下每个方式的创建方式及核心代码:
1+3+5.
CommandManager选项卡上 + 菜单栏

  				//菜单List<int> cmdIndexs = new List<int>();//API提示的信息有误//第一个参数是菜单里面的名称//第三个参数是提示信息//第四个参数是工具条上的名称var tempCmdIndex1 = cmdGroup.AddCommandItem2("Cmd1", -1, "Cmd Tooltip1", "Cmd-1", 0, $"FunctionProxy({mainItemIds[0]})", $@"EnableFunction({mainItemIds[0]})", mainItemIds[0], menuToolbarOption);var tempCmdIndex2 = cmdGroup.AddCommandItem2("Cmd2", -1, "Cmd Tooltip2", "Cmd-2", 1, $"FunctionProxy({mainItemIds[1]})", $@"EnableFunction({mainItemIds[1]})", mainItemIds[1], menuToolbarOption);var tempCmdIndex3 = cmdGroup.AddCommandItem2("Cmd3", -1, "Cmd Tooltip3", "Cmd-3", 2, $"FunctionProxy({mainItemIds[2]})", $@"EnableFunction({mainItemIds[2]})", mainItemIds[2], menuToolbarOption);cmdIndexs.Add(tempCmdIndex1);cmdIndexs.Add(tempCmdIndex2);cmdIndexs.Add(tempCmdIndex3);cmdGroup.HasToolbar = true; //(浮动工具栏)cmdGroup.HasMenu = true;//(菜单栏)cmdGroup.Activate();//增加到工具条,是通过每个文档对象来增加的。 比如零件 装配 工程图bool bResult;foreach (int type in docTypes){CommandTab cmdTab;cmdTab = iCmdMgr.GetCommandTab(type, Title);//如果已经存在,并且id命令有变化,需要移除之后 ,重新增加。if (cmdTab != null & !getDataResult && ignorePrevious){bool res = iCmdMgr.RemoveCommandTab(TabToRemove: cmdTab);cmdTab = null;}//工具栏为空时,重新增加if (cmdTab == null){cmdTab = iCmdMgr.AddCommandTab(type, Title);CommandTabBox cmdBox = cmdTab.AddCommandTabBox();List<int> cmdIDs = new List<int>();//工具栏样式,List<int> showTextType = new List<int>();for (int i = 0; i < cmdIndexs.Count; i++){cmdIDs.Add(cmdGroup.get_CommandID(i));showTextType.Add((int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextBelow);}//把下拉式工具栏加到菜单里。cmdIDs.Add(flyGroup1.CmdID);showTextType.Add((int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextBelow);cmdIDs.Add(flyGroup2.CmdID);showTextType.Add((int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextBelow);bResult = cmdBox.AddCommands(cmdIDs.ToArray(), showTextType.ToArray());CommandTabBox cmdBox1 = cmdTab.AddCommandTabBox();//这个是加分割线,记得从后往前,因为分割后最前的id集变少了。//cmdTab.AddSeparator(cmdBox1, cmdIDs[0]);}}

在这里插入图片描述
工具栏上的下拉+快捷方式工具栏

在这里插入图片描述

FlyoutGroup flyGroup1 = iCmdMgr.CreateFlyoutGroup2(flyoutGroupID1, "FlyoutGroup1", "可下拉1", "工具栏说明",cmdGroup.MainIconList, cmdGroup.IconList, $"FlyoutCallback(6000)", "FlyoutEnable");flyGroup1.FlyoutType = (int)swCommandFlyoutStyle_e.swCommandFlyoutStyle_Simple;var addResult = flyGroup1.AddContextMenuFlyout((int)swDocumentTypes_e.swDocPART, (int)swSelectType_e.swSelFACES);FlyoutGroup flyGroup2 = iCmdMgr.CreateFlyoutGroup2(flyoutGroupID2, "FlyoutGroup2", "可下拉2", "工具栏说明2",cmdGroup.MainIconList, cmdGroup.IconList, $"FlyoutCallback(7000)", "FlyoutEnable");flyGroup2.FlyoutType = (int)swCommandFlyoutStyle_e.swCommandFlyoutStyle_Simple;public void FlyoutCallback(int gId){if (gId==flyoutGroupID1){FlyoutGroup flyGroup1 = iCmdMgr.GetFlyoutGroup(gId);flyGroup1.RemoveAllCommandItems();flyGroup1.AddCommandItem("AAA", "test", 0, $"FlyoutCommandItem1({gId+1})", $"FlyoutEnableCommandItem1({gId+1})");flyGroup1.AddCommandItem("BBB", "test", 0, $"FlyoutCommandItem1({gId+2})", $"FlyoutEnableCommandItem1({gId+2})");flyGroup1.AddCommandItem("CCC", "test", 0, $"FlyoutCommandItem1({gId+3})", $"FlyoutEnableCommandItem1({gId+3})");}if (gId == flyoutGroupID2){FlyoutGroup flyGroup2 = iCmdMgr.GetFlyoutGroup(gId);flyGroup2.RemoveAllCommandItems();flyGroup2.AddCommandItem("XXX", "test", 0, $"FlyoutCommandItem1({gId + 1})", $"FlyoutEnableCommandItem1({gId+1})");flyGroup2.AddCommandItem("YYY", "test", 0, $"FlyoutCommandItem1({gId + 2})", $"FlyoutEnableCommandItem1({gId+2})");}if (gId==7000){SwApp.SendMsgToUser("id==7000");}}

4.下级菜单

在这里插入图片描述

            var cmdGroupSub = iCmdMgr.CreateCommandGroup2(mainSubCmdGroupID, $"Addin Study\\SubMenu", ToolTip, "", -1, ignorePrevious, ref cmdGroupErr);cmdGroupSub.MainIconList = mainIcons;cmdGroupSub.IconList = icons;cmdGroupSub.AddCommandItem2($@"SubCmd4", -1, "Cmd Tooltip4", "Cmd-4", 2, $"FunctionProxy({mainItemIds[2]})", $@"EnableFunction({mainItemIds[2]})", mainItemIds[2], menuToolbarOption);cmdGroupSub.Activate();

在这里插入图片描述

    #region 工具菜单栏下面显示新菜单项var menuId = iSwApp.AddMenuItem5((int)swDocumentTypes_e.swDocPART, addinCookieID, "子菜单1@新菜单1", 0, "FlyoutCallback(7000)", "FlyoutEnable", "My menu item", icons);var menuId2 = iSwApp.AddMenuItem5((int)swDocumentTypes_e.swDocPART, addinCookieID, "子菜单3@子菜单2@新菜单1", 0, "FlyoutCallback(7000)", "FlyoutEnable", "My menu item", icons);var menuId3 = iSwApp.AddMenuItem5((int)swDocumentTypes_e.swDocPART, addinCookieID, "子菜单4@Addin Study", 0, "FlyoutCallback(7000)", "FlyoutEnable", "My menu item", icons);#endregion

8.ModelView

            IModelDoc2 pDoc;pDoc = (IModelDoc2)iSwApp.ActiveDoc;IModelViewManager swModelViewMgr;swModelViewMgr = pDoc.ModelViewManager;ModelView1Control = new UserControl1();swModelViewMgr.DisplayWindowFromHandlex64("用户控件1", ModelView1Control.Handle.ToInt64(), false);

9.任务窗格

            ITaskpaneView pTaskPanView;pTaskPanView = iSwApp.CreateTaskpaneView2("", "我的窗口");TaskPanWinFormControl = new Form1();pTaskPanView.DisplayWindowFromHandlex64(TaskPanWinFormControl.Handle.ToInt64());

10.前导视图工具栏 未找到接口
11.
在这里插入图片描述
在这里插入图片描述

 #region 新上下文菜单IFrame frame = (IFrame)SwApp.Frame();var imgPath1 = $@"{RegDllPath()}\icons\Pic1 (1).png";var imgPath2 = $@"{RegDllPath()}\icons\Pic1 (2).png";var imgPath3 = $@"{RegDllPath()}\icons\Pic1 (3).png";var imgPath4 = $@"{RegDllPath()}\icons\Pic1 (4).png";var imgPath5 = $@"{RegDllPath()}\icons\Pic1 (5).png";var imgPath6 = $@"{RegDllPath()}\icons\Pic1 (6).png";var resultCode = frame.AddMenuPopupIcon2((int)swDocumentTypes_e.swDocPART, (int)swSelectType_e.swSelNOTHING, "新上下文菜单", addinCookieID, "PopupCallbackFunction", "PopupEnable", "", imgPath1);// create and register the third party menu 创建并注册第三方组菜单registerID = SwApp.RegisterThirdPartyPopupMenu();// add a menu break at the top of the menu  在组菜单最上方增加一个不能点击的菜单resultCode = SwApp.AddItemToThirdPartyPopupMenu2(registerID, (int)swDocumentTypes_e.swDocPART, "我的菜单", addinCookieID, "", "", "", "", "", (int)swMenuItemType_e.swMenuItemType_Break);// add a couple of items to to the menu   增加菜单内的命令集resultCode = SwApp.AddItemToThirdPartyPopupMenu2(registerID, (int)swDocumentTypes_e.swDocPART, "命令测试1", addinCookieID, "FlyoutCallback(7000)", "FlyoutEnable", "", "Test1", imgPath2, (int)swMenuItemType_e.swMenuItemType_Default);resultCode = SwApp.AddItemToThirdPartyPopupMenu2(registerID, (int)swDocumentTypes_e.swDocPART, "命令测试2", addinCookieID, "FlyoutCallback(7000)", "FlyoutEnable", "", "Test4", imgPath3, (int)swMenuItemType_e.swMenuItemType_Default);// add a separator bar to the menu  增加分割线resultCode = SwApp.AddItemToThirdPartyPopupMenu2(registerID, (int)swDocumentTypes_e.swDocPART, "", addinCookieID, "", "", "", "", "", (int)swMenuItemType_e.swMenuItemType_Separator);//继续增加个命令resultCode = SwApp.AddItemToThirdPartyPopupMenu2(registerID, (int)swDocumentTypes_e.swDocPART, "命令测试3", addinCookieID, "FlyoutCallback(7000)", "FlyoutEnable", "", "Test5", imgPath4, (int)swMenuItemType_e.swMenuItemType_Default);// add an icon to the menu bar  给菜单条上面再加图标按钮resultCode = SwApp.AddItemToThirdPartyPopupMenu2(registerID, (int)swDocumentTypes_e.swDocPART, "", addinCookieID, "FlyoutCallback(7000)", "FlyoutEnable", "", "NoOp", imgPath5, (int)swMenuItemType_e.swMenuItemType_Default);#endregion
  1. PMP界面–请参考插件里的CreatePropertyManagerPage
  2. 对象的右键菜单
    在这里插入图片描述
  #region 右键菜单//右键菜单 (好像没看到图标的定义方式)  --选中草后 右键显示var popItem1 = SwApp.AddMenuPopupItem4((int)swDocumentTypes_e.swDocPART, addinCookieID, "ProfileFeature", "右键菜单","FlyoutCallback(7000)", "FlyoutEnable", "我的右键菜单", "");SwApp.AddMenuPopupItem4((int)swDocumentTypes_e.swDocPART, addinCookieID, "ProfileFeature", "子菜单For草图@右键子菜单","FlyoutCallback(7000)", "FlyoutEnable", "子菜单@右键菜单", "");#endregion

上面是我收集的到一些关于solidworks中二次开发里常用的一些增加自己的菜单或者命令的办法,当然也可能不是太准确。希望对大家有帮助。
代码还是保持开源风格,各位家人们自取
在这里插入图片描述

https://gitee.com/painezeng/SolidWorksAddinStudy

相关文章:

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面&#xff0c;如下图&#xff0c;大概有13处&#xff0c;也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…...

三分钟掌握音频提取 | 在 Rust 中优雅地处理视频音频

前言 在多媒体开发中&#xff0c;从视频中提取音频是一个常见需求。比如&#xff0c;你可能需要分离背景音乐来单独欣赏&#xff0c;或者提取对白用于语音分析&#xff0c;甚至为视频生成字幕。无论目的如何&#xff0c;音频提取都是多媒体处理中的基础操作。 传统上&#xf…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例9,TableView15_09带排序的导出表格示例

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

Qt+FFmpeg+SDL2播放进度显示及定位播放

参考链接&#xff1a; https://avmedia.0voice.com/?id59815 https://www.cnblogs.com/xdao/archive/2013/06/13/ffmpeg_tutor07.html https://blog.csdn.net/qq_38204686/article/details/139888438 https://blog.csdn.net/qq_38694388/article/details/120684650 https:/…...

【C语言】深入理解指针(二):从数组到二维数组的指针魔法

前言 在C语言中&#xff0c;指针一直是一个神秘而强大的存在。它不仅可以帮助我们高效地操作内存&#xff0c;还能让代码更加灵活和高效。今天&#xff0c;我们就来深入探讨指针的多种用法&#xff0c;从数组到二维数组&#xff0c;一步步揭开指针的神秘面纱。 一、数组名的指…...

调用链路传递隐式参数

在不修改方法签名与参数定义的情况下&#xff0c;可以通过 RpcContext 上的 setAttachment 和 getAttachment 在服务消费方和提供方之间进行参数的隐式传递。 隐式参数传递支持以下两个方向&#xff1a; 从消费方到提供方&#xff0c;也就是在请求发起时&#xff0c;在方法参数…...

鸿蒙 元服务摘要

元服务&#xff08;原名原子化服务&#xff09;&#xff0c;是HarmonyOS提供的一种面向未来的服务提供方式&#xff0c;是有独立入口的&#xff08;用户可通过点击方式直接触发&#xff09;、免安装的&#xff08;无需显式安装&#xff0c;由系统程序框架后台安装后即可使用&am…...

Browser Use Web UI 本地部署完全指南:从入门到精通

文章目录 引言一、项目概述1.1 核心功能1.2 技术特点 二、环境准备2.1 系统要求2.2 必要工具 三、详细部署步骤3.1 获取项目代码3.2 配置 Python 环境3.3 安装项目依赖3.4 环境配置3.5 启动应用 四、DeepSeek-V1 模型配置4.1 基础配置 五、执行Browser Use六、故障排查指南6.1 …...

Python元组

# coding: utf-8 print(-----------元组:不可变-----------)元组诗Python中内置的不可变序列 元素与元素之间使用英文的逗号分隔 元组中只有一个元素的时候&#xff0c;逗号也不能省略 元组的创建方式&#xff1a; (1)使用()直接创建元组 元组名 (element1,element2,element3,…...

物理环境与安全

物理安全的重要性 信息系统安全战略的一个重要组成部分物理安全面临问题 环境风险不确定性人类活动的不可预知性 典型的物理安全问题 自然灾害环境因素设备安全、介质安全、传输安全 场地选择 区域&#xff1a;避开自然灾害高发区环境&#xff1a;原理可能的危险因素抗震&…...

智慧医疗解决方案

1. 智慧医疗的兴起 智慧医疗作为智慧城市的关键部分&#xff0c;正逐渐成为医疗卫生体制改革的焦点。随着移动医疗和精准医疗的发展&#xff0c;智慧医疗解决方案变得触手可及&#xff0c;依托政策驱动和社会需求&#xff0c;致力于实现“以人为本、信息惠民”的目标。 2. 政…...

MySQL -- 复合查询

数据库的查询是数据库使用中比较重要的环节&#xff0c;前面的基础查询比较简单&#xff0c;不做介绍&#xff0c;可自行查阅。本文主要介绍复合查询&#xff0c;并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表&#xff0c;可以自行下载&#xff0c;也可以自己创建…...

【最后203篇系列】022 用Deepseek14b提取新闻事件

这算是之前一直想做的一件事&#xff0c;趁周末赶快做了。 业务意义&#xff1a;现实中有大量的舆情&#xff0c;这对我们的决策会有比较重要的作用 技术依赖&#xff1a; 1 模型基础能力2 消息队列3 异步获取消息4 时间序列库 1 模型基础能力 大模型发展到现在&#xff0…...

关于网络的一点知识(持续更新)

1、IP地址和子网掩码、端口号&#xff1a; IP地址是设备在网络上的地址&#xff0c;相当于一栋房子的门牌号。子网掩码相当于房子所在的街道。同一条街道的房子间是通过街道直通的&#xff0c;主人可以互相拜访。 举个例子&#xff0c;如下图所示。 说明&#xff1a;将两台设…...

2025年01月02日浙江鼎永前端面试

目录 webpack 和 vite 区别react fiber 架构vue diff 算法react diff 算法hooks 源码垂直水平布局项目介绍单点登录大文件上传微前端 1. webpack 和 vite 区别 Webpack 和 Vite 是两种不同的前端构建工具&#xff0c;它们在设计理念、性能表现和使用场景上存在显著差异。以下…...

Redis全面学习指南

要全面掌握 Redis&#xff0c;需要系统化学习以下核心知识体系&#xff0c;涵盖基础到高级的各个方面&#xff0c;并理解其内部原理和实际应用场景&#xff1a; 一、Redis 核心特性与基础 基本概念与架构 定义&#xff1a;内存数据库&#xff0c;支持键值存储、缓存、消息队列等…...

python3最新版下载及python 3.13.1安装教程(附安装包)

文章目录 前言一、python 3.13.1下载二、python 3.13.1安装步骤1.准备安装文件2.启动安装程序3.选择安装方式4.等待安装完成5.完成安装 前言 在当今数字化时代&#xff0c;Python 以其简洁易读的语法和丰富的库资源&#xff0c;成为众多开发者喜爱的编程语言。Python 3.13.1 的…...

基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合视频会议接入方案

智能融合视频会议系统方案—多协议、多场景、全兼容的一站式视频协作平台 OvMeet,LiveMeet针对用户​核心痛点实现功能与用户价值 &#xff0c;Web平台实现MCU多协议&#xff0c;H265/H264等不同编码监控&#xff0c;直播&#xff0c;会议&#xff0c;调度资源统一融合在一套界…...

css基础-display 常用布局

CSS display 属性详解 属性设置元素是否被视为块级或行级盒子以及用于子元素的布局&#xff0c;例如流式布局、网格布局或弹性布局。 一、基础显示模式 1. block 作用&#xff1a; 元素独占一行可设置宽高和内外边距默认宽度撑满父容器 应用场景&#xff1a; 布局容器&a…...

基于linux平台的C语言入门教程(7)类型转换

文章目录 1. 什么是类型转换&#xff1f;2. 隐式类型转换隐式类型转换的规则&#xff1a; 3. 显式类型转换显式类型转换的语法&#xff1a; 4. 示例代码代码解析&#xff1a;输出结果&#xff1a; 5. 常见问题问题 1&#xff1a;隐式类型转换会导致数据丢失吗&#xff1f;问题 …...

前端Wind CSS面试题及参考答案

目录 标准盒模型与 IE 盒模型的区别是什么?如何通过 box-sizing 属性切换这两种盒模型? 如何计算一个元素在标准盒模型下的总宽度(包含 margin、padding、border)? 父元素高度塌陷的原因是什么?请列举至少 3 种清除浮动的方法。 方法一:使用 clear 属性 方法二:使用…...

ROS melodic 安装 python3 cv_bridge

有时候&#xff0c;我们需要处理这些兼容性问题。此处列举我的过程&#xff0c;以供参考 mkdir -p my_ws_py39/src cd my_ws_py39 catkin_make_isolated-DPYTHON_EXECUTABLE/usr/bin/python3 \-DPYTHON_INCLUDE_DIR/usr/include/python3.8 \-DPYTHON_LIBRARY/usr/lib/x86_64-l…...

农用车一键启动工作原理

移动管家农用车一键启动的工作原理与普通汽车类似&#xff0c;主要依赖于无线射频识别技术&#xff08;RFID&#xff09;。以下是具体的工作步骤和原理&#xff1a; 智能钥匙识别&#xff1a; 车主携带智能钥匙靠近车辆时&#xff0c;钥匙通过发射射频信号与车辆进行交互。车辆…...

Swift 并发任务的协作式取消

在 Swift 并发&#xff08;Swift Concurrency&#xff09;中&#xff0c;任务&#xff08;Task&#xff09;不会被强行终止&#xff0c;而是采用**协作式取消&#xff08;cooperative cancellation&#xff09;**机制。这意味着任务会被标记为“已取消”&#xff0c;但是否真正…...

设计和布局硬件电路是嵌入式系统开发的重要环节

设计和布局硬件电路是嵌入式系统开发的重要环节&#xff0c;涉及从需求分析到原理图设计、PCB&#xff08;印刷电路板&#xff09;布局以及最终的硬件调试。以下是完整的流程和技术要点&#xff1a; 1. 硬件电路设计的基本流程 1.1 需求分析 明确功能需求&#xff1a;确定系统…...

防火墙虚拟系统实验

配置 [r1]interface GigabitEthernet 0/0/0 [r1-GigabitEthernet0/0/0]ip address 12.0.0.2 24 [r1]interface LoopBack 0 [r1-LoopBack0]ip address 100.1.1.1 24[fw]interface GigabitEthernet 0/0/0 [fw-GigabitEthernet0/0/0]service-manage all permit [fw]interfac…...

机器学习——KNN数据集划分

一、主要函数 sklearn.datasets.my_train_test_split() 该函数为Scikit-learn 中用于将数据集划分为训练集和测试集的函数&#xff0c;适用于机器学习模型的训练和验证。以下是详细解释&#xff1a; ​1、函数签名 train_test_split(*arrays, # 输入的数据…...

C++基础系列【27】Raw String Literal

博主介绍&#xff1a;程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章&#xff0c;首发gzh&#xff0c;见文末&#x1f447;&#x1f…...

PyTorch核心基础知识点

PyTorch核心基础知识点&#xff0c;结合最新特性与工业级实践&#xff0c;按优先级和逻辑关系分层解析&#xff1a; ▍ 核心基石&#xff1a;张量编程&#xff08;Tensor Programming&#xff09; 1. 张量创建&#xff08;8种生产级初始化&#xff09; # 设备自动选择&#x…...

Springboot实现使用断点续传优化同步导入Excel

springboot实现使用断点续传优化同步导入Excel 需求前言断点续传前端实现后端实现完结撒花&#xff0c;如有需要收藏的看官&#xff0c;顺便也用发财的小手点点赞哈&#xff0c;如有错漏&#xff0c;也欢迎各位在评论区评论&#xff01; 需求前言 在跨境电商系统中&#xff0c…...

1、正点原子ZYNQ最小系统--GPIO之MIO控制LED笔记

1、ZYNQ PS中的外设通过MIO连接到PS端引脚&#xff1b;通过EMIO连接到PL端引脚。 2、Zynq-7000有54个MIO&#xff0c;有64个EMIO。 3、GPIO分为4个Bank&#xff0c;其中Bank0和Bank1连接到MIO;Bank2和Bank3连接到EMIO。 4、Bank1--22bit&#xff1b;Bank0--32bit&#xff1b…...

基于STM32进行FFT滤波

文章目录 一、前言背景二、项目构思1. 确定FFT点数、采样率、采样点数2. 双缓存设计 三、代码实现1. STM32CubeMX配置和HAL库初始化2. 核心代码 四、效果展示和后话 一、前言背景 STM32 对 AD 采样信号进行快速傅里叶变换&#xff08;FFT&#xff09;&#xff0c;以获取其频谱…...

ISCA Archive 的 关于 dysarthria 的所有文章摘要(1996~2024)

ISCA Archive 的 关于 dysarthria 的所有文章摘要&#xff08;1996~2024&#xff09; 构音障碍&#xff08;Dysarthria&#xff09;研究全景总结&#xff08;1996–2024&#xff09; 所有文章摘要&#xff08;1996~2024&#xff09; ISCA Archive 的 关于 dysarthria 的所有文…...

MySQL拒绝访问

1. 问题 使用图形界面工具连接MySQL数据库&#xff0c;拒绝访问&#xff01; 2. 解决方法 以管理员的身份打开cmd&#xff0c;输入命令&#xff0c;启动MySQL net start mysql版本号 3. 参考 暂无...

ROM(只读存储器) 、SRAM(静态随机存储器) 和 Flash(闪存) 的详细解析

在嵌入式系统和其他计算机系统中&#xff0c;存储器是不可或缺的组成部分。不同类型的存储器各有其特点和应用场景。以下是 ROM&#xff08;只读存储器&#xff09;、SRAM&#xff08;静态随机存储器&#xff09; 和 Flash&#xff08;闪存&#xff09; 的详细解析。 1. ROM&am…...

Transformers x SwanLab:可视化NLP模型训练(2025最新版)

HuggingFace 的 Transformers 是目前最流行的深度学习训框架之一&#xff08;100k Star&#xff09;&#xff0c;现在主流的大语言模型&#xff08;LLaMa系列、Qwen系列、ChatGLM系列等&#xff09;、自然语言处理模型&#xff08;Bert系列&#xff09;等&#xff0c;都在使用T…...

stm32-ADC

1.ADC:模拟到数字的转换器 1.1模拟 模拟信号&#xff1a;物理当中一切可感受到的都是模拟信号&#xff08;连续的&#xff09; 1.2数字&#xff1a; 数字信号&#xff1a;二进制数&#xff08;离散的&#xff09; 1.3a->c的过程 采样、量化 1.3.1量化的原理 方法&am…...

【1】Java 零基础入门学习(小白专用)

【1】Java 零基础入门学习 &#x1f4da;博客主页&#xff1a;代码探秘者 ✨专栏&#xff1a;《JavaSe从入门到精通》 其他更新ing… ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;作者水…...

《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成

No26: CI/CD 流水线&#xff1a;GitHub Actions 与 Jenkins 集成 摘要 持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;是现代软件开发中不可或缺的实践&#xff0c;能够显著提升开发效率、减少错误并加速交付流程。本文将探讨如何利用 GitHub Actio…...

算力100问☞第92问:为什么各地热衷建设算力中心?

目录 1、宏观分析 2、政府角度分析 3、投资者角度分析 在数字化浪潮中,各地对算力中心建设的热情高涨,这一现象背后潜藏着诸多深层次的原因,涵盖了经济、科技、社会等多个维度,且彼此交织,共同驱动着这一发展趋势。 1、宏观分析 从经济结构转型的底层逻辑来看,全球经…...

w266农产品直卖平台的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

OpenLayers集成天地图服务开发指南

以下是一份面向GIS初学者的OpenLayers开发详细教程&#xff0c;深度解析代码&#xff1a; 一、开发环境搭建 1.1 OpenLayers库引入 <!-- 使用CDN引入最新版OpenLayers --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/ollatest/ol.c…...

1、双指针法

关于每个知识点的例题 可以自己看力扣标准题解。也可以在哔哩哔哩上看。想看我的&#xff0c;就到github 看 - 库 &#xff0c;介绍里写的算法讲解那些&#xff0c;里面有知识点&#xff0c;有题库。题库&#xff0c;每天都发题&#xff0c;可能跟博客的进度不一样。因为我上传…...

程序算法基础

程序设计基本概念 程序和算法 人们做任何事情都有一定的方法和程序&#xff0c;如&#xff1a;春节联欢晚会的节目单、开会的议程等&#xff0c;都是程序。在程序的指导下&#xff0c;可以有秩序地、有效的完成每一项工作。随着计算机的问世和普及&#xff0c;“程序”逐渐专…...

JavaScript基础-删除事件(解绑事件)

在现代Web开发中&#xff0c;动态地添加和移除事件处理器是构建交互式网页的关键技能之一。虽然添加事件处理器相对直观&#xff0c;但了解如何有效地移除或“解绑”这些处理器同样重要。这不仅有助于优化性能&#xff0c;还能防止潜在的内存泄漏问题。本文将介绍几种方法来删除…...

Selenium Web UI自动化测试:从入门到实战

引言 在当今快速迭代的软件开发周期中&#xff0c;自动化测试已成为保障产品质量、提升测试效率的核心手段之一。而针对Web应用的UI自动化测试&#xff0c;Selenium作为最流行的开源工具之一&#xff0c;凭借其跨浏览器、多语言支持&#xff08;Python、Java、C#等&#xff09…...

AT_abc398_f [ABC398F] ABCBA

题目大意 请点击这里查看原题面。给定一个字符串 S S S&#xff0c;找出以 S S S 为前缀的最短回文字符串。 思路 观察样例三&#xff0c;容易发现只要寻找到一个合适的“对称轴”即可。可以考虑枚举对称轴位置&#xff0c;判断然后得到长度并计算答案串。但是这样显然会超…...

RK3568开发笔记-egtouch触摸屏ubuntu系统屏幕校准

目录 前言 一、官方egtouch触摸屏驱动校准 二、ubuntu系统xinput_calibrator工具校准 2.1. 工具安装 2.2. xinput_calibrator命令校准 总结 前言 在基于 RK3568 平台进行开发,并使用 egtouch 触摸屏搭配 ubuntu20.04 系统时,准确的屏幕校准对于良好的用户交互体验至关重要…...

使用uniapp的vite版本进行微信小程序开发,在项目中使用mqtt连接、订阅、发布信息

1、保证在微信公众平台配置socket合法域名 2、项目中使用mqtt 建议在package.json中配置"mqtt": “4.1.0”&#xff0c;使用这个版本的依赖 页面中引入mqtt并配置连接 // ts-ignoreimport * as mqtt from mqtt/dist/mqtt.js; //要使用这里面的const state reacti…...

【软件系统架构】单体架构

一、引言 在软件开发的漫长历程中&#xff0c;架构的选择一直是至关重要的决策。单体架构作为一种经典的架构模式&#xff0c;曾经在许多项目中发挥着不可替代的作用。虽然如今微服务等架构逐渐流行&#xff0c;但理解单体架构对于深入掌握软件架构体系仍然有着重要意义。 二、…...