0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全面介绍主调模块,以及GUI模块的编写

iIeQ_mwrfnet 来源:老猫电磁馆 作者:况泽灵 2021-06-30 15:23 次阅读

摘要:本节主要介绍主调模块,以及GUI模块的编写。

主调模块

终于到了主调模块了,之前的章节主要介绍了参数计算,波导查值,以及HFSS封装和调用等,所有准备工作已就绪,只差一个“主体”将这些模块调用起来,实现这个功能的便是主调模块main.py。

这一步的编写相对比较简单,按我个人习惯,还是采用了面向对象的编程思路,写一个叫Horn的对象,首先通过对象的初始化功能将输入参数导入进来,然后调用“波导查值”模块确定波导尺寸、“参数计算”模块计算喇叭尺寸,再调用“HFSS调用模块”,通过规定一系列建模动作(如第三节所述),完成HFSS建模和运算。

示意代码如下,如果对于建模的动作有不太明白了,请看上一篇文章的讲解。

import paraCalc

import wg

import sim

class Horn:

def __init__(self, freq, HPE, HPH, wg_name=None):

self.freq = freq

self.HPE = HPE

self.HPH = HPH

self.wg_name = wg_name

self.wg_a, self.wg_b, self.horn_a, self.horn_b, self.horn_l = None, None, None, None, None

def wg_size(self):

if self.wg_name is None:

self.wg_a, self.wg_b = wg.check_by_freq(self.freq)

else:

self.wg_a, self.wg_b = wg.check_by_name(self.wg_name)

return self.wg_a, self.wg_b

def para(self):

self.wg_size()

if (self.wg_a or self.wg_b) is None:

print(‘Input error!’)

else:

self.horn_a, self.horn_b, self.horn_l = paraCalc.calc(self.freq, self.HPE, self.HPH, self.wg_a, self.wg_b)

def realize_in_hfss(self):

h = sim.HFSS()

# 设置变量

h.set_variable(‘wg_a’, self.wg_a)

h.set_variable(‘wg_b’, self.wg_b)

h.set_variable(‘wg_l’, self.wg_a*1.5)

h.set_variable(‘horn_a’, self.horn_a)

h.set_variable(‘horn_b’, self.horn_b)

h.set_variable(‘horn_l’, self.horn_l)

h.set_variable(‘wg_t’, 0.5)

h.set_variable(‘ab’, 75/self.freq)

# 波导内腔

h.create_centered_rectangle(‘wg_a’, ‘wg_b’, 0, ‘wg_in’)

h.create_centered_rectangle(‘wg_a’, ‘wg_b’, ‘wg_l’, ‘wg_in_’)

h.connect(‘wg_in’, ‘wg_in_’)

# 喇叭内腔

h.create_centered_rectangle(‘wg_a’, ‘wg_b’, ‘wg_l’, ‘horn_in’)

h.create_centered_rectangle(‘horn_a’, ‘horn_b’, ‘wg_l+horn_l’, ‘horn_in_’)

h.connect(‘horn_in’, ‘horn_in_’)

# 波导外形

h.create_centered_rectangle(‘(wg_a+wg_t*2)’, ‘(wg_b+wg_t*2)’, ‘-wg_t’, ‘wg’)

h.create_centered_rectangle(‘(wg_a+wg_t*2)’, ‘(wg_b+wg_t*2)’, ‘wg_l’, ‘wg_’)

h.connect(‘wg’, ‘wg_’)

# 喇叭外形

h.create_centered_rectangle(‘(wg_a+wg_t*2)’, ‘(wg_b+wg_t*2)’, ‘wg_l’, ‘horn’)

h.create_centered_rectangle(‘(horn_a+wg_t*2)’, ‘(horn_b+wg_t*2)’, ‘horn_l+wg_l’, ‘horn_’)

h.connect(‘horn’, ‘horn_’)

# 布尔运算生成喇叭,然后设为PEC

h.unite(‘horn’, ‘wg’)

h.unite(‘horn_in’, ‘wg_in’)

h.subtract(‘horn’, ‘horn_in’)

h.set_material(‘horn’)

# 生成区域并赋予辐射边界

h.create_region(‘ab’)

h.assign_radiation_region()

h.insert_radiation_setup()

# 设置端口

h.create_centered_rectangle(‘wg_a’, ‘wg_b’, 0, ‘port’)

h.assign_port(‘port’)

h.insert_analysis_setup(self.freq)

# 创建报告

h.create_reports()

# 保存工程并运行

h.save_prj()

h.run()

if __name__ == ‘__main__’:

f, E, H = 10, 30, 20

a_horn = Horn(f, E, H)

a_horn.realize_in_hfss()

以上代码可能没有太多需要解释的,可以看到的是,定义好HFSS接口后,调用过程就很轻松愉快了。

图形交互界面模块

