精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    7793

    瀏覽量

    142738
  • 代碼
    +關注

    關注

    30

    文章

    4752

    瀏覽量

    68362
  • hfss
    +關注

    關注

    32

    文章

    167

    瀏覽量

    50258
  • GUI
    GUI
    +關注

    關注

    3

    文章

    650

    瀏覽量

    39551

原文標題:用Python實現喇叭天線設計小工具(四)

文章出處:【微信號:mwrfnet,微信公眾號:微波射頻網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    40G光模塊介紹及常見問題探討

    模塊廠家提供40G光模塊,應用于數據中心,云計算,高性能計算場景,廣泛兼容華為,華三,思科,銳捷等光纖模塊品牌,助您實現高速數據傳輸。本文介紹40G光
    的頭像 發表于 11-25 11:56 ?96次閱讀

    唯創知音SoundSticker V7.0 賀卡模塊介紹

    模塊
    WT-深圳唯創知音電子有限公司
    發布于 :2024年10月25日 17:36:28

    EtherCAT總線IO模塊功能及安裝介紹

    XD系列插片式遠程IO模塊,成套系統主要由耦合器、各種功能IO模塊、電源輔助模塊以及終端模塊組成。有多種通訊協議總線的耦合器,例如PROFI
    的頭像 發表于 07-14 09:14 ?737次閱讀
    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 ?333次閱讀
    插片式遠程 IO<b class='flag-5'>模塊</b>:熱電阻溫度采集<b class='flag-5'>模塊</b>與PLC配置案例

    如何選擇合適的電源模塊?你了解電源模塊可靠性測試嗎?

    模塊式結構的優點甚多,因此模塊電源廣泛用于交換設備、接入設備、移動通訊、微波通訊等領域。為增進大家對電源模塊的認識,本文將對電源模塊的選擇以及
    的頭像 發表于 07-04 18:19 ?847次閱讀
    如何選擇合適的電源<b class='flag-5'>模塊</b>?你了解電源<b class='flag-5'>模塊</b>可靠性測試嗎?

    AC/DC電源模塊的原理、特點以及其在實際應用中的重要性

    取出來,并將其轉換為穩定的直流電源,供給各種不同功率需求的設備使用。本文將介紹AC/DC電源模塊的原理、特點以及其在實際應用中的重要性。 AC/DC電源模塊的原理、特點
    的頭像 發表于 06-11 14:11 ?520次閱讀
    AC/DC電源<b class='flag-5'>模塊</b>的原理、特點<b class='flag-5'>以及</b>其在實際應用中的重要性

    常用的電源模塊有哪些

    常用的電源模塊有哪些 電源模塊是電子設備中不可或缺的組成部分,它們將輸入的電壓轉換為設備所需的電壓,以保證設備的正常運行。本文將詳細介紹常用的電源模塊類型、特點
    的頭像 發表于 06-10 16:28 ?1626次閱讀

    藍牙模塊怎么使用?一篇全面指南!

    、基礎知識 藍牙模塊是什么? 藍牙模塊是一種集成了藍牙功能的電路板,它可以將數字信號轉換為藍牙信號進行傳輸。這種模塊通常包括一個微控制器,以及用于發射和接收藍牙信號的無線電頻率(RF)
    的頭像 發表于 05-29 13:53 ?2261次閱讀

    什么是SFP光模塊?如何選擇SFP光模塊

    本文介紹了SFP光模塊的概述、技術原理、外觀組成、選擇方法、未來趨勢及常見問答。SFP光模塊是小型化、支持熱插拔的光模塊,用于光纖通信和數據傳輸。選擇時需考慮傳輸速率、傳輸距離等因素。
    的頭像 發表于 05-06 11:43 ?1879次閱讀

    藍牙雙模音頻模塊支持串口AT指令控制介紹

    藍牙音頻模塊支持串口AT指令控制介紹,這里推薦BT401藍牙模塊,功能簡介如下: BT401模塊是一款支持藍牙、U盤、TF卡播放的5合1的解決方案。模組的亮點在支持無損音樂的播放,
    的頭像 發表于 03-28 11:27 ?696次閱讀
    藍牙雙模音頻<b class='flag-5'>模塊</b>支持串口AT指令控制<b class='flag-5'>介紹</b>

    DC電源模塊的分類及特點介紹

    BOSHIDA DC電源模塊的分類及特點介紹 DC電源模塊是一種將交流電轉換為直流電的設備,廣泛應用于各種電子設備中。根據其特點和功能,DC電源模塊可以分為線性穩壓
    的頭像 發表于 03-26 13:54 ?599次閱讀
    DC電源<b class='flag-5'>模塊</b>的分類及特點<b class='flag-5'>介紹</b>

    全面的光模塊介紹

    模塊是一種重要的光通信技術,主要負責將電信號轉換為光信號或將光信號轉換為電信號。它由光電子器件、功能電路和光接口等部分組成。光模塊廣泛應用于數據中心、基站、存儲網絡和5G網絡等領域,具有傳輸速率高、傳輸距離遠、抗干擾能力強等優點。
    的頭像 發表于 03-25 10:33 ?2496次閱讀

    為什么要進行光模塊測試?光模塊測試方案

    ,光模塊的正確運行對于光通信系統的穩定性和可靠性至關重要。下面我將詳細介紹為什么要進行光模塊測試以及模塊測試方案。 1. 確保光
    的頭像 發表于 01-19 11:15 ?1272次閱讀

    介紹四款遠距離無線通信模塊

    支持遠距離無線通信模塊包含LoRa模塊和TurMass模塊,兩種模塊均有著低功耗、穿透性強、抗干擾能力強、易于部署以及成本低等特點,在工業控
    的頭像 發表于 01-15 10:04 ?4077次閱讀
    <b class='flag-5'>介紹</b>四款遠距離無線通信<b class='flag-5'>模塊</b>

    MCAL的CAN模塊配置介紹

    大家好,我是嵌入式老林,從事嵌入式軟件開發多年,今天分享的內容是MCAL的CAN模塊配置介紹,希望能對你有所幫助
    的頭像 發表于 12-12 15:31 ?4724次閱讀
    MCAL的CAN<b class='flag-5'>模塊</b>配置<b class='flag-5'>介紹</b>