QuecPython——執(zhí)行Python代碼的運(yùn)行環(huán)境,是一種全新的物聯(lián)網(wǎng)開發(fā)方式。Quec取自Quectel,QuecPython的開發(fā)是基于Quectel的物聯(lián)網(wǎng)模組。Python(中文名蟒蛇,俗名爬蟲,別名膠水語(yǔ)言)是一種跨平臺(tái)的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,入門容易、編寫簡(jiǎn)單快捷、調(diào)試方便、開發(fā)效率高,已成為當(dāng)下最受歡迎的程序設(shè)計(jì)語(yǔ)言之一。
QuecPython也可以說是移遠(yuǎn)通信為客戶更加便捷地在物聯(lián)網(wǎng)模組上做二次開發(fā)而量身打造的嵌入式操作系統(tǒng)。
大家好,我是“QuecPython”,今天來給大家介紹一下QPYcom開源。
QPYcom是移遠(yuǎn)通信Quectel官方發(fā)布的QuecPython開發(fā)調(diào)試工具,穩(wěn)定可靠、易用高效,被譽(yù)為QuecPython的“屠龍刀”。
經(jīng)過幾百個(gè)日夜的千錘百煉,QPYcom終于可以以最根本的方式(源代碼)和大家坦誠(chéng)相見。QPYcom使用CPython語(yǔ)言,wxGlade設(shè)計(jì)GUI,WXPython為圖形庫(kù),PyInstaller打包exe的Windows工具。現(xiàn)在,您只需要按照下邊的說明文檔操作就可以在本地順利地跑起來啦!
在本地搭建運(yùn)行環(huán)境和拉取代碼
第一步——拉取代碼
首先在本地安裝git,這個(gè)就不贅述啦。
接下來從github上拉取開源項(xiàng)目代碼,執(zhí)行以下代碼。
git clone https://github.com/quecpython/QPYcom.git
cd QPYcom
執(zhí)行完上述代碼后,代碼就已經(jīng)拉取到本地啦。
第二步——安裝運(yùn)行所需要的庫(kù)
首先確保本地Python版本大于等于3.8(若沒安裝請(qǐng)自行去官網(wǎng)下載安裝),Python環(huán)境變量已配置。
如果沒有配置,請(qǐng)點(diǎn)擊
https://www.pianshen.com/article/65461087669/,了解配置方法。
然后執(zhí)行以下代碼安裝requirements.txt依賴。
pip install -r requirements.txt
接下來執(zhí)行以下代碼就可以運(yùn)行工具。
pythonwxglade_out.py
執(zhí)行完這行代碼后,GUI就會(huì)顯示出來;如果報(bào)錯(cuò)提示No module named “XXX”,按照缺失的庫(kù)名按照對(duì)應(yīng)的py庫(kù)即可,如果提示pysimplegui錯(cuò)誤,檢查庫(kù)是否完全拉到本地,是否有文件缺失。
目錄結(jié)構(gòu)解析
現(xiàn)在就是整個(gè)項(xiàng)目的目錄結(jié)構(gòu),QPYcom GUI工具運(yùn)行的全部所需文件如上圖一所示。配置文件和部分文件夾是代碼運(yùn)行必需文件,若缺失則代碼無(wú)法運(yùn)行。
__pycache__中存放的python可執(zhí)行文件,.git開頭的是git的配置文件,可以不用關(guān)注。
配置文件
cloud_conf.json和local_conf.json分別是工具自動(dòng)升級(jí)的云端和本地配置文件
fw_config.json是配置合并固件參數(shù)、串口參數(shù)以及狀態(tài)欄提示內(nèi)容的配置文件
config.ini是工具的基本功能配置文件,對(duì)應(yīng)的是工具設(shè)置頁(yè)面的功能
update_message.json用于工具升級(jí)時(shí)彈窗顯示升級(jí)內(nèi)容和配置自定義提示內(nèi)容
子目錄
docs存放工具的changelog和使用說明,exes存放固件和下載和合并的工具
fw存放合并固件過程中的固件文件,project存放客戶的項(xiàng)目配置文件
images存放工具的圖標(biāo)文件,locale存放多語(yǔ)言支持的翻譯文件
logs中存放的是工具的運(yùn)行日志(software子目錄下)和調(diào)試日志(apps子目錄下)
其他文件
qpy_design.wxg是通過wxGlade設(shè)計(jì)的GUI的頁(yè)面原型文件,需要使用wxGlade打開并編輯該文件
restart.bat是工具自動(dòng)升級(jí)時(shí)切換新舊版本的腳本文件
requirement.txt是python的包管理文件
代碼文件
代碼文件解析詳見下個(gè)章節(jié)
應(yīng)用代碼解析
fileIO.py
主要涉及文件系統(tǒng)處理,配置文件讀寫,工具自動(dòng)補(bǔ)全功能邏輯處理等函數(shù),詳細(xì)內(nèi)容可自行閱讀代碼(配合主程序一起閱讀更容易理解函數(shù)的作用)。
json_process.py
工具的自動(dòng)升級(jí)部分代碼,通過對(duì)比cloud_conf.json和local_conf.json配置文件內(nèi)容來判斷云端文件是否有更新,每次版本升級(jí)將云端最新版本的文件拉取到本地替換舊文件實(shí)現(xiàn)工具版本更新,可配置多種升級(jí)模式。
通過定時(shí)器(間隔2小時(shí))檢測(cè)是否有版本更新,如果有則觸發(fā)升級(jí)動(dòng)作,若不想開啟升級(jí)功能,在主程序中注釋掉repeat_update_check()這一行即可關(guān)閉工具升級(jí)功能。
wxglade_out.py
工具GUI主程序,主要分為頁(yè)面顯示代碼和功能實(shí)現(xiàn)代碼,頁(yè)面實(shí)現(xiàn)部分代碼主要負(fù)責(zé)GUI頁(yè)面的顯示,生成各個(gè)頁(yè)面的不同控件及其位置大小等,詳細(xì)可見wxpython API,對(duì)應(yīng)的控件又通過事件綁定對(duì)應(yīng)不同的函數(shù),當(dāng)點(diǎn)擊控件或者觸發(fā)事件就會(huì)通過功能實(shí)現(xiàn)部分的代碼實(shí)現(xiàn)對(duì)應(yīng)的功能。
功能實(shí)現(xiàn)部分代碼值得強(qiáng)調(diào)的是串口數(shù)據(jù)的接收發(fā)送和下載/合并固件功能的實(shí)現(xiàn),工具的交互和文件頁(yè)面所有操作皆是基于串口數(shù)據(jù)交互實(shí)現(xiàn)的,串口的數(shù)據(jù)接收是通過wxPython的timer來實(shí)現(xiàn)的,通過不同的全局變量(操作類型)對(duì)從串口的接收數(shù)據(jù)進(jìn)行不同的處理后顯示在頁(yè)面上或者生成文件列表,詳細(xì)代碼見serRcvHandler函數(shù);發(fā)送數(shù)據(jù)的部分通過全局變量來發(fā)送不同的指令代碼到串口中并通過uos模塊來實(shí)現(xiàn)文件操作。
下載/合并固件功能通過cpython的subprocess模塊調(diào)用EXE實(shí)現(xiàn)。下載和合并工具是命令函,故此QPYcom通過subprocess創(chuàng)建一個(gè)子進(jìn)程,在后臺(tái)執(zhí)行相應(yīng)的操作,并將執(zhí)行的返回結(jié)果處理后在頁(yè)面上顯示(如更新進(jìn)度條進(jìn)度等)。
應(yīng)用發(fā)布
在調(diào)試完代碼之后就可以將PY代碼打包成可執(zhí)行的exe文件,打包命令如下:
pyinstaller -F --win-private-assemblies--icon images/quectel.ico -w 。/wxglade_out.py
打包完之后會(huì)在項(xiàng)目目錄下生成一個(gè)dist文件夾,文件夾下就是exe文件(和主程序同名),注意此時(shí)的exe需要一些依賴文件才能運(yùn)行,需要將這些依賴文件和可執(zhí)行程序exe放在同一目錄下才可正常運(yùn)行(依賴文件上文有提到,也可參考官網(wǎng)發(fā)布的正式版本工具文件列表)。
PS:您可以根據(jù)自己的需求和喜好任意添加、修改內(nèi)容,甚至還可以移植到其他操作系統(tǒng)。歡迎提pr、貢獻(xiàn)代碼哦。
責(zé)任編輯:haq
-
嵌入式
+關(guān)注
關(guān)注
5143文章
19567瀏覽量
315551 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2927文章
45994瀏覽量
389074 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7106瀏覽量
125074 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86318
原文標(biāo)題:什么是QPYcom開源?
文章出處:【微信號(hào):quectelwireless,微信公眾號(hào):移遠(yuǎn)通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式開發(fā),如何選擇適合的系統(tǒng)?

嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式
云MES系統(tǒng)源碼,支持 SaaS 多租戶,支持二次開發(fā)

新操作系統(tǒng)適配,飛凌嵌入式T527核心板打造高效開發(fā)新體驗(yàn)

SOLIDWORKS二次開發(fā)應(yīng)用范圍與實(shí)例
嵌入式系統(tǒng)開發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開發(fā)常見問題解決
可以改TSW1405內(nèi)部程序或者是修改HSDC PRO的程序做二次開發(fā)嗎?
什么是嵌入式操作系統(tǒng)?
什么~FPGA可以自行二次開發(fā)了?

新書發(fā)布——《RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》

嵌入式linux開發(fā)板怎么操作
嵌入式linux開發(fā)板芯片的工作原理
ARMxy ARM工業(yè)邊緣計(jì)算網(wǎng)關(guān)帶Ubuntu OS支持二次開發(fā)

評(píng)論