为做二次开发量身打造发嵌入式操作系统QuecPython

电子说

1.3w人已加入

描述

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分