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

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

    关注

    5046

    文章

    18821

    浏览量

    298594
  • 物联网
    +关注

    关注

    2894

    文章

    43316

    浏览量

    366499
  • 操作系统
    +关注

    关注

    37

    文章

    6545

    浏览量

    122747
  • python
    +关注

    关注

    53

    文章

    4753

    浏览量

    84081

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

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

收藏 人收藏

    评论

    相关推荐

    新书发布——《RT-Thread嵌入式实时操作系统内核、驱动和应用开发技术》

    我们非常高兴地宣布,由郑苗秀、沈鸿飞和廖建尚编著的《RT-Thread嵌入式实时操作系统内核、驱动和应用开发技术》一书正式发布。本书的编写团队由多位在嵌入式和实时
    的头像 发表于 09-03 08:06 192次阅读
    新书发布——《RT-Thread<b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>内核、驱动和应用<b class='flag-5'>开发</b>技术》

    嵌入式linux开发板怎么操作

    嵌入式Linux开发板是一种基于Linux操作系统嵌入式系统开发平台。它通常包括一个处理器、内存、存储器、输入/输出接口等硬件组件,以及一
    的头像 发表于 09-02 09:09 203次阅读

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统嵌入式系统开发平台,它广泛应用于工业控制、智能家居、智能交通、医疗设备等领域。
    的头像 发表于 09-02 09:07 172次阅读

    ARMxy ARM工业边缘计算网关带Ubuntu OS支持二次开发

    ARMxy系列工业边缘计算网关,搭载Ubuntu操作系统,不仅提供了强大的数据处理能力,而且通过支持二次开发企业提供了定制化解决方案的可能性。本文将深入探讨ARMxy网关的技术特性、Ubuntu
    的头像 发表于 08-19 15:32 182次阅读
    ARMxy ARM工业边缘计算网关带Ubuntu OS支持<b class='flag-5'>二次开发</b>

    条码维码扫码模组,支持二次开发嵌入吗?

    维码扫码模组的技术支持、应用领域及其在二次开发嵌入中的优势和挑战。扫码模组技术支持与应用领域条码维码扫码模组采用了先进的CMOS影像技术和智能图像识别算法,能
    的头像 发表于 08-14 15:44 138次阅读
    条码<b class='flag-5'>二</b>维码扫码模组,支持<b class='flag-5'>二次开发</b><b class='flag-5'>嵌入</b>吗?

    RT-Thread出席第六届中国嵌入式技术大会,共话嵌入式操作系统与智能工业

    第六届中国嵌入式技术大会将于8月27-28日在深圳会展中心(福田)1号馆举行。本届大会以“AI与开源,开启嵌入式系统智能新时代”为主题,聚焦人工智能与嵌入式应用、
    的头像 发表于 08-03 08:35 246次阅读
    RT-Thread出席第六届中国<b class='flag-5'>嵌入式</b>技术大会,共话<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>与智能工业

    第六届国产嵌入式操作系统技术与产业发展论坛议程发布

    每年一度的国产嵌入式操作系统论坛即将在杭州滨江举办,今年是第六届了,又是中国嵌入式系统新朋老友相聚的时刻。大模型催生AI走人千家万户、唤醒端侧AI的需求爆发。以机器人、无人驾驶和智能制
    发表于 07-26 10:54

    再谈嵌入式实时操作系统

    程序的可移植性得到了增强,系统开发的工作量减轻的同时也提高了开发效率。对实时性和可靠性日益增长的要求正在塑造某些现代领域的嵌入式实时操作系统的发展方向,例如航空航天、工业控制、汽车电子
    的头像 发表于 04-09 17:27 571次阅读
    再谈<b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>

    个性化定制,提升运营效率:SAP二次开发引领企业数字化转型

    的解决方案,助力其实现数字化转型,提高运营效率,迎接不断变化的业务需求。 提升企业运营效率,打造个性化管理工具 SAP二次开发服务可以根据企业的特定需求,深入定制现有的SAP系统
    的头像 发表于 02-18 13:29 284次阅读

    有无操作系统嵌入式Linux驱动设备有何区别?

    有无操作系统嵌入式Linux驱动设备有何区别? 嵌入式系统是指集成电子设备上的计算机系统,通常用于控制、监测、
    的头像 发表于 10-29 17:29 602次阅读

    一种嵌入式操作系统—VxWorks

    电子发烧友网站提供《一种嵌入式操作系统—VxWorks.pdf》资料免费下载
    发表于 10-27 10:59 0次下载
    一种<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>—VxWorks

    【11月师资培训】嵌入式操作系统开发与实践

    ,使用操作系统进行开发已经成为主流。RT-Thread,作为国产开源嵌入式物联网操作系统,以其中立第三方、构架先进、功能强大和社区繁荣等特点,在众多领域得到了广泛应用。 11月9日至1
    的头像 发表于 10-27 09:45 318次阅读
    【11月师资培训】<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统开发</b>与实践

    基于VxWorks嵌入式操作系统和RTW环境的飞控软件开发方案

    电子发烧友网站提供《基于VxWorks嵌入式操作系统和RTW环境的飞控软件开发方案.pdf》资料免费下载
    发表于 10-24 14:14 0次下载
    基于VxWorks<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>和RTW环境的飞控软件<b class='flag-5'>开发</b>方案

    Linux系统嵌入式开发是什么

    嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家居等。   随着物联网时代的到来,
    的头像 发表于 10-12 15:40 1527次阅读

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-28 06:59