diff --git "a/docs/Getting_started/zh/QuecPython\347\263\273\347\273\237\345\212\237\350\203\275/\347\263\273\347\273\237\344\277\241\346\201\257.md" "b/docs/Getting_started/zh/QuecPython\347\263\273\347\273\237\345\212\237\350\203\275/\347\263\273\347\273\237\344\277\241\346\201\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..8e20c9ac6b89605b8ee72bfd3bafddc98662c28e --- /dev/null +++ "b/docs/Getting_started/zh/QuecPython\347\263\273\347\273\237\345\212\237\350\203\275/\347\263\273\347\273\237\344\277\241\346\201\257.md" @@ -0,0 +1,134 @@ +# 系统信息 + +本文主要介绍如何使用uos、usys、modem等模块查询模组的固件信息、模组剩余内存大小等用户经常关注的信息,本文将不断补充,以方便用户了解模组的基本信息。 + +## 查询固件版本信息 + +```python +>>> import uos +# 查询QuecPython固件版本信息(QuecPython独有命名规则) +>>> uos.uname() +# 返回值(EC600U型号为例) +# ('sysname=EC600U-CNLB', 'nodename=EC600U', 'release=1.13.0', 'version=v1.12 on Sat_Nov_19_2022_5:29:48_PM', 'machine=EC600U with QUECTEL', 'qpyver=V0002') +``` + +如上所示我们可以查询到模组型号machine=EC600U with QUECTEL,即EC600U,但固件中对型号的区分是sysname=EC600U-CNLB,即这个固件可以在EC600UCNLB这个子型号中使用,一般严格遵循字母数字一一对应原则,但是也有例外情况存在,固件具体适用的模组型号以下载区的固件描述和移远官方技术人员描述为准。还可以查询到固件的编译日期和microPython版本version=v1.12 on Sat_Nov_19_2022_5:29:48_PM,一般用于判断BETA版本(仅用于测试严禁量产的版本)新旧,由于BETA版本仅仅用于测试,所以QuecPython版本并非是正式发布的,故版本号信息不会变更,只能通过编译时间来确认版本,建议用户进行版本控制时也使用这种方式判断版本,拿到测试版本进行测试时也可以方便的进行版本控制。qpyver=V0002这个字段即为QuecPython固件官网发布的正式版本号,在此不过多赘述。 + +为什么要查询固件版本? + +在开发的过程中难免会遇到一些问题,并找到官方人员或技术前辈咨询,那么此时需要提供的信息中,固件版本就是必不可少的,除此之外使用uos库查询固件版本还有如下方法: + +```python +>>> import uos +>>> uos.uname2() +# 返回值(以EC600U型号为例,需要注意此方法较老的固件版本不支持) +# (sysname='EC600U-CNLB', nodename='EC600U', release='1.13.0', version='v1.12 on Sat_Nov_19_2022_5:29:48_PM', machine='EC600U with QUECTEL', qpyver='V0002') +``` + +如上所示,此接口和uos.uname()返回的信息是一样的,只是返回值兼容了microPython的用法,更方便用户在脚本中访问返回值中“=”右边的信息,具体用法参考[uos - 基本系统服务](../../../API_reference/zh/QuecPython标准库/uos.html)。 + +除此之外我们还可以使用如下方法获取固件版本信息: + +```python +>>> import modem +# 查询Quectel固件版本信息(Quectel通用命名规则) +>>> modem.getDevFwVersion() +# 常见返回值类型(以EC600U型号为例) +# 'EC600UCNLBR03A01M08_OCPU_QPY_BETA1207' +# 'EC600UCNLBR03A02M08_OCPU_QPY' +``` + +如上所示,常见的两种返回值主要区别为是否包含BETA字段,包含BETA字段的固件为非正式发布版本固件,仅能用于测试,不用于项目量产,BETA后为编译固件的日期,12月7日。我们一般仅需关注是否包含BETA字段和BETA后的日期。 + +此版本号除了使用QuecPython脚本查询外还可以使用AT+GMR命令进行查询,在这里不是我们的重点。 + +AT命令仅需一行即可查询,脚本需要两行,怎么解决? + +```python +>>> import modem;modem.getDevFwVersion() # 两行合为一行,交互界面回车即可返回结果 +``` + +## 查询模组运行内存和文件系统剩余空间 + +```python +import gc +import uos + +usr = uos.statvfs("/usr") + +print('获取usr目录状态信息:', usr) +print('f_bsize – 文件系统块大小,单位字节:', usr[0]) +print('f_bfree – 可用块数:', usr[3]) +print('usr剩下总空间 {} 字节'.format(usr[0] * usr[3])) +print('usr剩下总空间 {} KB'.format((usr[0] * usr[3])/1024)) +print('usr剩下总空间 {} MB'.format((usr[0] * usr[3]) / 1024 / 1024)) + +bak = uos.statvfs("/bak") + +print('获取bak目录状态信息:', bak) +print('f_bsize – 文件系统块大小,单位字节:', bak[0]) +print('f_bfree – 可用块数:', bak[3]) +print('bak剩下总空间 {} 字节'.format(bak[0] * bak[3])) +print('bak剩下总空间 {} KB'.format((bak[0] * bak[3])/1024)) +print('bak剩下总空间 {} MB'.format((bak[0] * bak[3]) / 1024 / 1024)) + +mem = gc.mem_free() +print('剩余可用RAM空间:{}KB'.format(mem / 1024)) +``` + +如上所示我们使用uos.statvfs这个函数查询了根目录下'usr'和'bak'两个文件夹的状态信息,可以获取到文件夹的剩余空间大小。关于根目录和这两个文件夹做如下简介,根目录:对于用户来说是不允许操作的,所以对根目录做的任何操作都会导致报OSerror异常。'usr'目录:此目录是允许客户做文件读写操作的,通常客户代码等文件均是主要存放在这里,如需扩展请看[外扩存储](./../QuecPython硬件高级功能/外接存储.html)章节。'bak'目录:此目录是用于量产时存放客户需要备份的重要文件,可读不可写,存放重要文件请看[备份分区和数据安全区的使用](./../量产相关/备份分区和数据安全区的使用.html)章节。 + +其他uos相关使用请查看[uos - 基本系统服务](../../../API_reference/zh/QuecPython标准库/uos.html)。 + +## 查询microPython虚拟机版本 + +```python +>>> try:import usys as sys +... except ImportError:import sys +>>> sys.implementation +# 返回值 +# (name='micropython', version=(1, 13, 0), mpy=10245) +``` + +如上所示可以直接查询到microPython虚拟机版本是1.13.0版本,虽然可以查询到microPython虚拟机版本,但是不少用法仍和microPython不同,需要注意。以上示例使用try-except语句进行import的原因就是不同时期的固件microPython虚拟机版本不同,部分模块出现了更名的情况,为避免出现异常导致程序退出运行,使用了python的异常处理语法。后续QuecPython将为避免出现此类情况,在移植microPython新虚拟机时即将模块命名同历史版本进行兼容,方便用户的使用。 + +## 查询microPython语言版本 + +```python +>>> try:import usys as sys +... except ImportError:import sys +>>> sys.version +# 返回值 +# '3.4.0' +>>> sys.version_info +# 返回值 +# (3, 4, 0) +``` + +如上所示,使用了两个API进行的查询,两个API的主要差异为返回值形式不同。当前查询的microPython语言版本是3.4.0,在语法上是兼容电脑端CPython的3.4.0版本,后续是否有变更可以使用此接口查询。 + +## 查询设备的IMEI + +```python +>>> import modem +>>> modem.getDevImei() +# 返回值 +# '866327040830317' +``` + +如上所示,获取设备的IMEI号虽然十分简单,但是又特别的常用,所以在这里介绍一下如何查询。那么,IMEI是什么呢? + +物联网模块的IMEI是国际移动设备身份码(International Mobile Equipment Identity)的缩写,它是用于识别物联网模块的唯一标识符。在物联网场景中,IMEI可以用于以下几个方面: + +1. 设备识别和管理:通过IMEI,可以唯一地识别和管理物联网设备,包括设备的制造商、型号和版本等信息。这些信息对于设备的维护和升级非常重要。 +2. 安全性和防盗:IMEI可以用于防止设备被盗或丢失。如果设备的IMEI被注册到一个中央数据库中,就可以通过该数据库来追踪设备的位置和使用情况。 +3. 远程管理和控制:IMEI可以用于远程管理和控制物联网设备。例如,如果设备出现故障或需要更新固件,就可以通过IMEI来远程诊断和修复设备。 +4. 数据统计和分析:IMEI可以用于统计和分析物联网设备的使用情况。例如,可以根据IMEI来确定设备的使用时间、位置、频率和使用模式等信息,以便更好地了解设备的使用情况和优化设备的性能。 + +总之,IMEI是物联网设备非常重要的标识符,可以用于设备管理、安全性、远程管理和数据分析等方面。 + +使用modem库查询其他设备信息不再赘述,请查看[modem - 设备相关](./../API_reference/zh/QuecPython类库/modem.html)。 + +# 总结 + +用户经常关注的模块相关的,可以通过microPython脚本查询到的信息均在此做了介绍,如有疑问或更好的建议欢迎联系我们,或直接向我们提交文档贡献,后续本文将继续完善和补充。 \ No newline at end of file diff --git a/docs/Getting_started/zh/README.md b/docs/Getting_started/zh/README.md index df298f90b9e29b792fbc821cdd377615f3fd54a7..2505a5462eff8f7fbb1ba05a44045386213bdbef 100644 --- a/docs/Getting_started/zh/README.md +++ b/docs/Getting_started/zh/README.md @@ -5,220 +5,220 @@ - [1.1:物联网和低代码开发](./基础知识/物联网和低代码开发.md) -- [1.2:无线通信模块简介]() +- [1.2:无线通信模块简介](./基础知识/无线通信模块简介.md) -- [1.3:QuecPython 简介]() +- [1.3:QuecPython 简介](./基础知识/QuecPython简介.md) -- [1.4:硬件选型]() +- [1.4:硬件选型](./基础知识/无线通信模块简介.md)
2:快速入门 -- [2.1:准备工作]() +- [2.1:准备工作](./快速入门/准备工作.md) -- [2.2:上电与连接]() +- [2.2:上电与连接](./快速入门/上电与连接.md) -- [2.3:固件烧录]() +- [2.3:固件烧录](./快速入门/固件烧录.md) -- [2.4:QPYcom 基本操作]() +- [2.4:QPYcom 基本操作](./快速入门/QPYcom基本操作.md)
3:microPython 语言基础 -- [3.1:基本语法规则]() +- [3.1:基本语法规则](./microPython语言基础/基本语法规则.md) -- [3.2:变量和运算]() +- [3.2:变量和运算](./microPython语言基础/变量和运算.md) -- [3.3:程序流程控制]() +- [3.3:程序流程控制](./microPython语言基础/程序流程控制.md) -- [3.4:常用容器类型]() +- [3.4:常用容器类型](./microPython语言基础/常用容器类型.md) -- [3.5:函数]() +- [3.5:函数](./microPython语言基础/函数.md)
4:QuecPython 系统功能 -- [4.1:系统信息]() +- [4.1:系统信息](./QuecPython系统功能/系统信息.md) -- [4.2:日志功能]() +- [4.2:日志功能](./QuecPython系统功能/日志功能.md) -- [4.3:文件管理]() +- [4.3:文件管理](./QuecPython系统功能/文件管理.md) -- [4.4:时间功能]() +- [4.4:时间功能](./QuecPython系统功能/时间功能.md) -- [4.5:数据格式转换]() +- [4.5:数据格式转换](./QuecPython系统功能/数据格式转换.md) -- [4.6:电源管理]() +- [4.6:电源管理](./QuecPython系统功能/电源管理.md) -- [4.7:内存管理]() +- [4.7:内存管理](./QuecPython系统功能/内存管理.md) -- [4.8:多线程]() +- [4.8:多线程](./QuecPython系统功能/多线程.md)
5:QuecPython 硬件基础功能 -- [5.1:GPIO]() +- [5.1:GPIO](./QuecPython硬件基础功能/GPIO.md) -- [5.2:外部中断]() +- [5.2:外部中断](./QuecPython硬件基础功能/外部中断.md) -- [5.3:串口]() +- [5.3:串口](./QuecPython硬件基础功能/串口.md) -- [5.4:I2C]() +- [5.4:I2C](./QuecPython硬件基础功能/I2C.md) -- [5.5:SPI]() +- [5.5:SPI](./QuecPython硬件基础功能/SPI.md) -- [5.6:ADC]() +- [5.6:ADC](./QuecPython硬件基础功能/ADC.md) -- [5.7:Timer]() +- [5.7:Timer](./QuecPython硬件基础功能/Timer.md) -- [5.8:PWM]() +- [5.8:PWM](./QuecPython硬件基础功能/PWM.md) -- [5.9:看门狗]() +- [5.9:看门狗](./QuecPython硬件基础功能/看门狗.md)
6:QuecPython 物联网基础功能 -- [6.1:天线、SIM 卡和网络注册]() +- [6.1:天线、SIM 卡和网络注册](./QuecPython物联网基础功能/天线SIM卡和网络注册.md) -- [6.2:TCP 与 UDP 通信]() +- [6.2:TCP 与 UDP 通信](./QuecPython物联网基础功能/TCP与UDP通信.md) -- [6.3:HTTP 通信]() +- [6.3:HTTP 通信](./QuecPython物联网基础功能/HTTP通信.md) -- [6.4:MQTT 通信]() +- [6.4:MQTT 通信](./QuecPython物联网基础功能/MQTT通信.md) -- [6.5:SNMP 通信]() +- [6.5:SNMP 通信](./QuecPython物联网基础功能/SNMP通信.md) -- [6.6:WebSocket 通信]() +- [6.6:WebSocket 通信](./QuecPython物联网基础功能/WebSocket通信.md) -- [6.7:通信异常处理]() +- [6.7:通信异常处理](./QuecPython物联网基础功能/通信异常处理.md)
7:QuecPython 云平台功能 -- [7.1:移远云]() +- [7.1:移远云](./QuecPython云平台功能/移远云.md) -- [7.2:阿里云]() +- [7.2:阿里云](./QuecPython云平台功能/阿里云.md) -- [7.3:腾讯云]() +- [7.3:腾讯云](./QuecPython云平台功能/腾讯云.md) -- [7.4:华为云]() +- [7.4:华为云](./QuecPython云平台功能/华为云.md) -- [7.5:亚马逊云]() +- [7.5:亚马逊云](./QuecPython云平台功能/亚马逊云.md) -- [7.6:移动云]() +- [7.6:移动云](./QuecPython云平台功能/移动云.md) -- [7.7:电信云]() +- [7.7:电信云](./QuecPython云平台功能/电信云.md)
8:QuecPython 硬件高级功能 -- [8.1:屏幕显示]() +- [8.1:屏幕显示](./QuecPython硬件高级功能/屏幕显示.md) -- [8.2:LVGL]() +- [8.2:LVGL](./QuecPython硬件高级功能/LVGL.md) -- [8.3:摄像头]() +- [8.3:摄像头](./QuecPython硬件高级功能/摄像头.md) -- [8.4:低功耗]() +- [8.4:低功耗](./QuecPython硬件高级功能/低功耗.md) -- [8.5:音频和 TTS]() +- [8.5:音频和 TTS](./QuecPython硬件高级功能/音频和TTS.md) -- [8.6:外接存储]() +- [8.6:外接存储](./QuecPython硬件高级功能/外接存储.md) -- [8.7:外接以太网]() +- [8.7:外接以太网](./QuecPython硬件高级功能/外接以太网.md) -- [8.8:矩阵键盘]() +- [8.8:矩阵键盘](./QuecPython硬件高级功能/矩阵键盘.md) -- [8.9:BT 和 BLE]() +- [8.9:BT 和 BLE](./QuecPython硬件高级功能/BT和BLE.md) -- [8.10:USB 网卡]() +- [8.10:USB 网卡](./QuecPython硬件高级功能/USB网卡.md) -- [8.11:外接 WiFi]() +- [8.11:外接 WiFi](./QuecPython硬件高级功能/外接WiFi.md)
9:QuecPython 物联网高级功能 -- [9.1:APN 和数据拨号]() +- [9.1:APN 和数据拨号](./QuecPython物联网高级功能/APN和数据拨号.md) -- [9.2:语音通话]() +- [9.2:语音通话](./QuecPython物联网高级功能/语音通话.md) -- [9.3:短信]() +- [9.3:短信](./QuecPython物联网高级功能/短信.md) -- [9.4:定位]() +- [9.4:定位](./QuecPython物联网高级功能/定位.md) -- [9.5:OTA 升级]() +- [9.5:OTA 升级](./QuecPython物联网高级功能/OTA升级.md) -- [9.6:AES-128 加解密]() +- [9.6:AES-128 加解密](./QuecPython物联网高级功能/AES-128加解密.md)
10:其他开发资源 -- [10.1:QuecPython 编程框架]() +- [10.1:QuecPython 编程框架](./其他开发资源/QuecPython编程框架.md) -- [10.2:HeliosSDK]() +- [10.2:HeliosSDK](./其他开发资源/HeliosSDK.md)
11:量产相关 -- [11.1:脚本加密和固件打包]() +- [11.1:脚本加密和固件打包](./量产相关/脚本加密和固件打包.md) -- [11.2:备份分区和数据安全区的使用]() +- [11.2:备份分区和数据安全区的使用](./量产相关/备份分区和数据安全区的使用.md) -- [11.3:量产工具使用]() +- [11.3:量产工具使用](./量产相关/量产工具使用.md) -- [11.4:产测工具使用]() +- [11.4:产测工具使用](./量产相关/产测工具使用.md) -- [11.5:硬件设计和生产注意事项]() +- [11.5:硬件设计和生产注意事项](./量产相关/硬件设计和生产注意事项.md)
12:解决方案介绍 -- [12.1:DTU]() +- [12.1:DTU](./解决方案介绍/DTU.md) -- [12.2:定位器]() +- [12.2:定位器](./解决方案介绍/定位器.md) -- [12.3:对讲机]() +- [12.3:对讲机](./解决方案介绍/对讲机.md) -- [12.4:电表]() +- [12.4:电表](./解决方案介绍/电表.md) -- [12.5:云喇叭]() +- [12.5:云喇叭](./解决方案介绍/云喇叭.md) -- [12.6:门磁开关]() +- [12.6:门磁开关](./解决方案介绍/门磁开关.md) -- [12.7:学生卡]() +- [12.7:学生卡](./解决方案介绍/学生卡.md) -- [12.8:充电桩]() +- [12.8:充电桩](./解决方案介绍/充电桩.md)
13:附录 -- [13.1:QuecPython 开发板板载资源列表]() +- [13.1:QuecPython 开发板板载资源列表](./附录/QuecPython开发板板载资源列表.md) -- [13.2:QuecPython 错误码汇总]() +- [13.2:QuecPython 错误码汇总](./附录/QuecPython错误码汇总.md) -- [13.3:QuecPython 异常处理流程]() +- [13.3:QuecPython 异常处理流程](./附录/QuecPython异常处理流程.md)