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

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將Python GUI程序打包成EXE可執(zhí)行文件

Geehy極海半導(dǎo)體 ? 來(lái)源:21ic論壇極海半導(dǎo)體專區(qū) ? 2025-12-16 09:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

《APM32芯得》系列內(nèi)容為用戶使用APM32系列產(chǎn)品的經(jīng)驗(yàn)總結(jié),均轉(zhuǎn)載自21ic論壇極海半導(dǎo)體專區(qū),全文未作任何修改,未經(jīng)原文作者授權(quán)禁止轉(zhuǎn)載。

1. 為什么要做GUI與打包EXE

更友好、更直觀

如果我們給同事展示一個(gè)命令行,他們可能會(huì)有點(diǎn)“嚇人”的感覺(jué),擔(dān)心忘記或輸錯(cuò)參數(shù)。而一個(gè) UI 界面則是一目了然,“選擇固件→點(diǎn)擊下載”這樣的流程幾乎零學(xué)習(xí)成本。

無(wú)需安裝Python

經(jīng)常在產(chǎn)線或測(cè)試環(huán)境中,電腦系統(tǒng)可能很久不會(huì)升級(jí),也沒(méi)有裝Python。要想讓他們?nèi)パbPython+庫(kù)依賴,就比較麻煩。而如果能打包成EXE,所有Python解釋器、第三方模塊都內(nèi)置其中,對(duì)外只需要雙擊文件即可啟動(dòng)GUI。一旦配置好,就可以在任何Windows機(jī)器上復(fù)用。

可延伸的封裝思路

有了GUI后,我們還可以更進(jìn)一步添加“固件版本管理”“設(shè)備自動(dòng)識(shí)別”“燒寫(xiě)統(tǒng)計(jì)”等功能,把它變成一個(gè)靈活的產(chǎn)線工具。

2. 實(shí)現(xiàn)GUI的思路與技術(shù)選型

在Python里做GUI并不復(fù)雜,一般常見(jiàn)選項(xiàng)是

Tkinter(Python 標(biāo)準(zhǔn)庫(kù)自帶,輕量基礎(chǔ))

PyQt/PySide(功能強(qiáng)大,界面美觀,但相對(duì)體量大)

wxPython、Kivy等其他選項(xiàng)

對(duì)于“簡(jiǎn)單的產(chǎn)線燒寫(xiě)工具”來(lái)說(shuō),Tkinter足夠勝任,所以本篇使用Tkinter 作演示。

3. 設(shè)計(jì)功能需求:“又簡(jiǎn)單又夠用” 為了在界面上實(shí)現(xiàn)基本的燒寫(xiě)操作,我們梳理了下面幾項(xiàng)功能:

1. 選擇自定義腳本:用戶可以選擇自定義腳本,因?yàn)镚32R501核心DCS功能需要特定的腳本進(jìn)行KEY寫(xiě)入,這個(gè)我們需要關(guān)注。

2.選擇固件:用戶能通過(guò)文件對(duì)話框,選擇.hex或.bin格式固件。

3.擦除操作:一鍵擦除Flash,讓G32R501的存儲(chǔ)空間干凈如新。

4.下載操作:把選定的固件文件下載到目標(biāo)芯片中,并可通過(guò)進(jìn)度提示或成功/失敗信息告訴用戶結(jié)果。

5.仿真器識(shí)別:如果電腦插著多個(gè)調(diào)試器或多個(gè)板子,可以列出來(lái)讓用戶選。

4. 代碼層級(jí):分文件設(shè)計(jì)

以下是示例代碼,思路供參考。我們可以根據(jù)項(xiàng)目規(guī)?;騻€(gè)人習(xí)慣決定是否拆分成多個(gè).py文件。這里分拆成若干功能模塊,好處是層次更清晰,也便于后續(xù)維護(hù)。

4.1 文件結(jié)構(gòu)概覽 假設(shè)我們有個(gè)目錄PyOCDDownloadToolGUI,內(nèi)部結(jié)構(gòu)大概是:

PyOCDDownloadToolGUI/

├─ main.py # 程序入口 - 啟動(dòng)GUI、Tkinter界面邏輯

├─ download_operation.py # 下載功能

├─ erase_operation.py # 擦除功能

├─ file_selector.py # 打開(kāi)文件對(duì)話框