开篇提到过,Python实现图形界面的方法有很多,除了Tkinter属于自带包外,其他著名的包如PyQt、wxPython等都需要额外安装,考虑到我们的小程序功能单一,界面也不需要太花哨,采用Python自带的Tkinter是一种较为经济快捷的选择。

由于第一次写界面,代码质量可能有点差,实现效果也不怎么样,好在我们要做的东西功能简单,不会影响使用。(自我安慰。。。)

不废话,直接上代码。

from tkinter import Tk, Label, StringVar, Entry, Button, Frame, TOP

import main

root = Tk()

root.title(‘最佳喇叭计算 by kuangzl’)

root.geometry(‘420x280’)

root.resizable(width=False, height=False)

tip = Label(root, text=‘由波束宽度计算喇叭尺寸,

使得该尺寸下增益最大化’, height=3,

font=(‘Microsoft YaHei UI’, 12, ‘italic’))

tip.pack(side=TOP)

frm = Frame(root)

frm.pack()

Label(frm, text=‘中频(GHz):’).grid(row=0, column=0)

Label(frm, text=‘E面(deg):’).grid(row=1, column=0)

Label(frm, text=‘H面(deg):’).grid(row=2, column=0)

Label(frm, text=‘波导宽(mm):’).grid(row=0, column=2)

Label(frm, text=‘波导窄(mm):’).grid(row=1, column=2)

Label(frm, text=‘喇叭宽(mm):’).grid(row=2, column=2)

Label(frm, text=‘喇叭窄(mm):’).grid(row=3, column=2)

Label(frm, text=‘喇叭长(mm):’).grid(row=4, column=2)

def calc():

f = float(v1.get())

E = float(v2.get())

H = float(v3.get())

horn = main.Horn(f, E, H)

horn.para()

v4.set(horn.wg_a)

v5.set(horn.wg_b)

v6.set(horn.horn_a)

v7.set(horn.horn_b)

v8.set(horn.horn_l)

def hfss():

f = float(v1.get())

E = float(v2.get())

H = float(v3.get())

horn = main.Horn(f, E, H)

horn.para()

horn.realize_in_hfss()

v1 = StringVar()

Entry(frm, textvariable=v1, width=8).grid(row=0, column=1, padx=10, pady=5)

v2 = StringVar()

Entry(frm, textvariable=v2, width=8).grid(row=1, column=1, padx=10, pady=5)

v3 = StringVar()

Entry(frm, textvariable=v3, width=8).grid(row=2, column=1, padx=10, pady=5)

v4 = StringVar()

Label(frm, textvariable=v4, width=10).grid(row=0, column=3)

v5 = StringVar()

Label(frm, textvariable=v5, width=10).grid(row=1, column=3)

v6 = StringVar()

Label(frm, textvariable=v6, width=10).grid(row=2, column=3)

v7 = StringVar()

Label(frm, textvariable=v7, width=10).grid(row=3, column=3)

v8 = StringVar()

Label(frm, textvariable=v8, width=10).grid(row=4, column=3)

Button(frm, text=‘calc’, command=calc).grid(row=4, column=0)

Button(frm, text=‘hfss’, command=hfss).grid(row=4, column=1)

root.mainloop()

这段代码实现的效果是这样的:

小结

至此,该小程序已经完成了九成以上,作为自用已经毫无问题了!但如果还想将程序分享出来,则须打包成可执行文件(如exe),这一步貌似很简单,却有不少的坑,我将在下一节详细介绍。

本篇即到此为止,下一篇将会是终篇,谢谢各位观看(*^_^*)!

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    126

    文章

    7887

    浏览量

    142920
  • 代码
    +关注

    关注

    30

    文章

    4782

    浏览量

    68546
  • hfss
    +关注

    关注

    32

    文章

    167

    浏览量

    50299
  • GUI
    GUI
    +关注

    关注

    3

    文章

    660

    浏览量

    39662

原文标题:用Python实现喇叭天线设计小工具(四)

