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

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

简介

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

步骤1:新建一个工具类

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

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"));}@Overridepublic int getBlockWidth() {return BLOCK_WIDTH * dpix;}@Overridepublic String[] getOutputNames() {return new String[]{"output"};}@Overridepublic I18nKeys[] getOutputDescription() {return new I18nKeys[]{ };}@Overridepublic double getXShift() {return 1 / 2.0;}@Overridepublic AbstractControlCalculatable getInternalControlCalculatableForSimulationStart() {return new DPRControlCalculator();}@Overrideprotected String getCenteredDrawString() {return "DIGITAL\nPR\nCTRL";}@Overrideprotected final Window openDialogWindow() {return new DialogWindowWithoutInput(this);}
}

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

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

package ch.technokrat.gecko.geckocircuits.control.calculators;public class DPRControlCalculator extends AbstractControlCalculatable{//variablespublic DPRControlCalculator() {super(8, 1);}@Overridepublic 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

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

Screenshot_20251225_010703

http://www.gsyq.cn/news/152648.html

相关文章:

  • 2025合肥装修公司TOP5权威推荐:装修公司服务推荐指南 - 工业品牌热点
  • 2025年广东执照办理公司权威推荐榜单:印刷经营许可证/食品证件办理/出版物经营许可证源头机构精选 - 品牌推荐官
  • 2025年废铝压块机厂家推荐:江阴市德尚环保科技有限公司,多型号铝型材/铝粉/废铝/铝屑压块机全系供应 - 品牌推荐官
  • 智谱Open-AutoGLM本地化部署实战(从0到1的完整流程)
  • 小程序开发公司哪家好?3家优质服务商+低费率优势盘点(12月)小程序开发公司哪家好?3家优质服务商+低费率优势盘点(12月) - 品牌2026
  • 源自德国的科学营养:inne因你用严谨态度让家长放心 - 速递信息
  • NMN哪个牌子靠谱?2025年NMN抗衰品牌排名,真实口碑推荐 - 速递信息
  • clickhouse对表设置ttl
  • 2025-2026防爆/实验室旋转蒸发器生产厂家推荐,大、小型机型怎么选 - 品牌推荐大师1
  • 2025年环保皮带流水线排行榜,新测评精选皮带流水线生产企业推荐 - 工业推荐榜
  • 2025年房梁榫卯产品介绍图生产厂家权威推荐榜单:房梁榫卯产品/房梁结构/房梁结构源头厂家精选 - 品牌推荐官
  • 小程序开发公司哪家靠谱?7*24小时售后服务商盘点微信小程序/寺庙小程序/活动小程序/电商小程序开发公司推荐 - 品牌2026
  • 2025北京留学中介推荐榜单:稳定可靠,优质服务中介全收录 - 留学品牌推荐官
  • 2025北京留学中介优选榜单:反馈高效型三大机构深度解析 - 留学品牌推荐官
  • 10、路由器取证与网络取证全解析
  • 2025年短视频运营服务推荐榜:郑州若佳网络科技有限公司,短视频运营方法/运营系统/推广一站式服务 - 品牌推荐官
  • 2025权威测评北京留学中介:诚信、服务双优,靠谱之选显实力 - 留学品牌推荐官
  • 2025年终AI搜索优化公司榜单:多平台覆盖与响应速度实测评估 - 速递信息
  • 2025年清洗干网设备生产厂推荐:节能清洗干网设备哪家强? - mypinpai
  • 抗衰NMN品牌榜!2025年十款公认NMN保健品哪个NMN牌子更好? - 速递信息
  • 百科发布怎么做?常见百科平台创建规则说明 - 速递信息
  • 南京靠谱ERP供应商?看这份榜单,财务云/制造云/用友 T3/人力云/好生意/税务云/供应链云/协同云ERP系统口碑排行 - 品牌推荐师
  • 2025角接触陶瓷球轴承制造企业TOP5权威推荐:技术难题破解与生产效率甄选指南 - myqiye
  • 豆包 vs DeepSeek:两大热门大模型核心区别解析,高效接入认准这个平台 - poloai
  • LiteFlow 框架分析系列(三):插件扩展机制解密
  • 2025 十大好房子隔音品牌材料排名:技术、隔声量与环保性深度对比(附避坑指南) - 资讯焦点
  • 2025年口碑不错的财务外包服务品牌企业推荐,专业财税解决方案全解析 - mypinpai
  • Open-AutoGLM vs 传统GLM:谷歌如何实现自动化训练效率跃升300%?
  • 引爆2025年AI流量!五大必选GEO公司推荐,助你走向行业之巅 - 资讯焦点
  • 2025年度工业阀门企业口碑排名:开维喜性价比怎么样? - mypinpai