chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

跑馬燈是什么 如何用HFSS來跑馬燈

ExMh_zhishexues ? 來源:微波射頻網 ? 作者:94巨蟹座少年 ? 2021-08-13 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

學個Antenna是以天線仿真和調試為主,理論原理為輔的干貨天線技術專欄,包括天線入門知識以及各類天線的原理簡介、仿真軟件建模、設計、調試過程及思路。如有想看到的內容或技術問題,可以在文尾寫下留言。

摘要:

經過前面兩期的教學HFSS-API入門第一彈,第二彈,已經可以完成部分常規(guī)的建模需求。本期整點好玩的,用HFSS來跑馬燈。歡迎小伙伴們閱讀、分享、再看,轉發(fā)給更多有需要的人!喜歡的小伙伴可贊賞下作者哦。

本文使用的軟件為MATLAB2019a和AnsysEM 18.2

0 1簡單介紹

常規(guī)的跑馬燈,是指將多個發(fā)光二極管分別連接到單片機的某一并行端口處,通過編程控制這幾個發(fā)光二極管依次點亮。

在HFSS-API入門第一彈:畫個Box中對hfssBox函數的使用進行了詳細介紹,如果再加上修改Box的顏色的透明度,加上延時操作,就可以利用MATLAB編寫vbs腳本,在HFSS中Run Script實現“跑馬燈”效果。

0 2修改顏色和透明度函數

接下來先介紹修改物體顏色和透明度的函數:hfssSetColor,hfssSetTransparency。

% hfssSetColor(fid, ObjectName, Color)% ObjectName:需要修改顏色的物體對應的名字.% Color:RGB三色值.% 實例:% hfssSetColor(fid, ‘Box1’, [255, 255, 0]);

% hfssSetTransparency(fid, ObjectName, Value)% ObjectName:需要修改顏色的物體對應的名字.% Value:透明度值,在0到1之間;0代表完全不透明,1代表完全透明.% 實例:% hfssSetTransparency(fid,‘Box1’, 0)

這兩個函數的使用自然是很簡單。壓縮的GIF動圖預覽如下:

5700dbae-fbe4-11eb-9bcf-12bb97331649.gif

那么這個效果是如何實現的呢?

新建工程,新建設計文件,定義變量,畫Box,這四個常規(guī)步驟是很容易做到的,hfssSetColor和hfssSetTransparency這兩個函數也可以對物體的顏色和透明度進行二次修改。剩下需要做的就是在vbs中進行延時,以及控制鼠標左鍵在非模型區(qū)域點擊一下,使得物體不處于高亮狀態(tài),便于觀察變色效果。

首先需要解決的延時問題,網絡上隨手搜索關鍵詞vbs延時函數,可以找到wscript.sleep這個函數用法:

用法:Times為延遲時間(單位:毫秒)wscript.sleep Times

新建一個txt文件,將后綴改為vbs,然后用記事本打開復制粘貼下面代碼:

wscript.sleep 1000msgbox(“Hello”)wscript.sleep 1000msgbox(“This World!”)

單獨運行時正??捎玫?。

說明HFSS的vbs腳本中不支持該函數方法,聯想到單片機中的delay函數都是自己寫的,于是也在MATLAB里手擼了一個大概的延時函數:

% 延時函數的編寫fprintf(fid, ‘Sub delay(ms)

’);fprintf(fid, ‘ Dim i,value

’);fprintf(fid, ‘ for i=1 to 7500*ms

’);fprintf(fid, ‘ value=i+1

’);fprintf(fid, ‘ next

’);fprintf(fid, ‘End Sub

’);

然后我們需要解決vbs腳本中控制鼠標左鍵點擊的需求,這里也是一樣百度關鍵詞vbs模擬鼠標按鍵,找到下面的網站:

https://www.cnblogs.com/jinjiangongzuoshi/p/3821375.html

經過拆解分析后,轉化為自己可使用的封裝代碼。