├─ get_debuggers.py # 獲取當(dāng)前CMSIS-DAP設(shè)備列表

└─ get_supported_targets.py # 獲取當(dāng)前pyocd支持芯片列表

4.2 核心代碼演示

下面我們聚焦主要內(nèi)容,展現(xiàn)部分代碼,以下兩段代碼演示了如何調(diào)用 pyocd 的命令行。

4.2.1 erase_operation.py(擦除功能)

"""

實(shí)現(xiàn)對(duì)目標(biāo)芯片的全擦除函數(shù)erase_chip()。

若用戶勾選了自定義腳本路徑,則在命令行中附加 --script=<腳本路徑>。

"""

import subprocess

import sys

def erase_chip(target_name, user_script=None):

"""

Perform chip erase using pyOCD command.

- target_name: e.g. 'g32r501dxx'

- user_script: path to user script, or None if not used

Return the command output for logging or error info.

"""

cmd = ["pyocd", "erase", "--chip", "--target", target_name]

if user_script:

cmd.append(f"--script={user_script}")

try:

if sys.platform.startswith("win"):

# Windows專用

si = subprocess.STARTUPINFO()

si.dwFlags |= subprocess.STARTF_USESHOWWINDOW

si.wShowWindow = 0 # 0 對(duì)應(yīng) SW_HIDE

result = subprocess.run(

cmd,

startupinfo=si,

capture_output=True,

text=True,

check=False

)

else:

result = subprocess.run(

cmd,

capture_output=True,

text=True,

check=False

)

return result.stdout + result.stderr

except Exception as e:

return f"Error executing erase_chip: {e}"

4.2.2 download_operation.py (下載功能)

"""

實(shí)現(xiàn)下載固件函數(shù) download_firmware(),

針對(duì) .bin 文件可附加 --format bin 和 --base-address 參數(shù);

針對(duì) .hex 文件則直接 pyocd load -t 。

"""

import subprocess

import sys

def download_firmware(target_name, file_path, file_type, user_script=None, base_address=None):

"""

Download firmware to target chip using 'pyocd load'.

- target_name: e.g. 'g32r501dxx'

- file_path: absolute path of the firmware

- file_type: 'bin' or 'hex'

- user_script: if not None, specify '--script=xxx'

- base_address: for .bin format, required if user wants to specify

Return the command output for logging.

"""

cmd = ["pyocd", "load", "-t", target_name]

# If user_script is specified

if user_script:

cmd.append(f"--script={user_script}")

# If it's bin, add extra options

if file_type == "bin":

cmd.extend(["--format", "bin"])

# If user provided base address

if base_address is not None:

cmd.extend(["--base-address", str(base_address)])

# Finally, add the firmware file path

cmd.append(file_path)

try:

if sys.platform.startswith("win"):

# Windows專用

si = subprocess.STARTUPINFO()

si.dwFlags |= subprocess.STARTF_USESHOWWINDOW

si.wShowWindow = 0 # 0 對(duì)應(yīng) SW_HIDE

result = subprocess.run(

cmd,

startupinfo=si,

capture_output=True,

text=True,

check=False

)

else:

result = subprocess.run(

cmd,

capture_output=True,

text=True,

check=False

)

return result.stdout + result.stderr

except Exception as e:

return f"Error executing download_firmware: {e}"

最終啟動(dòng)效果:

183fb958-d1c3-11f0-8c8f-92fbcf53809c.png

5. 打包成EXE:PyInstaller“一鍵搞定”

這是本篇文章最重要的部分:如何把這個(gè)GUI打包成一個(gè)單獨(dú)可執(zhí)行文件。

5.1 為什么選用PyInstaller

使用簡(jiǎn)單:只需寫(xiě)一個(gè)spec文件,或者直接pyinstaller xxx.py就能包裝出dist文件夾。

依賴收集:它會(huì)自動(dòng)收集.py文件、第三方依賴、.dll文件等,打包到一起。

常規(guī)方案:是Python社區(qū)里最常見(jiàn)、成熟度高的打包工具之一。

5.2 PyInstaller打包步驟

(1) 命令行打包GUI

只需在命令行(在main.py同級(jí)目錄下啟動(dòng))中執(zhí)行以下命令:

pyinstaller --onefile --noconsole --name PyOCDDownloadToolGUI main.py

命令解釋:

--onefile:生成一個(gè)單文件 EXE,啟動(dòng)時(shí)會(huì)自解壓到臨時(shí)目錄里。

--noconsole:不彈出額外的命令行窗口,讓界面更干凈;如果想看調(diào)試信息,可以去掉此參數(shù)。

--name PyOCDDownloadToolGUI:指定生成的 EXE 文件名;如省略則默認(rèn)與腳本同名。

main.py:我們的 GUI 入口腳本。

執(zhí)行完該命令后,PyInstaller 會(huì)在當(dāng)前目錄下生成一個(gè) dist 文件夾,里面就有 PyOCDDownloadToolGUI.exe。

(2) 打包 PyOCD 本身

PyOCD也帶有pyocd.exe命令行工具。如果我們把它也打包到和PyOCDDownloadToolGUI.exe同一目錄,下次就可以不再額外安裝pyocd或python。

打包方法如下:

1. 從GitHub(https://codeload.github.com/pyocd/pyOCD/zip/refs/tags/v0.37.0)下載pyOCD的源碼壓縮包 (例如v0.37.0)。

2. 解壓后,在根目錄找到pyocd.py和pyocd.spec文件。

3. 將這兩個(gè)文件復(fù)制到我們已經(jīng)完成了G32R501適配工作的本地pyocd所在目錄的父目錄里(注意:這個(gè)目錄與pyocd同級(jí),而不是放到它的子目錄下)。比如默認(rèn)Python的site-packages路徑:

C:Users<用戶名>AppDataLocalProgramsPythonPython312Libsite-packagespyocd

4. 在存放pyocd.spec的目錄啟動(dòng)cmd,輸入命令:

pyinstaller pyocd.spec

5. 打包完成后,會(huì)在dist文件夾下生成一個(gè)針對(duì)pyocd的可執(zhí)行文件及其相關(guān)資源。

6. 運(yùn)行與演示

當(dāng)我們完成打包后,distPyOCDDownloadToolGUI下會(huì)出現(xiàn)PyOCDDownloadToolGUI.exe。

把這整個(gè)文件夾 + 我們打包好的pyocd.exe文件夾,拷貝到一臺(tái)沒(méi)有Python的Windows 電腦上,插上G32R501開(kāi)發(fā)板 + 調(diào)試器,直接雙擊 PyOCDDownloadToolGUI.exe,理論上就能彈出我們的燒寫(xiě)GUI。

試著點(diǎn)擊“Download/Erase/Verify”按鈕,即可正常工作。

注:文章作者在原帖中提供了代碼文件,有需要請(qǐng)至原文21ic論壇

原文地址:https://bbs.21ic.com/icview-3467862-1-1.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 燒寫(xiě)
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    14820
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    694

    瀏覽量

    42904
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4860

    瀏覽量

    89647

原文標(biāo)題:APM32芯得 EP.67 | G32R501與PyOCD的進(jìn)階應(yīng)用:一鍵GUI+打包EXE,讓燒寫(xiě)更優(yōu)雅

文章出處:【微信號(hào):geehysemi,微信公眾號(hào):Geehy極海半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【實(shí)用開(kāi)發(fā)工具】BAT腳本打包成exe可執(zhí)行文件

    【實(shí)用開(kāi)發(fā)工具】BAT腳本打包成exe可執(zhí)行文件
    的頭像 發(fā)表于 08-21 19:51 ?2.8w次閱讀
    【實(shí)用開(kāi)發(fā)工具】<b class='flag-5'>將</b>BAT腳本<b class='flag-5'>打包成</b><b class='flag-5'>exe</b><b class='flag-5'>可執(zhí)行文件</b>

    寫(xiě)好的LabView程序怎么生成可執(zhí)行文件

    寫(xiě)好的LabView程序怎么生成可執(zhí)行文件,客戶端只要安裝可執(zhí)行文件就能操作運(yùn)行了,
    發(fā)表于 12-17 10:51

    LabView生成可執(zhí)行文件EXE

    LabView生成可執(zhí)行文件EXE時(shí),運(yùn)行時(shí)出現(xiàn)ERROR8,創(chuàng)建暫時(shí)的LVSB資源文件是什么意思???????
    發(fā)表于 04-11 13:45

    關(guān)于生成可執(zhí)行文件的問(wèn)題

    生成了一個(gè)可執(zhí)行文件,在打開(kāi).exe文件時(shí),出現(xiàn)了如圖所示的錯(cuò)誤,請(qǐng)問(wèn)該怎么處理?
    發(fā)表于 01-29 16:19

    python文件如何打包成exe可執(zhí)行文件?

    python文件打包成exe可執(zhí)行文件前言  也許我們不一定是專業(yè)的程序員,但是我們?nèi)匀豢梢酝ㄟ^(guò)
    發(fā)表于 07-06 06:34

    程序exe可執(zhí)行文件的運(yùn)行過(guò)程

    語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤2. 創(chuàng)建源程序的過(guò)程2.1 編輯源程序2.2編譯源程序(1) 編譯器MASM2.3 連接連接的作用2.4 簡(jiǎn)化編譯、連接過(guò)程2.5 exe
    發(fā)表于 01-07 08:05

    LabVIEW可執(zhí)行文件作為后臺(tái)進(jìn)程運(yùn)行

    是Application.exe ,其中Application.exe可執(zhí)行文件的名稱。HideRootWindow = True添加到.ini
    發(fā)表于 03-18 21:15

    K510跑python的opencv可行嗎?打包為linux可執(zhí)行文件能跑嗎?

    想了解一下K510跑python的opencv可行嗎?打包為linux可執(zhí)行文件能跑嗎?
    發(fā)表于 09-14 09:01

    用MDK生成bin格式的可執(zhí)行文件

    用MDK 生成bin 文件1用MDK 生成bin 文件Embest 徐良平在RV MDK 中,默認(rèn)情況下生成*.hex 的可執(zhí)行文件,但是當(dāng)我們要生成*.bin 的可執(zhí)行文件時(shí)怎么辦呢
    發(fā)表于 08-02 10:52 ?71次下載

    基于LabVIEW的可執(zhí)行文件調(diào)用的研究與實(shí)現(xiàn)

    LabVIEW 是美國(guó)NI 公司推出的一種基于G 語(yǔ)言的虛擬儀器軟件開(kāi)發(fā)工具。在LabVIEW 開(kāi)發(fā)的軟件中,用戶可能需要調(diào)用.exe 可執(zhí)行文件。本文結(jié)合實(shí)例詳細(xì)介紹了三種調(diào)用方法:通過(guò)Call
    發(fā)表于 08-14 11:42 ?66次下載

    了解在Linux下可執(zhí)行文件格式

    Linux下面,目標(biāo)文件、共享對(duì)象文件可執(zhí)行文件都是使用ELF文件格式來(lái)存儲(chǔ)的。程序經(jīng)過(guò)編譯之后會(huì)輸出目標(biāo)
    發(fā)表于 05-15 08:49 ?2255次閱讀

    CCES創(chuàng)建可執(zhí)行文件的操作流程

    本模塊介紹用CrossCore? Embedded Studio (CCES)創(chuàng)建可執(zhí)行文件的整個(gè)流程。涉及的主題包括使用新項(xiàng)目向?qū)?、配置系統(tǒng)和工具選項(xiàng),以及構(gòu)建過(guò)程。
    的頭像 發(fā)表于 07-11 06:06 ?4142次閱讀

    Python如何將Python腳本打包成exe可執(zhí)行文件

    Python實(shí)用技巧】如何將Python腳本打包成exe可執(zhí)行文件?
    的頭像 發(fā)表于 08-18 12:40 ?1.9w次閱讀
    【<b class='flag-5'>Python</b>】<b class='flag-5'>如何將</b><b class='flag-5'>Python</b>腳本<b class='flag-5'>打包成</b><b class='flag-5'>exe</b><b class='flag-5'>可執(zhí)行文件</b>

    labview生成可執(zhí)行程序后vi都在同一路徑下嗎

    打包成一個(gè)單獨(dú)的可執(zhí)行文件或安裝程序,這些VI和資源文件在內(nèi)部被組織和引用,而不是作為單獨(dú)的物理文件存放在
    的頭像 發(fā)表于 09-04 17:06 ?1811次閱讀

    labview怎么生成可執(zhí)行文件

    生成可執(zhí)行文件EXE)是LabVIEW程序開(kāi)發(fā)中的一個(gè)重要步驟,它允許用戶LabVIEW項(xiàng)目打包成一個(gè)獨(dú)立的應(yīng)用
    的頭像 發(fā)表于 09-04 17:07 ?2531次閱讀