news 2026/5/15 7:34:02

在 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/14 11:56:16

全员提效:为开发和产品经理定制的“轻量级”测试指南

引言:打破角色壁垒的测试新范式在敏捷开发成为主流的2025年,测试不再是QA团队的独角戏。本指南旨在为开发工程师和产品经理提供可落地的轻量化测试方案,通过建立「质量共担」机制,将缺陷拦截效率提升40%以上。一、开发人员测试工具…

作者头像 李华
网站建设 2026/5/9 17:19:27

揭秘Open-AutoGLM模型部署难点:5大常见问题与一键解决策略

第一章:揭秘Open-AutoGLM模型部署的核心挑战在将Open-AutoGLM这类大型语言模型投入生产环境的过程中,开发者面临诸多技术瓶颈。从资源消耗到推理延迟,每一个环节都可能成为系统稳定运行的潜在威胁。高显存占用带来的部署难题 大型语言模型通常…

作者头像 李华
网站建设 2026/5/11 3:00:59

ReAct模式详解:让AI智能体边思考边行动,告别幻觉!

ReAct 之前: “纯思考” 型:思维链 (Chain-of-Thought)优点: 引导模型进行复杂的逻辑推理 缺点: 无法与外部世界交互,容易产生幻觉。 “纯行动” 型:模型直接输出要执行的动作, 缺乏规划和纠错能力 ReAct范式: 认识到思考与行动是相辅相成&am…

作者头像 李华
网站建设 2026/5/7 18:37:53

【浏览器操作Open-AutoGLM终极指南】:掌握自动化AI交互的5大核心技巧

第一章:浏览器操作Open-AutoGLM的核心概念与架构解析 Open-AutoGLM 是一款基于大语言模型(LLM)驱动的自动化浏览器操作框架,旨在通过自然语言指令实现网页元素识别、交互执行与流程编排。其核心设计理念是将用户意图解析、DOM理解…

作者头像 李华