0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

2fCd_quectelwir 来源:QuecPython 作者:QuecPython 2021-06-26 16:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

    关注

    5212

    文章

    20778

    浏览量

    338897
  • 物联网
    +关注

    关注

    2951

    文章

    48273

    浏览量

    419724
  • 操作系统
    +关注

    关注

    37

    文章

    7458

    浏览量

    129741
  • python
    +关注

    关注

    59

    文章

    4892

    浏览量

    90431

原文标题:什么是QPYcom开源?

文章出处:【微信号:quectelwireless,微信公众号:移远通信】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于开源欧拉的宇航级嵌入式星载操作系统成功在轨运行

    近日,基于开源欧拉的宇航级嵌入式操作系统搭载某星座实验卫星成功发射并在轨稳定工作。这是基于开源欧拉的嵌入式操作系统首次在商业卫星载荷领域实现实际在轨运行,不仅标志着基于开源欧拉的星载
    的头像 发表于 05-19 09:28 462次阅读

    【请教】FPGA烧录软件工具二次开发问题

    请教各位大佬: Vivado 2018.3和Pango Design Suite 2025.1 这两款FPGA烧录软件工具能够二次开发吗?实现上位机控制软件调用它们,实现自动化的FPGA测试程序烧录和烧录成功的反馈信号。
    发表于 03-17 16:34

    嵌入式驱动开发,需要掌握哪些技能?

    有经验的老司机都知道,嵌入式驱动开发需要掌握一系列的技能,包含编程、硬件、操作系统、调试等多个方面。 1、硬件知识熟悉原理图:能看懂原理图以及各种元器件的含义,以及PCB布局
    发表于 01-20 16:46

    什么是嵌入式应用开发

    概述 所谓的嵌入式应用开发就是在嵌入式操作系统下进行开发、软硬件综合开发
    发表于 01-12 16:13

    arm嵌入式主板优缺点

    ,ARM嵌入式主板作为单芯片系统,几乎只需要极少的外围电路就可以让功能顺利进行。第,稳定的系统,除了要有稳定的硬件外,还需要有稳定的软件,嵌入式
    发表于 01-08 07:08

    宇树人形机器人的配置,核心代码,调试方法,二次开发接口

    宇树人形机器人的配置,核心代码,调试方法,二次开发接口
    的头像 发表于 12-10 09:05 6840次阅读

    什么是嵌入式操作系统

    嵌入式操作系统的定义 嵌入式操作系统是专门资源受限的嵌入式设备(比如 STM32 单片机、
    发表于 12-09 10:33

    嵌入式实时操作系统的特点

    实时嵌入式操作系统(Real-Time Embedded Operating System)是专门设计用于嵌入式系统的实时操作系统
    发表于 11-13 06:30

    嵌入式实时操作系统及应用开发(第三版)罗蕾主编光盘镜像百度云链接

    嵌入式实时操作系统及应用开发(第三版)罗蕾主编光盘镜像百度云链接通过网盘分享的文件:嵌入式系统配套光盘.iso链接: https://pan
    发表于 11-12 16:20

    将蜂鸟E203的内核移植到fpga之后该怎么进行二次开发呢?

    你们好!请问一下我将蜂鸟E203的内核移植到fpga之后该怎么进行二次开发呢?比如我想点亮板子上的led?驱动摄像头进行图像识别?这些该如何进行呢?蜂鸟有类似freedom studio这样的嵌入式开发平台吗?
    发表于 11-10 07:09

    直播回顾 | 掌握车载通信核心技术,虹科CAN总线实战:PCAN二次开发技术直播助您轻松拿捏总线开发“创新引擎

    ,已成为车企与零部件供应商应对深度研发、定制化测试与前沿功能开发的核心竞争力。然而,CAN总线二次开发绝非简单的“调用接口”,而是一项融合了嵌入式开发、汽车网络协议、软
    的头像 发表于 10-09 17:33 869次阅读
    直播回顾 | 掌握车载通信核心技术,虹科CAN总线实战:PCAN<b class='flag-5'>二次开发</b>技术直播助您轻松拿捏总线<b class='flag-5'>开发</b>“创新引擎

    安信可VC-01/02二次开发篇: PWM输出

    系列教程 【二次开发篇】虚拟开发环境搭建和分享 安信可离线语音模组 VC-01、VC-02 系列教程 【二次开发篇】事件和GPI
    的头像 发表于 08-27 16:06 1246次阅读
    安信可VC-01/02<b class='flag-5'>二次开发</b>篇: PWM输出

    安信可VC-01/02二次开发篇: 事件和GPIO控制

    系列教程 【二次开发篇】虚拟开发环境搭建和分享 安信可离线语音模组 VC-01、VC-02 系列教程 【二次开发篇】事件和GPIO控
    的头像 发表于 08-19 14:02 1510次阅读
    安信可VC-01/02<b class='flag-5'>二次开发</b>篇: 事件和GPIO控制

    入行嵌入式应该怎么准备?

    知识: 一、C/C++编程C/C++是嵌入式系统开发中最常用的编程语言。熟练掌握C/C++语言将使你能够理解和编写底层驱动程序、操作系统以及与硬件交互的代码。对于嵌入式
    发表于 08-06 10:34

    Linux嵌入式和单片机嵌入式的区别?

    : 单片机嵌入式开发环境相对简单,通常使用C语言或汇编语言进行编程,开发工具包括Keil、IAR等。 Linux嵌入式开发环境较
    发表于 06-20 09:46