文章出处:【微信号:mwrfnet,微信公众号:微波射频网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    智慧光迅VOLT光模块介绍

    颠覆你对中小场景网络搭建的传统认知,感受到一丝丝来自全光网络的震撼。 01 产品介绍 VOLT光模块的外观相体型稍大于普通的SFP光模块,采用了标准的GPON协议,可以注册基于GPON协议的ONU或者光AP。为了应用各种复杂场景
    的头像 发表于 12-03 09:32 415次阅读
    智慧光迅VOLT光<b class='flag-5'>模块</b><b class='flag-5'>介绍</b>

    400G OSFP光模块全面解析与应用

    、高速传输的特点,已成为数据中心及高性能计算中心的核心通信组件。本文将详细介绍400G OSFP光模块的基本概念、协议分类、模块种类以及它在高性能计算中心中的应用,并结合实际数据进行分
    的头像 发表于 12-02 14:17 144次阅读
    400G OSFP光<b class='flag-5'>模块</b>的<b class='flag-5'>全面</b>解析与应用

    40G光模块介绍及常见问题探讨

    模块厂家提供40G光模块,应用于数据中心,云计算,高性能计算场景,广泛兼容华为,华三,思科,锐捷等光纤模块品牌,助您实现高速数据传输。本文介绍40G光
    的头像 发表于 11-25 11:56 202次阅读

    唯创知音SoundSticker V7.0 贺卡模块介绍

    模块
    WT-深圳唯创知音电子有限公司
    发布于 :2024年10月25日 17:36:28

    EtherCAT总线IO模块功能及安装介绍

    XD系列插片式远程IO模块,成套系统主要由耦合器、各种功能IO模块、电源辅助模块以及终端模块组成。有多种通讯协议总线的耦合器,例如PROFI
    的头像 发表于 07-14 09:14 788次阅读
    EtherCAT总线IO<b class='flag-5'>模块</b>功能及安装<b class='flag-5'>介绍</b>

    插片式远程 IO模块:热电阻温度采集模块与PLC配置案例

    XD系列成套系统主要由耦合器、各种功能I/O模块、电源辅助模块以及终端模块组成。有多种通讯协议总线的耦合器,例如Profinet、EtherCAT、Ethernet/IP、Cclink
    的头像 发表于 07-12 09:34 375次阅读
    插片式远程 IO<b class='flag-5'>模块</b>:热电阻温度采集<b class='flag-5'>模块</b>与PLC配置案例

    AC/DC电源模块的原理、特点以及其在实际应用中的重要性

    取出来,并将其转换为稳定的直流电源,供给各种不同功率需求的设备使用。本文将介绍AC/DC电源模块的原理、特点以及其在实际应用中的重要性。 AC/DC电源模块的原理、特点
    的头像 发表于 06-11 14:11 614次阅读
    AC/DC电源<b class='flag-5'>模块</b>的原理、特点<b class='flag-5'>以及</b>其在实际应用中的重要性

    常用的电源模块有哪些

    常用的电源模块有哪些 电源模块是电子设备中不可或缺的组成部分,它们将输入的电压转换为设备所需的电压,以保证设备的正常运行。本文将详细介绍常用的电源模块类型、特点
    的头像 发表于 06-10 16:28 1801次阅读

    蓝牙模块怎么使用?一篇全面指南!

    、基础知识 蓝牙模块是什么? 蓝牙模块是一种集成了蓝牙功能的电路板,它可以将数字信号转换为蓝牙信号进行传输。这种模块通常包括一个微控制器,以及用于发射和接收蓝牙信号的无线电频率(RF)
    的头像 发表于 05-29 13:53 2576次阅读

    什么是SFP光模块?如何选择SFP光模块

    本文介绍了SFP光模块的概述、技术原理、外观组成、选择方法、未来趋势及常见问答。SFP光模块是小型化、支持热插拔的光模块,用于光纤通信和数据传输。选择时需考虑传输速率、传输距离等因素。
    的头像 发表于 05-06 11:43 2106次阅读

    蓝牙双模音频模块支持串口AT指令控制介绍

    蓝牙音频模块支持串口AT指令控制介绍,这里推荐BT401蓝牙模块,功能简介如下: BT401模块是一款支持蓝牙、U盘、TF卡播放的5合1的解决方案。模组的亮点在支持无损音乐的播放,
    的头像 发表于 03-28 11:27 749次阅读
    蓝牙双模音频<b class='flag-5'>模块</b>支持串口AT指令控制<b class='flag-5'>介绍</b>

    DC电源模块的分类及特点介绍

    BOSHIDA DC电源模块的分类及特点介绍 DC电源模块是一种将交流电转换为直流电的设备,广泛应用于各种电子设备中。根据其特点和功能,DC电源模块可以分为线性稳压
    的头像 发表于 03-26 13:54 629次阅读
    DC电源<b class='flag-5'>模块</b>的分类及特点<b class='flag-5'>介绍</b>

    全面的光模块介绍

    模块是一种重要的光通信技术,主要负责将电信号转换为光信号或将光信号转换为电信号。它由光电子器件、功能电路和光接口等部分组成。光模块广泛应用于数据中心、基站、存储网络和5G网络等领域,具有传输速率高、传输距离远、抗干扰能力强等优点。
    的头像 发表于 03-25 10:33 2571次阅读

    为什么要进行光模块测试?光模块测试方案

    ,光模块的正确运行对于光通信系统的稳定性和可靠性至关重要。下面我将详细介绍为什么要进行光模块测试以及模块测试方案。 1. 确保光
    的头像 发表于 01-19 11:15 1389次阅读

    介绍四款远距离无线通信模块

    支持远距离无线通信模块包含LoRa模块和TurMass模块,两种模块均有着低功耗、穿透性强、抗干扰能力强、易于部署以及成本低等特点,在工业控
    的头像 发表于 01-15 10:04 4332次阅读
    <b class='flag-5'>介绍</b>四款远距离无线通信<b class='flag-5'>模块</b>