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