news 2026/5/30 23:01:42

在 GeckoCIRCUITS 上开发新工具模块的方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在 GeckoCIRCUITS 上开发新工具模块的方法

简介

最近在使用开源电力电子仿真软件 GeckoCIRCUITS 进行仿真时,我想使用离散时间控制器,但是 GeckoCIRCUITS 中没有这个模块,需要使用工具栏中自带的 JAVA 模块添加算法代码。但是我想把类似这样常用的模块固定在工具栏里,方便使用。于是我找到软件的源代码 (https://github.com/geckocircuits/GeckoCIRCUITS),在工具类中进行了添加和修改。

步骤1:新建一个工具类

在源文件目录中找到 src/main/java/ch/technokrat/gecko/geckocircuits/control 文件夹, 新建 ReglerDPRCONTROL.java, 添加如下代码,内容是定义器件名称、尺寸、IO 名称,关联描述键值、计算函数等。

/* by 01130.hk - online tools website : 01130.hk/zh/chaicp.html */ package ch.technokrat.gecko.geckocircuits.control; import ch.technokrat.gecko.geckocircuits.allg.AbstractComponentTyp; import ch.technokrat.gecko.geckocircuits.control.calculators.AbstractControlCalculatable; import ch.technokrat.gecko.geckocircuits.control.calculators.DPRControlCalculator; import ch.technokrat.gecko.i18n.resources.I18nKeys; import java.awt.Window; public final class ReglerDPRCONTROL extends RegelBlock{ private static final int BLOCK_WIDTH = 5; public static final ControlTypeInfo tinfo = new ControlTypeInfo(ReglerDPRCONTROL.class, "DIGITAL_PR_CTRL", I18nKeys.DIGITAL_PR_CONTROL); public ReglerDPRCONTROL() { super(); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "input")); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "kp")); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "kr")); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "wo")); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "fs")); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "wrc")); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "max")); XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "min")); YOUT.add(new TerminalControlOutputWithLabel(this, 3, -YOUT.size(), "output")); } @Override public int getBlockWidth() { return BLOCK_WIDTH * dpix; } @Override public String[] getOutputNames() { return new String[]{"output"}; } @Override public I18nKeys[] getOutputDescription() { return new I18nKeys[]{ }; } @Override public double getXShift() { return 1 / 2.0; } @Override public AbstractControlCalculatable getInternalControlCalculatableForSimulationStart() { return new DPRControlCalculator(); } @Override protected String getCenteredDrawString() { return "DIGITAL\nPR\nCTRL"; } @Override protected final Window openDialogWindow() { return new DialogWindowWithoutInput(this); } }

步骤2:添加工具计算函数

在源文件目录中找到 src/main/java/ch/technokrat/gecko/geckocircuits/control/calculators 文件夹,新建 DPRControlCalculator.java,添加如下代码,内容是定义器件 IO 数量,设计模块算法。

/* by 01130.hk - online tools website : 01130.hk/zh/chaicp.html */ package ch.technokrat.gecko.geckocircuits.control.calculators; public class DPRControlCalculator extends AbstractControlCalculatable{ //variables public DPRControlCalculator() { super(8, 1); } @Override public void berechneYOUT(final double deltaT) { //algorithm } }

步骤3:添加工具字符串键值

在 src/main/java/ch/technokrat/gecko/i18n/resources/I18nKeys.java 中添加工具的描述键值:

DIGITAL_PR_CONTROL("Digital PR controller")

在 src/main/java/ch/technokrat/gecko/geckocircuits/control/ControlTyp.java 中添加它在控制类工具中的键值:

C_DIGITAL_PR_CTRL(92, ReglerDPRCONTROL.tinfo)

步骤4:新建和初始化工具组

在 src/main/java/ch/technokrat/gecko/geckocircuits/circuit/SchematischeEingabeAuswahl2.java 中添加新的工具组,将新建工具的键值放到工具组里:

private AbstractComponentTyp[] _typDSPTOOLS = new AbstractComponentTyp[]{ ControlTyp.C_DIGITAL_PR_CTRL };

在初始化方法中添加新的工具组:

createJPanelForTypes(_typDSPTOOLS, "DSP Tools");

步骤5: 编译和运行

使用命令编译项目:

mvn package assembly:single

将在target 目录下生成 target/gecko-1.0-jar-with-dependencies.jar 文件,运行命令:

java -Xmx3G -Dpolyglot.js.nashorn-compat=true -jar target/gecko-1.0-jar-with-dependencies.jar

打开软件界面后验证,新建的工具已添加成功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 20:02:50

如何使用JMeter测试https请求

HTTP与HTTPS略有不同,所以第一次使用JMeter测试https请求时遇到了问题,百度一番后找到解决方法:加载证书。 下面内容主要记录这次操作,便于后续参考: 操作浏览器:谷歌 (1)下载被测…

作者头像 李华
网站建设 2026/5/28 16:31:49

【Open-AutoGLM性能优化秘籍】:让大模型在千元机流畅运行的4个黑科技

第一章:Open-AutoGLM手机部署教程在移动设备上部署大语言模型已成为边缘计算的重要应用场景。Open-AutoGLM 作为一款轻量化、高兼容性的开源语言模型,支持在主流 Android 和 iOS 设备上完成本地化推理部署。本章将指导开发者如何在手机端完成模型的编译、…

作者头像 李华
网站建设 2026/5/30 12:10:23

2025 MBA必看!8个降AI率工具测评榜单

2025 MBA必看!8个降AI率工具测评榜单 2025年MBA必备的降AI率工具测评指南 在人工智能技术日益渗透学术和商业领域的今天,MBA学生和研究者面临的AI率检测问题愈发严峻。随着各大平台检测算法不断升级,传统的“替换同义词”式降重方式已难以满足…

作者头像 李华
网站建设 2026/5/29 1:51:21

AI写论文哪个软件最好?实测9款工具后,我发现本科生真正需要的不是“代写”,而是一个懂学术流程的科研搭档

“AI写论文哪个软件最好?”——这是近半年来,我作为教育测评博主被问最多的问题。 有人指望AI一键生成全文,有人担心用了会被查重“炸雷”,还有人试了四五款工具,结果不是文献编造,就是逻辑混乱&#xff0c…

作者头像 李华
网站建设 2026/5/29 2:28:45

【智谱开源Open-AutoGLM部署全指南】:手把手教你快速搭建高效AI推理环境

第一章:智谱开源Open-AutoGLM模型部署概述 智谱开源的 Open-AutoGLM 是一款面向自动化图学习任务的大规模图神经网络模型,具备高效推理与灵活扩展能力。该模型支持多种图结构数据的处理,广泛应用于社交网络分析、知识图谱补全和推荐系统等领域…

作者头像 李华
网站建设 2026/5/28 17:57:39

TinyMCE实现Word图片粘贴转存支持MathType公式

金融业务系统文档导入功能开发手记 第一章:需求确认与技术焦虑 2023年6月5日,作为前端组的核心成员,我接到了产品经理紧急抛来的需求:在现有金融业务系统中新增Word/PDF导入功能,重点要求完整保留文档中的图表样式和…

作者头像 李华