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

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

    关注

    5186

    文章

    20144

    浏览量

    328715
  • 物联网
    +关注

    关注

    2939

    文章

    47316

    浏览量

    407675
  • 操作系统
    +关注

    关注

    37

    文章

    7328

    浏览量

    128614
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89559

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

    嵌入式开发,如何选择适合的系统

    嵌入式ARM开发中,面对多种操作系统的选择,如何做出最适合项目的决策?本文将为您梳理常见系统的特性,帮助您快速了解它们的优缺点,以便更好地选择适合的
    的头像 发表于 05-20 11:32 897次阅读
    <b class='flag-5'>嵌入式开发</b>,如何选择适合的<b class='flag-5'>系统</b>?

    嵌入式开发入门指南:从零开始学习嵌入式

    基础 3. 学习路径推荐第一阶段:熟悉开发环境(如Keil、IAR、STM32)第阶段:掌握裸机编程与驱动开发第三阶段:学习RTOS(实时操作系统)如FreeRTOS第四阶段:深入理
    发表于 05-15 09:29

    云MES系统源码,支持 SaaS 多租户,支持二次开发

    万界星空科技MES生产制造执行系统源码,有演示,多个项目应用案例,成熟稳定。支持二次开发,商业授权后可商用。
    的头像 发表于 05-07 11:14 526次阅读
    云MES<b class='flag-5'>系统</b>源码,支持 SaaS 多租户,支持<b class='flag-5'>二次开发</b>

    RT-Thread嵌入式操作系统专业培训班-深圳站重磅开启!

    RT-Thread官方将在深圳举办为期三天的嵌入式操作系统专业培训班!本次培训将深入讲解RT-Thread嵌入式实时操作系统的核心技术与实战应用,助力
    的头像 发表于 04-11 18:18 644次阅读
    RT-Thread<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>专业培训班-深圳站重磅开启!

    操作系统适配,飞凌嵌入式T527核心板打造高效开发新体验

    飞凌嵌入式基于全志T536处理器开发设计的FET527N-C核心板适配了全新升级的ForlinxDesktop22.04操作系统,这一举措不仅能够为用户带来了更加流畅、稳定的
    的头像 发表于 03-20 14:33 1132次阅读
    新<b class='flag-5'>操作系统</b>适配,飞凌<b class='flag-5'>嵌入式</b>T527核心板<b class='flag-5'>打造</b>高效<b class='flag-5'>开发</b>新体验

    怎么配置dlp6500二次开发的环境,可以使用VS2013吗?

    我想请问一下,怎么配置dlp6500二次开发的环境,可以使用VS2013吗?有没有什么可以参考的文件,感谢!
    发表于 02-28 06:39

    DLP4500-C350REF如何在linux下借助SDK二次开发

    请问在哪里有二次开发环境配置文档
    发表于 02-18 08:24

    2025嵌入式操作系统专业培训班正式启动!

    RT-Thread官方将在河南-郑州发起为期三天的嵌入式操作系统专业培训班!本次培训将会深入讲解RT-Thread嵌入式实时操作系统的核心概念、实战技巧和应用场景!无论企业团队/工程师
    的头像 发表于 01-09 18:46 1358次阅读
    2025<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>专业培训班正式启动!

    深居浅出AutoCAD二次开发

    深居浅出AutoCAD二次开发,net版
    发表于 01-06 14:12 12次下载

    TSW14J56EVM板卡提供二次开发的接口怎么使用的?

    TSW14J56EVM板卡提供二次开发的接口怎么使用的,有没有详细的使用说明文档?
    发表于 01-03 07:29

    SOLIDWORKS二次开发应用范围与实例

    SOLIDWORKS二次开发为企业和设计师们提供了广阔的定制化空间,能够更好地满足复杂多变的设计需求,帮助工程师和设计师提高工作效率,实现更复杂的自动化任务。如您有SOLIDWORKS二次开发需求,欢迎咨询Solidkits
    的头像 发表于 12-13 16:33 1454次阅读

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备
    的头像 发表于 12-09 09:38 1466次阅读