Class SetMouseprivate Sprivate xls, wbk, module1private reg_key, xls_code, x, yPrivate Sub Class_Initialize() Set xls = CreateObject(“Excel.Application”) Set S = CreateObject(“wscript.Shell”) reg_key = “HKEY_CURRENT_USER\Software\Microsoft\Office\$\Excel\Security\AccessVBOM” reg_key = Replace(reg_key, “$”, xls.Version) S.RegWrite reg_key, 1, “REG_DWORD” xls_code = _ “Private Type POINTAPI : X As Long : Y As Long : End Type” & vbCrLf & _ “Private Declare Function SetCursorPos Lib ”“user32”“ (ByVal x As Long, ByVal y As Long) As Long” & vbCrLf & _ “Private Declare Function GetCursorPos Lib ”“user32”“ (lpPoint As POINTAPI) As Long” & vbCrLf & _ “Private Declare Sub mouse_event Lib ”“user32”“ Alias ”“mouse_event”“ ” _ & “(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)” & vbCrLf & _ “Public Function getx() As Long” & vbCrLf & _ “Dim pt As POINTAPI : GetCursorPos pt : getx = pt.X” & vbCrLf & _ “End Function” & vbCrLf & _ “Public Function gety() As Long” & vbCrLf & _ “Dim pt As POINTAPI: GetCursorPos pt : gety = pt.Y” & vbCrLf & _ “End Function” Set wbk = xls.Workbooks.Add Set module1 = wbk.VBProject.VBComponents.Add(1) module1.CodeModule.AddFromString xls_codeEnd SubPrivate Sub Class_Terminate xls.DisplayAlerts = False wbk.Close xls.QuitEnd SubPublic Sub getpos( x, y) x = xls.Run(“getx”) y = xls.Run(“gety”)End SubPublic Sub move(x,y) xls.Run “SetCursorPos”, x, yEnd SubPublic Sub clik(keydown) Select Case UCase(keydown) Case “LEFT” xls.Run “mouse_event”, &H2 + &H4, 0, 0, 0, 0 Case “RIGHT” xls.Run “mouse_event”, &H8 + &H10, 0, 0, 0, 0 Case “MIDDLE” xls.Run “mouse_event”, &H20 + &H40, 0, 0, 0, 0 Case “DBCLICK” xls.Run “mouse_event”, &H2 + &H4, 0, 0, 0, 0 xls.Run “mouse_event”, &H2 + &H4, 0, 0, 0, 0 End SelectEnd SubEnd Class

由于這段代碼過長,直接在MATLAB中用fprintf寫入到vbs腳本得一行一行處理,于是將其單獨復制到一個mouse_control.txt文件里,通過MATLAB的讀寫文件操作,將這段代碼追加寫入到vbs腳本文末,作為可調用的函數進程。

上面代碼第8行之所以是雙斜杠,是為了將單斜杠寫入到vbs腳本中。

reg_key = “HKEY_CURRENT_USER\Software\Microsoft\Office\$\Excel\Security\AccessVBOM”

有了上面的代碼后,鼠標點的移動和左鍵點擊事件可以在MATLAB中寫入:

fprintf(fid, ‘Set mouse=New SetMouse

’);fprintf(fid, ‘% move后面是電腦鼠標需要移動的坐標點,通過mousexy確定坐標點fprintf(fid, ’mouse.move 1678,575

‘);fprintf(fid, ’delay(500)

‘);fprintf(fid, ’mouse.clik “dbclick”

‘);fprintf(fid, ’delay(500)

‘);fprintf(fid, ’

‘);

用MATLAB進行整體的vbs腳本寫入,整段代碼如下所示,可在文末下載鏈接下載。

clear;clc;path = mfilename(’fullpath‘);i=strfind(path,’‘);path=path(1:i(end));cd(path);addpath(genpath(strcat(path,’hfssapi-by-Jianhui Huang‘)));try % 填寫路徑 % tmpPrjFile:生成的aedt或者hfss(安裝hfss15以下的后綴名為.hfss)項目文件的路徑名 % tmpScriptFile:生成的vbs腳本文件的路徑名 tmpPrjFile = ’F:vbsScripthorse_race_lamp.aedt‘; tmpScriptFile = ’F:vbsScriptauto_code.vbs‘;

% hfssExePath:HFSS軟件的路徑 hfssExePath = ’D:softwareHFSS15AnsysEM18.2Win64ansysedt.exe‘;

% 創(chuàng)建一個可讀寫vbs腳本文件。 fid = fopen(tmpScriptFile, ’wt‘);

%創(chuàng)建一個新的HFSS項目并插入一個新的設計文件。 hfssNewProject(fid); Design_name=’example‘; hfssInsertDesign(fid, Design_name); Box_W=1;Box_L=1;Box_H=1; % hfssVariableInsert(fid,DesignName,variableName, value, units,flag) hfssVariableInsert(fid,Design_name,’Box_W‘, Box_W, ’mm‘,1); hfssVariableInsert(fid,Design_name,’Box_L‘, Box_L, ’mm‘,1); hfssVariableInsert(fid,Design_name,’Box_H‘, Box_H, ’mm‘,1); % 畫Box % hfssBox(fid, BoxName, Start, Size, Units, Color, Material, Transparency, flag) hfssBox(fid, ’Box1‘, {’-Box_W/2‘, ’-Box_L/2‘, ’0mm‘}, {’Box_W‘, ’Box_L‘, ’Box_H‘}, ’mm‘,。。。 “(0 128 128)”, “Rogers RO4350 (tm)”, 0, 2); % 點擊鼠標左鍵 fprintf(fid, ’

‘); fprintf(fid, ’Set mouse=New SetMouse

‘); fprintf(fid, ’mouse.getpos x,y

‘); fprintf(fid, ’mouse.move 1678,575

‘); fprintf(fid, ’delay(500)

‘); fprintf(fid, ’mouse.clik “dbclick”

‘); fprintf(fid, ’delay(500)

‘); fprintf(fid, ’

‘); % 跑馬燈 for num=0:20 hfssSetColor(fid, ’Box1‘, [randi(255,1), randi(255,1), randi(255,1)]); fprintf(fid, ’delay(100)

‘); end % 保存項目文件到指定路徑 hfssSaveProject(fid, tmpPrjFile,1); % 延時函數的編寫 fprintf(fid, ’Sub delay(ms)

‘); fprintf(fid, ’ Dim i,value

‘); fprintf(fid, ’ for i=1 to 7500*ms

‘); fprintf(fid, ’ value=i+1

‘); fprintf(fid, ’ next

‘); fprintf(fid, ’End Sub

‘); % 鼠標控制 fid1=fopen(’mouse_control.txt‘); %打開文本文件 INDEX=0; while ~feof(fid1) strdata = fgetl(fid1); % 讀取一行, strdata是字符串 fprintf(fid, strdata); fprintf(fid, ’

‘); end fclose(fid1); % Close the HFSS Script File. fclose(fid); disp(’vbs腳本已生成!‘);catch disp(’程序出現異常!‘); fclose(fid);end

按個人情況按圖索驥地修改tmpPrjFile,tmpScriptFile ,hfssExePath這幾個路徑和Design_name,使用的時候記得將mouse_control.txt和該vbs_horse_race_lamp.m文件單獨拎出來,與hfssapi-by-Jianhui Huang放在同一個總文件夾內。點擊運行即可生成vbs腳本(在自行賦值的tmpScriptFile的這個路徑下)。vbs腳本可以直接點擊運行,或者在HFSS軟件中Run Script。

基礎性地寫代碼編注釋還是挺費時間和精力的,希望大家多點贊分享。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 仿真
    +關注

    關注

    54

    文章

    4451

    瀏覽量

    137908
  • API
    API
    +關注

    關注

    2

    文章

    2280

    瀏覽量

    66530
  • 函數
    +關注

    關注

    3

    文章

    4413

    瀏覽量

    67201
  • hfss
    +關注

    關注

    32

    文章

    168

    瀏覽量

    51606
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【「玩轉高速電路:基于ANSYS HFSS的無源仿真實例」閱讀體驗】+基礎篇

    ANSYS HFSS是一種高速電路的仿真軟件,說實話,以前沒使用過,正好趁此機會來學習下。 首先來看看高速信號的基礎知識。 一、信號完整性 信號完整性是研究信號在傳輸路徑中如何保持原始特性的能力,以
    發(fā)表于 01-16 13:12

    HFSS仿真鈮酸鋰電光調制器T型電極損耗較大

    HFSS仿真鈮酸鋰電光調制器T型電極時,盡管電極設為了完美電導體,介質的介質損耗角正切設為0,dB(S21)仍然有比較大的損耗,導致用ABCD矩陣計算時損耗較大,這是什么原因引起的,如何解決?
    發(fā)表于 12-16 14:36

    【瑞薩RA6E2】驅動 WS2812 實現 RGB 跑馬燈效果

    , BSP_IO_LEVEL_LOW); R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MICROSECONDS); } 實現跑馬燈效果的邏輯:定義顏色數組存儲 GRB 格式的紅
    發(fā)表于 11-25 01:55

    【書籍評測活動NO.66】玩轉高速電路:基于ANSYS HFSS的無源仿真實例

    HFSS的無源仿真實例」閱讀體驗】+自擬標題 注意事項 1、活動期間如有作弊、灌水等違反電子發(fā)燒友論壇規(guī)則的行為一經發(fā)現將立即取消獲獎資格 2、活動結束后獲獎名單將在論壇公示請活動參與者盡量
    發(fā)表于 11-06 14:19

    【RA4M2-SENSOR】 Keil開發(fā)環(huán)境建立和跑馬燈運行

    ... pter6/chapter6.html 因為此開發(fā)板有IC CH340C 進行UART通信,建議用SWD接口和USB 轉TTL下載器進行編程下載。 3.在keil中編程跑馬燈程序。 先在
    發(fā)表于 09-11 07:53

    何用電容式的片式 CHIP LAN 網絡變壓器(電感)替代消費級傳統網絡變壓器,電氣原理圖是怎樣的?

    Hqst石門盈盛(華強盛)電子導讀:如何用電容式的片式 CHIP LAN 網絡變壓器(電感)替代消費級傳統網絡變壓器,電氣原理圖是怎樣的?這節(jié)將和大家一起做探討.....
    的頭像 發(fā)表于 07-13 11:01 ?1637次閱讀
    如<b class='flag-5'>何用</b>電容式的片式 CHIP LAN 網絡變壓器(電感)<b class='flag-5'>來</b>替代消費級傳統網絡變壓器,電氣原理圖是怎樣的?

    運用笙泉評估板(EVB),高效開發(fā)M0應用產品

    ,搭配UI軟體工具燒錄或仿真。1、J1連接PC,燒錄RGB_LED跑馬燈程序 每一片EVB,出廠都帶有程序,上電可以運行。 2、J1連接PC,可以在Keil直接仿真。 三、笙泉M0系列EVB
    發(fā)表于 06-24 11:16

    【RA4L1-SENSOR】+ RA4L1-SENSOR開發(fā)版之點燈實現流水燈跑馬燈

    打開RA4L1的原理圖,上面有3個LED燈 分別是 P601-- LED3 P610-- LED2 P609-- LED1 任何人都知道,這3燈都是高電平 “1”點亮 “0”熄滅,不解釋 打開瑞薩的SMART配置軟件進行IO配置 3燈配置完成 點擊生成代碼 默認我配置為熄滅 KEIL里面也顯示smart生成軟件生效了 修改LED功能代碼 添加LED文件 4。添加LED頭文件 根據原理圖引腳配置宏 5。實現LED1LED2LED3功能函數 #include \"led.h\" /*函數說明:led1閃爍 *傳入參數:無 *返回參數:無 */ void led_1_flicker(void) { LED1_lighting_up; R_BSP_SoftwareDelay(500,BSP_DELAY_UNITS_MILLISECONDS); LED1_lighting_off; R_BSP_SoftwareDelay(500,BSP_DELAY_UNITS_MILLISECONDS); } /*函數說明:led2閃爍 *傳入參數:無 *返回參數:無 */ void led_2_flicker(void) { LED2_lighting_up; R_BSP_SoftwareDelay(500,BSP_DELAY_UNITS_MILLISECONDS); LED2_lighting_off; R_BSP_SoftwareDelay(500,BSP_DELAY_UNITS_MILLISECONDS); } /*函數說明:led3閃爍 *傳入參數:無 *返回參數:無 */ void led_3_flicker(void) { LED3_lighting_up; R_BSP_SoftwareDelay(500,BSP_DELAY_UNITS_MILLISECONDS); LED3_lighting_off; R_BSP_SoftwareDelay(500,BSP_DELAY_UNITS_MILLISECONDS); } #ifndef __led_H #define __led_H #include \"hal_data.h\" /*********參數宏定義*********/ #define LED1 BSP_IO_PORT_06_PIN_09 #define LED2 BSP_IO_PORT_06_PIN_10 #define LED3 BSP_IO_PORT_06_PIN_01 /*********函數宏定義*********/ #define LED1_lighting_off R_IOPORT_PinWrite(&g_ioport_ctrl,LED1,BSP_IO_LEVEL_LOW) #define LED1_lighting_upR_IOPORT_PinWrite(&g_ioport_ctrl,LED1,BSP_IO_LEVEL_HIGH) #define LED2_lighting_off R_IOPORT_PinWrite(&g_ioport_ctrl,LED2,BSP_IO_LEVEL_LOW) #define LED2_lighting_upR_IOPORT_PinWrite(&g_ioport_ctrl,LED2,BSP_IO_LEVEL_HIGH) #define LED3_lighting_off R_IOPORT_PinWrite(&g_ioport_ctrl,LED3,BSP_IO_LEVEL_LOW) #define LED3_lighting_upR_IOPORT_PinWrite(&g_ioport_ctrl,LED3,BSP_IO_LEVEL_HIGH) /*********函數聲明*********/ void led_1_flicker(void); void led_2_flicker(void); void led_3_flicker(void); #endif 主函數中添加功能 #include \"hal_data.h\" #include \"usart9.h\" #include \"RTT.h\" #include \"led.h\" FSP_CPP_HEADER void R_BSP_WarmStart(bsp_warm_start_event_t event); FSP_CPP_FOOTER /*******************************************************************************************************************//** main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.This function is called by main() when no RTOS is used. *********************************************************************************************************************/ void hal_entry(void) { / TODO: add your own code here */ UART9_Init(); //printf(\"\\\\r\\\\n歡迎來到瑞薩電子\\\\r\\\\n\"); //printf(\"很高興試用RA4L1開發(fā)板********\\\\r\\\\n\"); //printf(\"串口輸出打印 波特率115200\\\\r\\\\n\\\\r\\\\n\"); print(\"\\\\r\\\\nwelcome to renesas\\\\r\\\\n\"); print(\"USART output RA4L1 test\\\\r\\\\n\"); print(\"\\\\r\\\\n\"); while(1) { //printf(\"RA4L1 Sensor開發(fā)板\\\\r\\\\n\"); //print(\"RA4L1 Sensor develop board\\\\r\\\\n\"); led_1_flicker(); led_2_flicker(); led_3_flicker(); //R_BSP_SoftwareDelay(300, BSP_DELAY_UNITS_MILLISECONDS); } #if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter(); #endif } /*******************************************************************************************************************//** This function is called at various points during the startup process.This implementation uses the event that is called right before main() to set up the pins. @param[in]event Where at in the start up process the code is currently at **********************************************************************************************************************/ void R_BSP_WarmStart (bsp_warm_start_event_t event) { if (BSP_WARM_START_RESET == event) { #if BSP_FEATURE_FLASH_LP_VERSION != 0 /* Enable reading from data flash. */ R_FACI_LP->DFLCTL = 1U; /* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and * C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */ #endif } if (BSP_WARM_START_POST_C == event) { /* C runtime environment and system clocks are setup. */ /* Configure pins. */ R_IOPORT_Open(&IOPORT_CFG_CTRL, &IOPORT_CFG_NAME); #if BSP_CFG_SDRAM_ENABLED /* Setup SDRAM and initialize it. Must configure pins first. */ R_BSP_SdramInit(true); #endif } } #if BSP_TZ_SECURE_BUILD FSP_CPP_HEADER BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable (); /* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */ BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable () { } FSP_CPP_FOOTER #endif 編譯,燒錄板子,可以看到LED1 LED2 LED3每隔500ms翻轉 詳情看視頻?。。。。?!
    發(fā)表于 06-09 09:25

    【RA-Eco-RA4M2開發(fā)板評測】點燈實現6種LED花式流水燈操作

    很高興收到瑞薩電子提供的RA4M2開發(fā)板,這次帖子就專門用來說說專業(yè)點燈操作,實現各種花式的流水燈,可以十分方便地控制LED的各種狀態(tài),甚至多個LED組合控制,如跑馬燈等。 打開原理圖,可以看到3個
    發(fā)表于 04-28 21:28

    何用c#使用ST25R3911DISCOComm.dll讀取和寫入NDEF區(qū)的數據?

    何用c#使用ST25R3911DISCOComm.dll讀取和寫入NDEF區(qū)的數據,需要相關例程,感謝各位大佬拯救一下我?。?????
    發(fā)表于 04-23 06:58

    LED顯示屏控制卡,高度24如何適配32高度的文本內容?

    客戶的后臺程序只能設置16或者32的高度,即1632或者3232,但是現場安裝的是832的模組,安裝了三塊高度是24。 為了實現最理想的顯示效果,如果在2432點的模組上接收顯示32*32的內容? 顯示屏是單色的紅色滾動跑馬屏,使用的控制卡是深圳流明電子的控制卡
    發(fā)表于 04-14 11:05

    何用幾條命令搞定Ubuntu系統的網絡配置

    在某些場景下,設備沒有顯示器或屏可以用,這時候通過命令行設置網絡就變得特別重要了。本文將介紹如何用幾條命令搞定Ubuntu系統的網絡配置。
    的頭像 發(fā)表于 03-14 10:53 ?3444次閱讀
    如<b class='flag-5'>何用</b>幾條命令搞定Ubuntu系統的網絡配置

    何用c#使用ST25R3911DISCOComm.dll讀取和寫入NDEF區(qū)的數據?

    何用c#使用ST25R3911DISCOComm.dll讀取和寫入NDEF區(qū)的數據,需要相關例程,感謝各位大佬拯救一下我啊?。????
    發(fā)表于 03-13 06:51

    HFSS 自動化建模工具

    因工作需求,自己寫的HFSS參數自動化建模工具,目前只實現了常用的四種模型,可定制化,如需可聯系 qq:1300038043 附件下載鏈接:https://pan.baidu.com/s/1TVeTTFiJw-pxSyT1AT8IQA 提取碼: kxup
    發(fā)表于 02-27 17:44

    零知開源——玩轉WS2812B燈條模塊

    關閉到開啟不同顏色以及跑馬燈、呼吸燈和彩虹燈等效果。 ?一、工具原料 電腦、Windows系統 零知開發(fā)板 Micro-usb線 WS2812RGB燈 二、硬件連接 零知標準開發(fā)板 WS2812B
    的頭像 發(fā)表于 02-19 15:09 ?2843次閱讀
    零知開源——玩轉WS2812B燈條模塊