From a013c1886821d71a3f4fad1a48095591d9386f59 Mon Sep 17 00:00:00 2001 From: "mark.zhu" Date: Thu, 16 Feb 2023 01:51:04 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0uos,urandom,sys,math?= =?UTF-8?q?=E7=9B=B8=E5=85=B3wiki?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../math.md" | 617 ++++++++++++++++++ .../sys.md" | 82 +++ .../uos.md" | 501 ++++++++++++++ .../urandom.md" | 217 ++++++ 4 files changed, 1417 insertions(+) create mode 100644 "docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" create mode 100644 "docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" new file mode 100644 index 00000000..9be62b7e --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" @@ -0,0 +1,617 @@ +# `math` - 数学运算 + +math 模块提供数学运算函数。该模块实现相应CPython模块的子集。更多信息请参阅阅CPython文档:[math](https://docs.python.org/3.5/library/math.html#module-math) + +## 返回x的y次方 + +### `math.pow` + +```python +math.pow(x, y) +``` + +返回x的y次方,返回值是浮点数。 + +**示例:** + +``` +>>> import math +>>> math.pow(2, 3) +8.0 +``` + +## 返回x的反余弦弧度值 + +### `math.acos` + +```python +math.acos(x) +``` + +返回x的反余弦弧度值,返回值为浮点数。x是-1~1之间的数,包括-1和1,如果小于-1或者大于1,会产生错误。 + +**示例:** + +``` +>>> import math +>>> math.acos(0.6) +0.9272952 +``` + +## 返回x的反正弦弧度值 + +### `math.asin` + +```python +math.asin(x) +``` + +返回x的反正弦弧度值,返回值为浮点数。x是-1~1之间的数,包括-1和1,如果小于-1或者大于1,会产生错误。 + +**示例**: + +``` +>>> import math +>>> math.asin(-1) +-1.570796 +``` + +## 返回x的反正切弧度值 + +### `math.atan` + +```python +math.atan(x) +``` + +返回x的反正切弧度值,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.atan(-8) +-1.446441 +>>> math.atan(6.4) +1.4158 +``` + +## 返回给定的 X 及 Y 坐标值的反正切值 + +### `math.atan2` + +```python +math.atan2(x, y) +``` + +返回给定的 X 及 Y 坐标值的反正切值,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.atan2(-0.50,0.48) +-0.8058035 +>>> math.atan2(7, 9) +0.6610432 +``` + +## 返回数字的上入整数 + +### `math.ceil` + +```python +math.ceil(x) +``` + +返回数字的上入整数。 + +示例: + +``` +>>> import math +>>> math.ceil(4.1) +5 +``` + +## 把y的正负号加到x前面 + +### `math.copysign` + +```python +math.copysign(x, y) +``` + +把y的正负号加到x前面,可以使用0,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.copysign(5, 0) +5.0 +>>> math.copysign(5, -4) +-5.0 +>>> math.copysign(5, 9) +5.0 +``` + +## 返回x的弧度的余弦值 + +### `math.cos` + +```python +math.cos(x) +``` + +返回x的弧度的余弦值,范围再-1~1之间,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.cos(3) +-0.9899925 +``` + +## 将弧度转换为角度 + +### `math.degrees` + +```py +math.degrees(x) +``` + +将弧度转换为角度,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.degrees(5) +286.4789 +>>> math.degrees(math.pi/2) +90.0 +``` + +## 数学常量 `e` + +### `math.e` + +数学常量 `e`,`e`即自然常数。 + +### 返回e的x次幂 + +### `math.exp` + +```python +math.exp(x) +``` + +返回e的x次幂,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.exp(1) +2.718282 +>>> print(math.e) +2.718282 +``` + +## 返回数字的绝对值 + +### `math.fabs` + +```python +math.fabs(x) +``` + +返回数字的绝对值,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.fabs(-3.88) +3.88 +``` + +## 返回数字的下舍整数 + +### `math.floor` + +```python +math.floor(x) +``` + +返回数字的下舍整数。 + +**示例:** + +``` +>>> import math +>>> math.floor(8.7) +8 +>>> math.floor(9) +9 +>>> math.floor(-7.6) +-8 +``` + +## 返回x/y的余数 + +### `math.fmod` + +```python +math.fmod(x, y) +``` + +返回x/y的余数,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.fmod(15, 4) +3.0 +>>> math.fmod(15, 3) +0.0 +``` + +## 返回由x的小数部分和整数部分组成的元组 + +### `math.modf` + +```python +math.modf(x) +``` + +返回由x的小数部分和整数部分组成的元组。 + +**示例:** + +``` +>>> import math +>>> math.modf(17.592) +(0.5919991, 17.0) +``` + +## 返回一个元组(m,e) + +### `math.modf` + +```python +math.modf(x) +``` + +返回一个元组(m,e),其计算方式为:x分别除0.5和1,得到一个值的范围,2e的值在这个范围内,e取符合要求的最大整数值,然后x/(2e),得到m的值。如果x等于0,则m和e的值都为0,m的绝对值的范围为(0.5,1)之间,不包括0.5和1。 + +**示例:** + +``` +>>> import math +>>> math.frexp(52) +(0.8125, 6) +``` + +## 判断 x 是否为有限数 + +### `math.isfinite` + +```python +math.isfinite(x) +``` + +判断 x 是否为有限数,是则返回True,否则返回False。 + +**示例:** + +``` +>>> import math +>>> math.isfinite(8) +True +``` + +## 判断是否无穷大或负无穷大 + +### `math.isinf` + +```python +math.isinf(x) +``` + +如果x是正无穷大或负无穷大,则返回True,否则返回False。 + +**示例:** + +``` +>>> import math +>>> math.isinf(123) +False +``` + +## 判断是否数字 + +### `math.isnan` + +```python +pymath.isnan(x) +``` + +如果x不是数字,返回True,否则返回False。 + +**示例:** + +``` +>>> import math +>>> math.isnan(23) +False +``` + +## 返回x*(2**i)的值 + +### `math.ldexp` + +```python +math.ldexp(x, exp) +``` + +返回x*(2**i)的值。 + +**示例:** + +``` +>>> import math +>>> math.ldexp(2, 1) +4.0 +``` + +## 返回x的自然对数 + +### `math.log` + +```python +math.log(x) +``` + +返回x的自然对数,x > 0,小于0会报错。 + +**示例:** + +``` +>>> import math +>>> math.log(2) +0.6931472 +``` + +## 数学常量 pi + +### `math.pi` + +数学常量 pi(圆周率,一般以π来表示)。 + +## 将角度转换为弧度 + +### `math.radians` + +```python +math.radians(x) +``` + +将角度转换为弧度,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.radians(90) +1.570796 +``` + +## 返回x弧度的正弦值 + +### `math.sin` + +```python +math.sin(x) +``` + +返回x弧度的正弦值,数值在 -1 到 1 之间。 + +**示例:** + +``` +>>> import math +>>> math.sin(-18) +0.7509873 +>>> math.sin(50) +-0.2623749 +``` + +## 返回数字x的平方根 + +### `math.sqrt` + +```python +math.sqrt(x) +``` + +返回数字x的平方根,返回值为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.sqrt(4) +2.0 +>>> math.sqrt(7) +2.645751 +``` + +## 返回 x 弧度的正切值 + +### `math.tan` + +```python +math.tan(x) +``` + +返回 x 弧度的正切值,数值在 -1 到 1 之间,为浮点数。 + +**示例:** + +``` +>>> import math +>>> math.tan(9) +-0.4523157 +``` + +## 返回x的整数部分 + +### `math.trunc` + +```python +math.trunc(x) +``` + +返回x的整数部分。 + +**示例:** + +``` +>>> import math +>>> math.trunc(7.123) +7 +``` + +**使用示例** + +```python +# 数学运算math函数示例 + +import math +import log +import utime + + +''' +下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 +''' +PROJECT_NAME = "QuecPython_Math_example" +PROJECT_VERSION = "1.0.0" + + +if __name__ == '__main__': + # 设置日志输出级别 + log.basicConfig(level=log.INFO) + math_log = log.getLogger("Math") + + # x**y运算后的值 + result = math.pow(2,3) + math_log.info(result) + # 8.0 + + # 取大于等于x的最小的整数值,如果x是一个整数,则返回x + result = math.ceil(4.12) + math_log.info(result) + # 5 + + # 把y的正负号加到x前面,可以使用0 + result = math.copysign(2,-3) + math_log.info(result) + # -2.0 + + # 求x的余弦,x必须是弧度 + result = math.cos(math.pi/4) + math_log.info(result) + # 0.7071067811865476 + + # 把x从弧度转换成角度 + result = math.degrees(math.pi/4) + math_log.info(result) + # 45.0 + + # e表示一个常量 + result = math.e + math_log.info(result) + # 2.718281828459045 + + # exp()返回math.e(其值为2.71828)的x次方 + result = math.exp(2) + math_log.info(result) + # 7.38905609893065 + + # fabs()返回x的绝对值 + result = math.fabs(-0.03) + math_log.info(result) + # 0.03 + + # floor()取小于等于x的最大的整数值,如果x是一个整数,则返回自身 + result = math.floor(4.999) + math_log.info(result) + # 4 + + # fmod()得到x/y的余数,其值是一个浮点数 + result = math.fmod(20,3) + math_log.info(result) + # 2.0 + + # frexp()返回一个元组(m,e),其计算方式为:x分别除0.5和1,得到一个值的范围,2e的值在这个范围内,e取符合要求的最大整数值,然后x/(2e),得到m的值。如果x等于0,则m和e的值都为0,m的绝对值的范围为(0.5,1)之间,不包括0.5和1 + result = math.frexp(75) + math_log.info(result) + # (0.5859375, 7) + + # isfinite()如果x不是无穷大的数字,则返回True,否则返回False + result = math.isfinite(0.1) + math_log.info(result) + # True + + # isinf()如果x是正无穷大或负无穷大,则返回True,否则返回False + result = math.isinf(234) + math_log.info(result) + # False + + # isnan()如果x不是数字True,否则返回False + result = math.isnan(23) + math_log.info(result) + # False + + # ldexp()返回x*(2**i)的值 + result = math.ldexp(5,5) + math_log.info(result) + # 160.0 + + # modf()返回由x的小数部分和整数部分组成的元组 + result = math.modf(math.pi) + math_log.info(result) + # (0.14159265358979312, 3.0) + + # pi:数字常量,圆周率 + result = math.pi + math_log.info(result) + # 3.141592653589793 + + # sin()求x(x为弧度)的正弦值 + result = math.sin(math.pi/4) + math_log.info(result) + # 0.7071067811865476 + + # sqrt()求x的平方根 + result = math.sqrt(100) + math_log.info(result) + # 10.0 + + # tan()返回x(x为弧度)的正切值 + result = math.tan(math.pi/4) + math_log.info(result) + # 0.9999999999999999 + + # trunc()返回x的整数部分 + result = math.trunc(6.789) + math_log.info(result) + # 6 + +``` + diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" new file mode 100644 index 00000000..d11b4ad3 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" @@ -0,0 +1,82 @@ + sys 模块中提供了与QuecPython运行环境有关的函数和变量。该模块实现相应CPython模块的子集。更多信息请参阅阅CPython文档:[sys](https://docs.python.org/3.5/library/sys.html#module-sys) + +# `sys` - 系统相关功能 + +> 新架构代码升级了MPY的版本,sys变更为usys。导入模块时建议使用以下方式进行导入 + +```python +try: + import usys as sys +except ImportError: + import sys +``` + +## 常数说明 + +### `sys.argv` + +当前程序启动的可变参数列表。 + +### `sys.byteorder` + +字节顺序 (‘little’ - 小端, ‘big’ - 大端)。 + +### `sys.implementation` + +返回当前microPython版本信息。对于MicroPython,它具有以下属性: + +- name - 字符串“ micropython” +- version - 元组(主要,次要,微型),例如(1、7、0) + +建议使用此对象来将MicroPython与其他Python实现区分开。 + +### `sys.maxsize` + +本机整数类型可以在当前平台上保留的最大值,如果它小于平台最大值,则为MicroPython整数类型表示的最大值(对于不支持长整型的MicroPython端口就是这种情况)。 + +### `sys.modules` + +已载入模块的字典。 + +### `sys.platform` + +MicroPython运行的平台。 + +### `sys.stdin` + +标准输入(默认是USB虚拟串口,可选其他串口)。 + +### `sys.stdout` + +标准输出(默认是USB虚拟串口,可选其他串口)。 + +### `sys.version` + +MicroPython 语言版本,字符串格式。 + +### `sys.version_info` + +MicroPython 语言版本,整数元组格式。 + + + +## **方法** + +### `sys.exit` + +```python +sys.exit(retval=0) +``` + +使用给定的参数退出当前程序。与此同时,该函数会引发`SystemExit`退出。如果给定了参数,则将其值作为参数赋值给`SystemExit`。 + +### `sys.print_exception` + +```python +sys.print_exception(exc, file=sys.stdout) +``` + + + +打印异常到文件对象,默认是 sys.stdout,即输出异常信息的标准输出。 + diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" index e69de29b..3e0011a4 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" @@ -0,0 +1,501 @@ + 本文阐述了QuecPython的uos模块的用法,描述了uos模块最新版本的特性。 +# `uos` - 基本系统服务 + +`uos`模块包含文件系统访问和挂载构建,该模块实现了CPython模块相应模块的子集。更多信息请参阅阅CPython文档:[os](https://docs.python.org/3.5/library/os.html#module-os) + +## 删除文件 + +### `uos.remove` + +```python +uos.remove(path) +``` + +删除文件。path表示文件名。 + +## 改变当前目录 + +### `uos.chdir` +```python +uos.chdir(path) +``` +改变当前目录。path表示目录名。 + +## 获取当前路径 + +### `uos.getcwd` + +```python +uos.getcwd() +``` + +获取当前路径。 + +## 列出指定目录文件 + +### `uos.listdir` + +```python +uos.listdir( [dir] ) +``` + +没有参数列出当前目录文件,否则列出给定目录的文件。dir为可选参数,表示目录名,默认为 ‘/’ 目录。 + +**示例:** + +```python +>>> uos.listdir() +[‘file1’, ‘read.txt’, ‘demo.py’] +``` + +## 创建新目录 + +### `uos.mkdir` + +``` +uos.mkdir(path) +``` + +创建一个新的目录。path表示准备创建的目录名。 + +**示例:** + +```python +>>> uos.mkdir('testdir') +>>> uos.listdir() +[‘file1’, ‘read.txt’, ‘demo.py’, 'testdir'] +``` + +## 重命名文件 + +### `uos.rename` + +```python +uos.rename(old_path, new_path) +``` + +重命名文件。old_path表示旧文件或目录名,new_path表示新文件或目录名。 + +**示例:** + +```python +>>> uos.rename('testdir', 'testdir1') +``` + +## 删除指定目录 + +### `uos.rmdir` + +```python +uos.rmdir(path) +``` + +删除指定目录。path表示目录名。 + +**示例:** + +```python +>>> uos.rmdir('testdir') +>>> uos.listdir() +[‘file1’, ‘read.txt’, ‘demo.py’] +``` + +## 列出当前目录参数 + +### `uos.ilistdir` + +```python +uos.ilistdir( [dir] ) +``` + +该函数返回一个迭代器,该迭代器会生成所列出条目对应的3元组。dir为可选参数,表示目录名,没有参数时,默认列出当前目录,有参数时,则列出dir参数指定的目录。元组的形式为 `(name, type, inode[, size])`: + +* name 是条目的名称,字符串类型,如果dir是字节对象,则名称为字节; +* type 是条目的类型,整型数,0x4000表示目录,0x8000表示常规文件; +* 是一个与文件的索引节点相对应的整数,对于没有这种概念的文件系统来说,可能为0; +* 一些平台可能会返回一个4元组,其中包含条目的size。对于文件条目,size表示文件大小的整数,如果未知,则为-1。对于目录项,其含义目前尚未定义。 + +## 获取文件或目录的状态 + +### `uos.stat` + +```python +uos.stat(path) +``` + +获取文件或目录的状态。path表示文件或目录名。返回值是一个元组,返回值形式为: + +`(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)` + +* `mode` – inode保护模式 +* `ino` – inode节点号 +* `dev` – inode驻留的设备 +* `nlink` – inode的链接数 +* `uid ` – 所有者的用户ID +* `gid` – 所有者的组ID +* `size` – 文件大小,单位字节 +* `atime` – 上次访问的时间 +* `mtime` – 最后一次修改的时间 +* `ctime` – 操作系统报告的“ctime”,在某些系统上是最新的元数据更改的时间,在其它系统上是创建时间,详细信息参见平台文档 + +## 获取文件系统状态信息 + +### `uos.statvfs` + +```python +uos.statvfs(path) +``` + +获取文件系统状态信息。path表示文件或目录名。返回一个包含文件系统信息的元组: + +`(f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax)` + +* `f_bsize` – 文件系统块大小,单位字节 +* `f_frsize` – 分栈大小,单位字节 +* `f_blocks` – 文件系统数据块总数 +* `f_bfree` – 可用块数 +* `f_bavai` – 非超级用户可获取的块数 +* `f_files` – 文件结点总数 +* `f_ffree` – 可用文件结点数 +* `f_favail` – 超级用户的可用文件结点数 +* `f_flag` – 挂载标记 +* `f_namemax` – 最大文件长度,单位字节 + +**示例:** + +```python +>>> import uos +>>> res = uos.statvfs("main.py") +>>> print(res) +(4096, 4096, 256, 249, 249, 0, 0, 0, 0, 255) +``` + +## 获取关于底层信息或其操作系统的信息 + +### `uos.uname` + +```python +uos.uname() +``` + +获取关于底层信息或其操作系统的信息。该接口与micropython官方接口返回值形式有所区别,返回一个元组,形式为: + +`(sysname, nodename, release, version, machine)` + +* `sysname` – 底层系统的名称,string类型 +* `nodename` – 网络名称(可以与 sysname 相同) ,string类型 +* `release` – 底层系统的版本,string类型 +* `version` – MicroPython版本和构建日期,string类型 +* `machine` – 底层硬件(如主板、CPU)的标识符,string类型 +* `qpyver` – QuecPython 短版本号,string类型 + +**示例:** + +```python +>>> import uos +>>> uos.uname() +('sysname=EC600S-CNLB', 'nodename=EC600S', 'release=1.12.0', 'version=v1.12 on 2020-06-23', 'machine=EC600S with QUECTEL', 'qpyver=V0001') +>>> uos.uname()[0].split('=')[1] # 可通过这种方式来获取sysname的值 +'EC600S-CNLB' +``` + + + +### `uos.uname2` + +```python +uos.uname2() +``` + +获取关于底层信息或其操作系统的信息。该接口与micropython官方接口返回值形式一致。注意与上面uos.uname()接口返回值的区别,返回值形式为: + +`(sysname, nodename, release, version, machine, qpyver=)` + +* `sysname` – 底层系统的名称,string类型 +* `nodename` – 网络名称(可以与 sysname 相同) ,string类型 +* `release` – 底层系统的版本,string类型 +* `version` – MicroPython版本和构建日期,string类型 +* `machine` – 底层硬件(如主板、CPU)的标识符,string类型 +* `qpyver` – QuecPython 短版本号,string类型 + +**示例:** + +```python +>>> import uos +>>> uos.uname2() +(sysname='EC600S-CNLB', nodename='EC600S', release='1.12.0', version='v1.12 on 2020-06-23', machine='EC600S with QUECTEL', qpyver='V0001') +>>> uos.uname2().sysname # 可通过这种方式直接获取sysname的值 +'EC600S-CNLB' +>>> uos.uname2().machine +'EC600S with QUECTEL' +``` + + + +## 返回具有*n个*随机字节的bytes对象 + +### `uos.urandom` + +```python +uos.urandom(n) +``` + +返回具有*n个*随机字节的bytes对象,只要有可能,它就会由硬件随机数生成器生成。 + +**示例:** + +```python +>>> import uos +>>> uos.urandom(5) +b'\xb3\xc9Y\x1b\xe9' +``` + + + +## 注册存储设备 - SPI - SD卡 + +> 目前仅EC600N/EC800N平台支持。 + +### `uos.VfsFat` + +```python +uos.VfsFat(spi_port, spimode, spiclk, spics) +``` + +初始化SD卡,和SD卡通信。使用SPI通信方式。 + +* 参数 + +| 参数 | 参数类型 | 参数说明 | +| -------- | -------- | ------------------------------------------------------------ | +| spi_port | int | 通道选择[0,1] | +| spimode | int | SPI 的工作模式(模式0最常用):
时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2: CPOL=1, CPHA=0
3: CPOL=1, CPHA=1 | +| spiclk | int | 时钟频率 0 : 812.5kHz 1 : 1.625MHz 2 : 3.25MHz 3 : 6.5MHz 4 : 13MHz | +| spics | int | 指定CS片选引脚为任意GPIO,硬件CS可以接这里指定的脚,也可以接默认的SPI CS脚
1~n:指定Pin.GPIO1~Pin.GPIOn为CS脚 | + +* 返回值 + +成功则返回VfsFat object,失败则会卡住。 + +**示例:** + +```python +>>> cdev = uos.VfsFat(1, 0, 4, 1) +``` + + + +## 注册存储设备 - SDIO - SD卡 + +> 目前仅EC600U/EC200U平台支持。 + +### `uos.VfsSd` + +```python +uos.VfsSd(str) +``` + +初始化SD卡,使用SDIO通信方式。 + +* 参数 + +| 参数 | 参数类型 | 参数说明 | +| ---- | -------- | ----------- | +| str | str | 传入"sd_fs" | + +* 返回值 + +成功则返回vfs object,失败则会报错。 + +- 引脚说明 + +| 平台 | 引脚 | +| ------ | ------------------------------------------------------------ | +| EC600U | CMD:引脚号48
DATA0:引脚号39
DATA1:引脚号40
DATA2:引脚号49
DATA3:引脚号50
CLK:引脚号132 | +| EC200U | CMD:引脚号33
DATA0:引脚号31
DATA1:引脚号30
DATA2:引脚号29
DATA3:引脚号28
CLK:引脚号32 | + +**示例:** + +```python +>>> from uos import VfsSd +>>> udev = VfsSd("sd_fs") +``` + +## 设置SD卡检测管脚 + +### `uos.set_det` + +```python +uos.set_det(vfs_obj.GPIOn,mode) +``` + +指定sd卡插拔卡的检测管脚和模式。 + +* 参数 + +| 参数 | 参数类型 | 参数说明 | +| ------------- | -------- | ------------------------------------------------------------ | +| vfs_obj.GPIOn | int | 用于sd卡插拔卡检测的GPIO引脚号,参照Pin模块的定义 | +| mode | int | 0:sd卡插上后,检测口为低电平;sd卡取出后,检测口为高电平
1:sd卡插上后,检测口为高电平;sd卡取出后,检测口为低电平 | + +* 返回值 + +成功返回0,失败返回-1。 + +**示例:** + +```python +>>> from uos import VfsSd +>>> udev = VfsSd("sd_fs") +>>> uos.mount(udev, '/sd') +>>> udev.set_det(udev.GPIO10,0)#使用GPIO10作为卡检测管脚,sd卡插上,检测口为低电平,sd卡取出,检测口为高电平(实际使用根据硬件) +``` + +## 设置插拔SD卡回调函数 + +### `uos.set_callback` + +```python +uos.set_callback(fun) +``` + +设定发生插拔卡事件时的用户回调函数。 + +* 参数 + +| 参数 | 参数类型 | 参数说明 | +| ---- | -------- | ------------------------------------------------------------ | +| fun | function | 插拔卡回调 [ind_type]
ind_type: 事件类型,0:拔卡 1:插卡 | + +* 返回值 + +成功返回0,失败返回-1。 + + +SD卡使用示例(SDIO接口) + +>目前仅EC600U/EC200U平台支持。 + +**示例:** + +```python +from uos import VfsSd +import ql_fs +udev = VfsSd("sd_fs") +uos.mount(udev, '/sd') +udev.set_det(udev.GPIO10,0) +#文件读写 +f = open('/sd/test.txt','w+') +f.write('1234567890abcdefghijkl') +f.close() +uos.listdir('/sd') +f = open('/sd/test.txt','r') +f.read() +f.close() +#插拔卡回调函数 +def call_back(para): + if(para == 1): + print("insert") + print(uos.listdir('/usr')) + print(ql_fs.file_copy('/usr/1.txt','/sd/test.txt'))#复制sd卡里的test.txt内容到usr下的1.txt中 + print(uos.listdir('/usr')) + elif(para == 0): + print("plug out") + +udev.set_callback(call_back) +``` + + + +## 注册littleFS存储设备 - SPI NOR FLASH + +>目前仅EG915U支持 + +### `uos.VfsLfs1` + +```python +uos.VfsLfs1(readsize,progsize,lookahead,pname,spi_port,spi_clk) +``` + + +初始化spi nor flash,和外挂nor flash通信。使用SPI通信方式,将此存储设备挂载为littleFS文件系统。 + +* 参数 + +| 参数 | 参数类型 | 参数说明 | +| --------- | -------- | ------------------------------------------------------------ | +| readsize | int | 预留,暂未使用 | +| progsize | int | 预留,暂未使用 | +| lookahead | int | 预留,暂未使用 | +| pname | str | 固定为“ext_fs”。后续扩展 | +| spi_port | int | 支持的端口参照SPI章节说明 | +| spi_clk | int | 时钟频率:
EG915U:0:6.25M 1:12.5M 2:25M 3:50M 4:3.125M 5:1.5625M 6:781.25K | + +* 返回值 + + 成功则返回VfsLfs1 object,失败则 OSError 19。 + +**示例:** + +```python +>>>ldev = uos.VfsLfs1(32, 32, 32, "ext_fs",1,0) +>>>uos.mount(ldev,'/ext') +>>>f = open('/ext/test.txt','w+') +>>>f.write('hello world!!!') +>>>f.close() + +>>>uos.listdir('ext') + +>>>f = open('/ext/test.txt','r') +>>>f.read() +>>>f.close() + +``` + + + + +## 挂载文件系统 + +### `uos.mount` + +```python +uos.mount(vfs_obj, path) +``` + +挂载实体文件系统(如littleFS/FATFS等)到虚拟文件系统(VFS)。 + +* 参数 + +| 参数 | 参数类型 | 参数说明 | +| ------- | ---------- | ---------------- | +| vfs_obj | vfs object | 文件系统对象 | +| path | str | 文件系统的根目录 | + +* 返回值 + +无。 + +**示例:** + +```python +>>> cdev = uos.VfsFat(1, 0, 4, 1) +>>> uos.mount(cdev, '/sd') +``` + +**SD卡(SPI接口)使用示例: ** + +>目前仅EC600N/EC800N平台支持。 + +```python +>>> cdev = uos.VfsFat(1, 0, 4, 1) +>>> uos.mount(cdev, '/sd') +>>> f = open('/sd/test.txt','w+') +>>> f.write('0123456') +>>> f.close() +>>> uos.listdir('/sd') +>>> f = open('/sd/test.txt','r') +>>> f.read() +>>> f.close() +``` + diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" index e69de29b..dfd050e6 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" @@ -0,0 +1,217 @@ +# `urandom` - 生成随机数 + +urandom 模块提供了生成随机数的工具。 + +## 随机生成对象 obj 中的元素 + +### `urandom.choice` + +```python +urandom.choice(obj) +``` + +随机生成对象 obj 中的元素,obj 类型 string。 + +**示例**: + +``` +>>> import urandom +>>> urandom.choice("QuecPython") +'t' +``` + +## 随机产生一个在k bits范围内的十进制数 + +### `urandom.getrandbits` + +```python +urandom.getrandbits(k) +``` + +随机产生一个在k bits范围内的十进制数。 + +**示例**: + +``` +>>> import urandom +>>> urandom.getrandbits(1) #1位二进制位,范围为0~1(十进制:0~1) +1 +>>> urandom.getrandbits(1) +0 +>>> urandom.getrandbits(8) #8位二进制位,范围为0000 0000~1111 11111(十进制:0~255) +224 +``` + +## 随机生成一个 start 到 end 之间的整数 + +### `urandom.randint` + +``` +urandom.randint(start, end) +``` + +随机生成一个 start 到 end 之间的整数。 + +**示例**: + +``` +>>> import urandom +>>> urandom.randint(1, 4) +4 +>>> urandom.randint(1, 4) +2 +``` + +## 随机生成一个 0 到 1 之间的浮点数 + +### `urandom.random` + +```python +urandom.random() +``` + +随机生成一个 0 到 1 之间的浮点数。 + +**示例**: + +``` +>>> import urandom +>>> urandom.random() +0.8465231 +``` + +## 随机生成 start 到 end 间并且递增为 step 的正整数 + +### `urandom.randrange` + +```python +urandom.randrange(start, end, step) +``` + +随机生成 start 到 end 间并且递增为 step 的正整数。 + +**示例**: + +``` +>>> import urandom +>>> urandom.randrange(0, 8, 2) +0 +>>> urandom.randrange(0, 8, 2) +6 +``` + +## 指定随机数种子 + +### `urandom.seed` + +```python +urandom.seed(sed) +``` + +指定随机数种子,通常和其它随机数生成函数搭配使用。 + +**示例**: + +```python +>>> import urandom +>>> urandom.seed(20) #指定随机数种子 +>>> for i in range(0, 15): #生成0~15范围内的随机序列 +... print(urandom.randint(1, 10)) +... +8 +10 +9 +10 +2 +1 +9 +3 +2 +2 +6 +1 +10 +9 +6 +``` + +## 随机生成 start 到 end 范围内的浮点数 + +### `urandom.uniform` + +```python +urandom.uniform(start, end) +``` + +随机生成 start 到 end 范围内的浮点数。 + +**示例**: + +``` +>>> import urandom +>>> urandom.uniform(3, 5) +3.219261 +>>> urandom.uniform(3, 5) +4.00403 +``` + +**使用示例** + +```python +''' +@Author: Baron +@Date: 2020-06-22 +@LastEditTime: 2020-06-22 17:16:20 +@Description: example for module urandom +@FilePath: example_urandom_file.py +''' +import urandom as random +import log +import utime + +''' +下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 +''' +PROJECT_NAME = "QuecPython_Random_example" +PROJECT_VERSION = "1.0.0" + +log.basicConfig(level=log.INFO) +random_log = log.getLogger("random") + + +if __name__ == '__main__': + # urandom.randint(start, end) + # 随机1 ~ 4之间 + num = random.randint(1, 4) + random_log.info(num) + + # random between 0~1 + num = random.random() + random_log.info(num) + + # urandom.unifrom(start, end) + # 在开始和结束之间生成浮点数 + num = random.uniform(2, 4) + random_log.info(num) + + # urandom.randrange(start, end, step) + # 2-bit binary,the range is [00~11] (0~3) + num = random.getrandbits(2) + random_log.info(num) + + # 8-bit binary,the range is [0000 0000~1111 11111] (0~255) + num = random.getrandbits(8) + random_log.info(num) + + # urandom.randrange(start, end, step) + # 从开始到结束随机生成递增的正整数 + num = random.randrange(2, 8, 2) + random_log.info(num) + + # urandom.choice(obj) + # 随机生成对象中元素的数量 + num = random.choice("QuecPython") + random_log.info(num) + +``` + -- Gitee From 550ace0f5fb371ad1cdb6b5fb66351fa5c2f72d1 Mon Sep 17 00:00:00 2001 From: "mark.zhu" Date: Sat, 18 Feb 2023 22:51:34 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0modem=E5=92=8Cpm=E7=9B=B8?= =?UTF-8?q?=E5=85=B3wiki?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md" | 4 + .../modem.md" | 138 +++++++++ .../QuecPython\347\261\273\345\272\223/pm.md" | 268 ++++++++++++++++++ 3 files changed, 410 insertions(+) create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" index 89f76731..9ef73ae0 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" @@ -12,6 +12,10 @@ - [wifilocator - WiFi定位](./wifilocator.md) - [atcmd - 发送AT指令](./atcmd.md) - [machine - 硬件相关功能](./machine.md) +- [pm - 低功耗相关功能](./pm.md) +- [modem - 设备信息相关功能](./modem.md) +- [quecgnss - 内置GNSS相关功能](./quecgnss.md) +- [GNSS - GNSS相关功能](./GNSS.md) - [...](./....md) diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" new file mode 100644 index 00000000..df95c37d --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" @@ -0,0 +1,138 @@ +# `modem` - 设备相关 + +modem模块提供读取设备信息的方法 + +## 获取设备的IMEI + +### `modem.getDevImei` + +```python +modem.getDevImei() +``` + +获取设备的IMEI。 + +* **参数描述** + + 无 + +* **返回值描述** + + 成功返回string类型设备的IMEI,失败返回整型值-1。 + +* **示例** + +```python +>>> import modem +>>> modem.getDevImei() +'866327040830317' +``` + + + +## 获取设备型号 + +### `modem.getDevModel` + +```python +modem.getDevModel() +``` + +获取设备型号。 + +* **参数描述** + + 无 + +* **返回值描述** + + 成功返回string类型设备型号,失败返回整型值-1。 + +* **示例** + +```python +>>> modem.getDevModel() +'EC100Y' +``` + + + +## 获取设备序列号 + +### `modem.getDevSN` + +```python +modem.getDevSN() +``` + +获取设备序列号。 + +* **参数描述** + + 无 + +* **返回值描述** + + 成功返回string类型设备序列号,失败返回整型值-1。 + +* **示例** + +```python +>>> modem.getDevSN() +'D1Q20GM050038341P' +``` + + + +##### 获取固件版本号 + +### `modem.getDevFwVersion` + +```python +modem.getDevFwVersion() +``` + +获取设备固件版本号。 + +* **参数描述** + + 无 + +* **返回值描述** + + 成功返回string类型固件版本号,失败返回整型值-1。 + +* **示例** + +```python +>>> modem.getDevFwVersion() +'EC100YCNAAR01A01M16_OCPU_PY' +``` + + + +## 获取设备制造商ID + +### `modem.getDevProductId` + +```python +modem.getDevProductId() +``` + +获取设备的制造商ID。 + +* **参数描述** + + 无 + +* **返回值描述** + + 成功返回设备制造商ID,失败返回整型值-1。 + +* **示例** + +```python +>>> modem.getDevProductId() +'Quectel' +``` + diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" new file mode 100644 index 00000000..08d06b79 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" @@ -0,0 +1,268 @@ +# `pm` - 低功耗 + +模块功能:在无业务处理时使系统进入休眠状态,进入低功耗模式。 + +## 创建wake_lock锁 + +### `pm.create_wakelock` + +```python +pm.create_wakelock(lock_name, name_size) +``` + +创建wake_lock锁。 + +- **参数描述** + +| 参数 | 类型 | 说明 | +| :-------- | :----- | --------------- | +| lock_name | string | 自定义lock名 | +| name_size | int | lock_name的长度 | + +* **返回值描述** + +成功返回wakelock的标识号,否则返回-1。 + +> **注意**:BC25PA平台不支持此方法。 + +## 删除wake_lock锁 + +### `pm.delete_wakelock` + +```python +pm.delete_wakelock(lpm_fd) +``` + +删除wake_lock锁。 + +- **参数描述** + +| 参数 | 类型 | 说明 | +| :----- | :--- | ---------------------- | +| lpm_fd | int | 需要删除的锁对应标识id | + +* **返回值描述** + +成功返回0。 + +> **注意**:BC25PA平台不支持此方法。 + + +## 加锁 + +### `pm.wakelock_lock` + +```python +pm.wakelock_lock(lpm_fd) +``` + +- **参数描述** + +| 参数 | 类型 | 说明 | +| :----- | :--- | -------------------------------- | +| lpm_fd | int | 需要执行加锁操作的wakelock标识id | + +* **返回值描述** + +成功返回0,否则返回-1。 + +> **注意**:BC25PA平台不支持此方法。 + + +## 释放锁 + +### `pm.wakelock_unlock` + +```python +pm.wakelock_unlock(lpm_fd) +``` + +释放锁 + +- **参数描述** + +| 参数 | 类型 | 说明 | +| :----- | :--- | ---------------------------------- | +| lpm_fd | int | 需要执行释放锁操作的wakelock标识id | + +* **返回值描述** + +成功返回0,否则返回-1。 + +> **注意**:BC25PA平台不支持此方法。 + +## 自动休眠模式控制 + +### `pm.autosleep` + +```python +pm.autosleep(sleep_flag) +``` + +自动休眠模式控制 + +- **参数描述** + +| 参数 | 类型 | 说明 | +| :--------- | :--- | ------------------------------ | +| sleep_flag | int | 0,关闭自动休眠;1开启自动休眠 | + +* **返回值描述** + +成功返回0,失败返回-1 + + + +## 获取已创建的锁数量 + +### `pm.get_wakelock_num` + +```python +pm.get_wakelock_num() +``` + +获取已创建的锁数量 + +- **参数描述** + +无 + +* **返回值描述** + +返回已创建wakelock锁的数量。 + +> 注意:BC25PA平台不支持此方法。 + + + +## 设置PSM模式的控制时间 + +### `pm.set_psm_time` + +```python +pm.set_psm_time(tau_uint,tau_time,act_uint,act_time) # 设置并启用PSM <模式1> + +pm.set_psm_time(mode)# 单独设置启用或禁用 <模式2> +``` + + + + +* **参数描述** + +| 参数 | 参数类型 | 参数说明 | +| -------- | -------- | ------------------------------------------------------------ | +| mode | int | 是否启用PSM:
0 禁用PSM
1 启用PSM
2 (仅BC25平台)禁用PSM并删除PSM的所有参数,如有默认值,则重置默认值。(注意此种模式禁用的情况下,如果要启用PSM必须用**模式1**,用**模式2**没有任何的意义,因为设置的TAU和ACT时间全部清零了)。 | +| tau_uint | int | tau(T3412)定时器单位 | +| tau_time | int | tau(T3412)定时器时间周期值 | +| act_uint | int | act(T3324)定时器单位 | +| act_time | int | act(T3324)定时器时间周期值 | + +* **tau定时器说明** + +| tau定时器单位值 | 类型 | 单位值说明 | +| --------------- | ---- | ------------ | +| 0 | int | 10 分钟 | +| 1 | int | 1 小时 | +| 2 | int | 10 小时 | +| 3 | int | 2 秒 | +| 4 | int | 30 秒 | +| 5 | int | 1 分钟 | +| 6 | int | 320 小时 | +| 7 | int | 定时器被停用 | + +* **act定时器单位说明** + +| act定时器单位值 | 类型 | 单位值说明 | +| --------------- | ---- | ------------ | +| 0 | int | 2 秒 | +| 1 | int | 1 分钟 | +| 2 | int | 6 分钟 | +| 7 | int | 定时器被停用 | + +* **返回值** + + True: 成功 + False: 失败 + + +- **示例** + +```python +>>> import pm +>>> pm.set_psm_time(1,2,1,4) #设置tau定时器周期为 1小时 * 2 = 2小时, act定时器周期值为 1分钟 * 4 = 4分钟。 +True +>>> +``` + +> **注意**:仅BC25/ECX00U/ECX00E支持 + +## 获取PSM模式的控制时间 + +### `pm.get_psm_time` + +```python +pm.get_psm_time() +``` + + + +* **参数** + + 无 + +* **返回值** + + 成功:返回值为list类型,说明如下: + + | 参数 | 类型 | 单位值说明 | + | ------- | ---- | ------------------------------------------------------------ | + | list[0] | int | mode说明:
0-禁用PSM.
1-启用PSM.
2-(仅BC25平台)禁用 PSM 并删除 PSM 的所有参数,若有默认值,则重置为默认值。 | + | list[1] | int | tau定时器单位 | + | list[2] | int | tau定时器时间周期值 | + | list[3] | int | act定时器单位 | + | list[4] | int | act定时器时间周期值 | + + 失败:返回None。 + +- **示例** + + +```python +>>> pm.get_psm_time() + +[1, 1, 1, 1, 2] + + +``` + +> **注意**:仅BC25/ECX00U/ECX00E平台支持 + +##### 使用示例 + +模拟测试,实际开发请根据业务场景选择使用! + +```python +import pm +import utime + +# 创建wakelock锁 +lpm_fd = pm.create_wakelock("test_lock", len("test_lock")) +# 设置自动休眠模式 +pm.autosleep(1) + +# 模拟测试,实际开发请根据业务场景选择使用 +while 1: + utime.sleep(20) # 休眠 + res = pm.wakelock_lock(lpm_fd) + print("ql_lpm_idlelock_lock, g_c1_axi_fd = %d" %lpm_fd) + print("unlock sleep") + utime.sleep(20) + res = pm.wakelock_unlock(lpm_fd) + print(res) + print("ql_lpm_idlelock_unlock, g_c1_axi_fd = %d" % lpm_fd) + num = pm.get_wakelock_num() # 获取已创建锁的数量 + print(num) +``` + + -- Gitee From 8c4f0b0139fe639adb6b9c7eaf3ee5e6672fc033 Mon Sep 17 00:00:00 2001 From: "Mark.Zhu" Date: Sat, 18 Feb 2023 21:29:59 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0example=E3=80=81modem?= =?UTF-8?q?=E3=80=81pm=E3=80=81gnss=E3=80=81quecgnss=E3=80=81securedata?= =?UTF-8?q?=E7=9B=B8=E5=85=B3wiki=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=88=B0?= =?UTF-8?q?=E7=B1=BB=E5=BA=93=E7=9A=84README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md" | 3 +- .../example.md" | 47 +++ .../gnss.md" | 374 ++++++++++++++++++ .../modem.md" | 61 +-- .../QuecPython\347\261\273\345\272\223/pm.md" | 138 +++---- .../quecgnss.md" | 143 +++++++ .../securedata.md" | 84 ++++ 7 files changed, 720 insertions(+), 130 deletions(-) create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/quecgnss.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/securedata.md" diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" index 9ef73ae0..670dc1f3 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" @@ -15,7 +15,8 @@ - [pm - 低功耗相关功能](./pm.md) - [modem - 设备信息相关功能](./modem.md) - [quecgnss - 内置GNSS相关功能](./quecgnss.md) -- [GNSS - GNSS相关功能](./GNSS.md) +- [gnss - GNSS相关功能](./gnss.md) +- [securedata - 安全数据区相关功能](./securedata.md) - [...](./....md) diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/example.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/example.md" index e69de29b..373fb4b4 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/example.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/example.md" @@ -0,0 +1,47 @@ +# `example` - 执行python脚本 + +模块功能:提供方法让用户可以在命令行或者代码中执行python脚本。 + +### `example.exec` + +```python +example.exec(filePath) +``` + +执行指定的python脚本文件。 + +**参数描述** + +* `filePath`,string类型, 要执行python脚本文件的绝对路径 + +**示例** + +```python +# 假设有文件test.py,内容如下 + +def myprint(): + count = 10 + while count > 0: + count -= 1 + print('##### test #####') + +myprint() + +#将test.py文件上传到模块中,进入命令行执行如下代码 +>>> uos.listdir('/usr/') +['apn_cfg.json', 'test.py'] +>>> import example +>>> example.exec('/usr/test.py') +# 执行结果如下 + +##### test ##### +##### test ##### +##### test ##### +##### test ##### +##### test ##### +##### test ##### +##### test ##### +##### test ##### +##### test ##### +##### test ##### +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" new file mode 100644 index 00000000..fd4a2fad --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" @@ -0,0 +1,374 @@ +# `gnss` - 外置GNSS + +对L76K GPS型号(或数据类型与之类似的GPS模组)进行数据获取,可以得到模块定位是否成功,定位的经纬度数据,UTC授时时间,获取GPS模块的定位模式,获取GPS模块定位使用卫星数量,获取GPS模块定位可见卫星数量,获取定位方位角,GPS模块对地速度,模块定位大地高等数据信息。目前,该模块提供的功能接口,所获取的数据都来源于从串口读出的原始GNSS数据包中的GNGGA、GNRMC和GPGSV语句。 + +注意:当前仅EC600S/EC600N/EC800N/200U/600U/600M/800M模块支持该功能。 + +## 创建gnss对象 + +### `gnss.GnssGetData` + +```python +gnss.GnssGetData(uartn,baudrate,databits,parity,stopbits,flowctl) +``` + +创建获取GNSS的对象,参数为挂载GNSS模块的串口以及通信参数 + +**参数描述** + +| 参数 | 类型 | 说明 | +| :------- | :--- | ------------------------------------------------------------------------------------------------------------------------- | +| uartn | int | UARTn范围为0-3:
0-UART0 - DEBUG PORT
1-UART1 – BT PORT
2-UART2 – MAIN PORT
3-UART3 – USB CDC PORT | +| baudrate | int | 波特率,常用波特率都支持,如4800、9600、19200、38400、57600、115200、230400等 | +| databits | int | 数据位(5 ~ 8),展锐平台当前仅支持8位 | +| parity | int | 奇偶校验(0 – NONE,1 – EVEN,2 - ODD) | +| stopbits | int | 停止位(1 ~ 2) | +| flowctl | int | 硬件控制流(0 – FC_NONE, 1 – FC_HW) | + +* `uartn`,int类型 + UARTn范围为0-3: + `0`-UART0 - DEBUG PORT + `1`-UART1 – BT PORT + `2`-UART2 – MAIN PORT + `3`-UART3 – USB CDC PORT +* `baudrate`,int类型,常用波特率都支持,如4800、9600、19200、38400、57600、115200、230400等 +* `databits`,int类型,数据位(5 ~ 8),ECX00U系列平台当前仅支持8位 +* `parity`,int类型,奇偶校验(0 – NONE,1 – EVEN,2 - ODD) +* `stopbits`,int类型,停止位(1 ~ 2) +* `flowctl`,int类型,硬件控制流(0 – FC_NONE, 1 – FC_HW) + +**返回值描述** +gnss类的对象 + +**示例** + +```python +from gnss import GnssGetData +gnss = GnssGetData(1, 9600, 8, 0, 1, 0) +``` + +## 读取GNSS数据并解析 + +### `gnss.read_gnss_data` + +```python +gnss.read_gnss_data(max_retry=1, debug=0) +``` + +从串口读取GNSS数据,返回数据长度 + +**参数描述** + +* `max_retry`,int类型,可选参数,可不填该参数,默认为1;表示当读取的GNSS无效时,自动重新读取的最大尝试次数,如果读取数据长度为0(即没有读取到数据)则直接退出。 +* `debug`,int类型, 可选参数,可不填该参数,默认为0;表示在读取解析GNSS数据过程中,是否输出一些调试信息,为0表示不输出详细信息,为1表示输出详细信息。 + +**返回值描述** + +返回从串口读取的GNSS数据长度,int类型,单位字节。 + +**示例** + +```python +#========================================================================= +gnss.read_gnss_data() # 使用默认设置,仅读取一次,不输出详细调试信息 +4224 # 读取数据成功,并解析GNGGA、GNRMC和GPGSV语句都成功,直接返回读取的原始数据长度 +#========================================================================= +gnss.read_gnss_data() # 使用默认设置,仅读取一次,不输出详细调试信息 +GNGGA data is invalid. # 读取数据成功,获取的GNGGA定位数据无效 +GNRMC data is invalid. # 读取数据成功,获取的GNRMC定位数据无效 +648 # 返回读取的原始数据长度 +#========================================================================= +gnss.read_gnss_data(max_retry=3) # 设置最大自动读取次数为3次 +Not find GPGSV data or GPGSV data is invalid. # 第1次读取,GPGSV数据未找到或无效 +continue read. # 继续读取下一包数据 +Not find GNGGA data. # 第2次读取,没有找到GNGGA数据 +Not find GNRMC data. # 第2次读取,没有找到GNRMC数据 +continue read. # 继续尝试读取下一包 +Not find GNGGA data. # 第3次读取,没有找到GNGGA数据 +Not find GNRMC data. # 第3次读取,没有找到GNRMC数据 +continue read. # 第3次依然失败,准备继续读取,判断出已经达到最大尝试次数,退出 +128 +#========================================================================= +gnss.read_gnss_data(debug=1) # 设置读取解析过程输出详细信息 +GGA data : ['GNGGA', '021224.000', '3149.27680', 'N', '11706.93369', 'E', '1', '19', '0.9', '168.2', 'M', '-5.0', 'M', '', '*52'] # 输出从原始GNSS数据中匹配到并简单处理后的GNGGA数据 +RMC data : ['GNRMC', '021224.000', 'A', '3149.27680', 'N', '11706.93369', 'E', '0.00', '153.28', '110122', '', '', 'A', 'V*02'] # 输出从原始GNSS数据中匹配到并简单处理后的GNRMC数据 +total_sen_num = 3, total_sat_num = 12 # 输出一组完整GPGSV语句总条数和可视卫星数量 +# 下面是具体的匹配到的GPGSV语句信息 +[0] : ['$GPGSV', '3', '1', '12', '10', '79', '210', '35', '12', '40', '070', '43', '21', '08', '305', '31', '23', '46', '158', '43', '0*6E'] +[1] : ['$GPGSV', '3', '2', '12', '24', '', '', '26', '25', '54', '125', '42', '31', '', '', '21', '32', '50', '324', '34', '0*64'] +[2] : ['$GPGSV', '3', '3', '12', '193', '61', '104', '44', '194', '58', '117', '42', '195', '05', '162', '35', '199', '', '', '32', '0*54'] +4224 +``` + +## 获取读取的原始GNSS数据 + +### `gnss.getOriginalData` + +```python +gnss.getOriginalData() +``` + +该接口用于返回从串口读取的原始GNSS数据,如果用户希望拿到原始GNSS数据,自己进行处理或者进行一些数据确认,可以通过该接口来获取。该接口在每次调用 `gnss.read_gnss_data(max_retry=1, debug=0)`接口后,返回的即本次读取的原始数据。 + +**返回值描述** + +返回从串口读取的原始GNSS数据,string类型。 + +**示例** + +```python +data = gnss.getOriginalData() +print(data) +# 数据量较大,仅列出部分结果 +00,A,3149.28094,N,11706.93869,E,0.00,153.28,110122,,,A,V*04 +$GNVTG,153.28,T,,M,0.00,N,0.00,K,A*2E +$GNZDA,021555.000,11,01,2022,00,00*4D +$GPTXT,01,01,01,ANTENNA OK*35 +$GNGGA,021556.000,3149.28095,N,11706.93869,E,1,24,0.6,166.5,M,-5.0,M,,*5E +$GNGLL,3149.28095,N,11706.93869,E,021556.000,A,A*47 +$GNGSA,A,3,10,12,21,23,24,25,32,193,194,195,199,,1.0,0.6,0.8,1*35 +$GNGSA,A,3,01,04,07,09,14,21,22,24,38,39,42,45,1.0,0.6,0.8,4*36 +... +$GNGGA,021600.000,3149.28096,N,11706.93877,E,1,25,0.6,166.4,M,-5.0,M,,*52 +$GNGLL,3149.28096,N,11706.93877,E,021600.000,A,A*4B +$GNGSA,A,3,10,12,21,23,24,25,31,32,193,194,195,199,1.0,0.6,0.8,1*37 +$GNGSA,A,3,01,04,07,09,$GNGGA,021601.000,3149.28096,N,11706.93878,E,1,25,0.6,166.4,M,-5.0,M,,*5C +$GNGLL,3149.2809 +``` + +## 检查本次读取解析结果有效性 + +### `gnss.checkDataValidity` + +```python +gnss.checkDataValidity() +``` + +GNSS模块提供的功能接口,所获取的数据都来源于从串口读出的原始GNSS数据包中的GNGGA、GNRMC和GPGSV语句,该接口用于检查读取的一包GNSS数据中,GNGGA、GNRMC和GPGSV语句的有效性。 + +**返回值描述** + +返回一个元组,形式为 ` (gga_valid, rmc_valid, gsv_valid)` + +`gga_valid` - 表示本次读取解析,是否匹配到GNGGA数据并解析成功,0表示没有匹配到GNGGA数据或数据无效,1表示有效; + +`rmc_valid` - 表示本次读取解析,是否匹配到GNRMC数据并解析成功,0表述没有匹配到GNRMC数据或数据无效,1表示有效; + +`gsv_valid` - 表示本地读取解析,是否匹配到GPGSV数据并解析成功,0表示没有匹配到GPGSV数据或数据无效,1表示有效。 + +如果用户只关心定位结果,即GNGGA数据是否有效,只要gga_valid参数为1即可(或者通过gnss.isFix()接口来判断定位是否成功),不一定要三个参数都为1;解析GNRMC数据是为了获取对地速度,解析GPGSV数据是为了获取可视卫星数量以及这些卫星对应的方位角,所以用户如果不关心这些参数,可忽略rmc_valid和gsv_valid。 + +**示例** + +```python +gnss.checkDataValidity() +(1, 1, 1) # 说明本次读取解析,GNGGA、GNRMC和GPGSV这三种数据都匹配成功并解析成功 +``` + +## 检查是否定位成功 + +### `gnss.isFix` + +```python +gnss.isFix() +``` + +检查指定串口是否读取到有效GNSS信息 + +**返回值描述** + +`1`:定位成功 + +`0`:定位失败 + +**示例** + +``` +gnss.isFix() +1 +``` + +## 获取定位的UTC时间 + +### `gnss.getUtcTime` + +```python +gnss.getUtcTime() +``` + +获取GNSS信息中携带的时间 + +**返回值描述** + +成功返回UTC时间,字符串类型,失败返回整型`-1`。 + +**示例** + +```python +gnss.getUtcTime() +'06:22:05.000' # hh:mm:ss.sss +``` + +## 获取GPS模块定位模式 + +### `gnss.getLocationMode` + +```python +gnss.getLocationMode() +``` + +获取GNSS信息中携带的定位模式 + +**返回值描述** + +| 返回值 | 描述 | +| ------ | ---------------------------------------- | +| -1 | 获取失败,串口未读到数据或未读到有效数据 | +| 0 | 定位不可用或者无效 | +| 1 | 定位有效,定位模式:GPS、SPS 模式 | +| 2 | 定位有效,定位模式: DGPS、DSPS 模式 | +| 6 | 估算(航位推算)模式 | + +**示例** + +```python +gnss.getLocationMode() +1 +``` + +## 获取GPS模块定位使用卫星数量 + +### `gnss.getUsedSateCnt` + +```python +gnss.getUsedSateCnt() +``` + +获取GNSS信息中携带的使用卫星数量 + +**返回值描述** + +成功返回GPS模块定位使用卫星数量,返回值类型为整型,失败返回整型`-1`。 + +**示例** + +``` +gnss.getUsedSateCnt() +24 +``` + +## 获取GPS模块定位的经纬度信息 + +### `gnss.getLocation` + +```python +gnss.getLocation() +``` + +获取GNSS信息中携带的经纬度信息 + +**返回值描述** + +成功返回GPS模块定位的经纬度信息,失败返回整型`-1`;成功时返回值格式如下: + +`(longitude, lon_direction, latitude, lat_direction)` + +`longitude` - 经度,float型 + +`lon_direction` - 经度方向,字符串类型,E表示东经,W表示西经 + +`latitude` - 纬度,float型 + +`lat_direction` - 纬度方向,字符串类型,N表示北纬,S表示南纬 + +**示例** + +```python +gnss.getLocation() +(117.1156448333333, 'E', 31.82134916666667, 'N') +``` + +## 获取GPS模块定位可见卫星数量 + +### **`gnss.getViewedSateCnt`** + +```python +gnss.getViewedSateCnt() +``` + +获取GNSS信息中携带的可见卫星数量 + +**返回值描述** + +成功返回GPS模块定位可见卫星数量,整型值,失败返回整型-1。 + +**示例** + +```python +gnss.getViewedSateCnt() +12 +``` + +## 获取可视的GNSS卫星方位角 + +### **`gnss.getCourse`** + +```python +gnss.getCourse() +``` + +获取GNSS信息中携带的卫星方位角 + +**返回值描述** +返回所有可视的GNSS卫星方位角,范围:`0 ~ 359`,以正北为参考平面。返回形式为字典,其中key表示卫星编号,value表示方位角。要注意,value的值可能是一个整型值,也可能是"",这取决于原始的GNSS数据中GPGSV语句中方位角是否有值。返回值形式如下: + +`{key:value, ..., key:value}` + +**示例** + +```python + gnss.getCourse() +{'10': 204, '195': 162, '12': 68, '193': 105, '32': 326, '199': 162, '25': 122, '31': 247, '24': 52, '194': 116, '21': 304, '23': 159} +``` + +## 获取GPS模块定位海拔高度 + +### **`gnss.getGeodeticHeight`** + +```python +gnss.getGeodeticHeight() +``` + +获取GNSS信息中携带的海拔高度 + +**返回值描述** + +成功返回浮点类型海拔高度(单位:米),失败返回整型`-1`。 + +**示例** + +```python +gnss.getGeodeticHeight() +166.5 +``` + +## 获取GPS模块对地速度 + +### `gnss.getSpeed` + +```python +gnss.getSpeed() +``` + +获取GNSS信息中携带的对地速度 + +**返回值描述** + +成功返回GPS模块对地速度(单位:KM/h),浮点类型,失败返回整型`-1` + +**示例** + +```python +gnss.getSpeed() +0.0 +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" index df95c37d..b53d30ba 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/modem.md" @@ -12,15 +12,11 @@ modem.getDevImei() 获取设备的IMEI。 -* **参数描述** +**返回值描述** - 无 +成功返回string类型设备的IMEI,失败返回整型值 `-1`。 -* **返回值描述** - - 成功返回string类型设备的IMEI,失败返回整型值-1。 - -* **示例** +**示例** ```python >>> import modem @@ -28,8 +24,6 @@ modem.getDevImei() '866327040830317' ``` - - ## 获取设备型号 ### `modem.getDevModel` @@ -40,23 +34,17 @@ modem.getDevModel() 获取设备型号。 -* **参数描述** - - 无 +****返回值描述**** -* **返回值描述** + 成功返回string类型设备型号,失败返回整型值 `-1`。 - 成功返回string类型设备型号,失败返回整型值-1。 - -* **示例** +**示例** ```python >>> modem.getDevModel() 'EC100Y' ``` - - ## 获取设备序列号 ### `modem.getDevSN` @@ -67,24 +55,18 @@ modem.getDevSN() 获取设备序列号。 -* **参数描述** - - 无 - -* **返回值描述** +**返回值描述** - 成功返回string类型设备序列号,失败返回整型值-1。 + 成功返回string类型设备序列号,失败返回整型值 `-1`。 -* **示例** +**示例** ```python >>> modem.getDevSN() 'D1Q20GM050038341P' ``` - - -##### 获取固件版本号 +## 获取固件版本号 ### `modem.getDevFwVersion` @@ -94,23 +76,17 @@ modem.getDevFwVersion() 获取设备固件版本号。 -* **参数描述** - - 无 +****返回值描述**** -* **返回值描述** + 成功返回string类型固件版本号,失败返回整型值 `-1`。 - 成功返回string类型固件版本号,失败返回整型值-1。 - -* **示例** +**示例** ```python >>> modem.getDevFwVersion() 'EC100YCNAAR01A01M16_OCPU_PY' ``` - - ## 获取设备制造商ID ### `modem.getDevProductId` @@ -121,18 +97,13 @@ modem.getDevProductId() 获取设备的制造商ID。 -* **参数描述** - - 无 +**返回值描述** -* **返回值描述** + 成功返回设备制造商ID,失败返回整型值`-1`。 - 成功返回设备制造商ID,失败返回整型值-1。 - -* **示例** +**示例** ```python >>> modem.getDevProductId() 'Quectel' ``` - diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" index 08d06b79..9cf1268f 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/pm.md" @@ -1,6 +1,6 @@ # `pm` - 低功耗 -模块功能:在无业务处理时使系统进入休眠状态,进入低功耗模式。 +在无业务处理时使系统进入休眠状态,进入低功耗模式。 ## 创建wake_lock锁 @@ -12,16 +12,14 @@ pm.create_wakelock(lock_name, name_size) 创建wake_lock锁。 -- **参数描述** +**参数描述** -| 参数 | 类型 | 说明 | -| :-------- | :----- | --------------- | -| lock_name | string | 自定义lock名 | -| name_size | int | lock_name的长度 | +* `lock_name`,自定义lock名,string类型, +* `name_size`, lock_name的长度, int类型 -* **返回值描述** +**返回值描述** -成功返回wakelock的标识号,否则返回-1。 +成功返回wakelock的标识号,否则返回 `-1`。 > **注意**:BC25PA平台不支持此方法。 @@ -35,19 +33,16 @@ pm.delete_wakelock(lpm_fd) 删除wake_lock锁。 -- **参数描述** +**参数描述** -| 参数 | 类型 | 说明 | -| :----- | :--- | ---------------------- | -| lpm_fd | int | 需要删除的锁对应标识id | +* `lpm_fd`,需要删除的锁对应标识id,int类型 -* **返回值描述** +**返回值描述** -成功返回0。 +成功返回 `0`。 > **注意**:BC25PA平台不支持此方法。 - ## 加锁 ### `pm.wakelock_lock` @@ -56,18 +51,17 @@ pm.delete_wakelock(lpm_fd) pm.wakelock_lock(lpm_fd) ``` -- **参数描述** +将指定的wakelock置于锁定状态,存在锁定状态的锁时,模组不会进入低功耗状态 -| 参数 | 类型 | 说明 | -| :----- | :--- | -------------------------------- | -| lpm_fd | int | 需要执行加锁操作的wakelock标识id | +**参数描述** -* **返回值描述** +* `lpm_fd`,需要执行加锁操作的wakelock标识id,int类型 -成功返回0,否则返回-1。 +**返回值描述** -> **注意**:BC25PA平台不支持此方法。 +成功返回 `0`,否则返回 `-1`。 +> **注意**:BC25PA平台不支持此方法。 ## 释放锁 @@ -77,17 +71,15 @@ pm.wakelock_lock(lpm_fd) pm.wakelock_unlock(lpm_fd) ``` -释放锁 +释放锁,所有wakelock被释放时,模组才允许进入低功耗 -- **参数描述** +**参数描述** -| 参数 | 类型 | 说明 | -| :----- | :--- | ---------------------------------- | -| lpm_fd | int | 需要执行释放锁操作的wakelock标识id | +* `lpm_fd`,需要执行释放锁操作的wakelock标识id,int类型 -* **返回值描述** +**返回值描述** -成功返回0,否则返回-1。 +成功返回 `0`,否则返回 `-1`。 > **注意**:BC25PA平台不支持此方法。 @@ -101,17 +93,13 @@ pm.autosleep(sleep_flag) 自动休眠模式控制 -- **参数描述** +**参数描述** -| 参数 | 类型 | 说明 | -| :--------- | :--- | ------------------------------ | -| sleep_flag | int | 0,关闭自动休眠;1开启自动休眠 | - -* **返回值描述** - -成功返回0,失败返回-1 +* `sleep_flag`,`0`关闭自动休眠, `1`开启自动休眠,int类型 +**返回值描述** +成功返回 `0`,失败返回 `-1` ## 获取已创建的锁数量 @@ -123,18 +111,12 @@ pm.get_wakelock_num() 获取已创建的锁数量 -- **参数描述** - -无 +**返回值描述** -* **返回值描述** - -返回已创建wakelock锁的数量。 +int类型,返回已创建wakelock锁的数量。 > 注意:BC25PA平台不支持此方法。 - - ## 设置PSM模式的控制时间 ### `pm.set_psm_time` @@ -145,20 +127,13 @@ pm.set_psm_time(tau_uint,tau_time,act_uint,act_time) # 设置并启用PSM <模 pm.set_psm_time(mode)# 单独设置启用或禁用 <模式2> ``` +**参数描述** - - -* **参数描述** - -| 参数 | 参数类型 | 参数说明 | -| -------- | -------- | ------------------------------------------------------------ | -| mode | int | 是否启用PSM:
0 禁用PSM
1 启用PSM
2 (仅BC25平台)禁用PSM并删除PSM的所有参数,如有默认值,则重置默认值。(注意此种模式禁用的情况下,如果要启用PSM必须用**模式1**,用**模式2**没有任何的意义,因为设置的TAU和ACT时间全部清零了)。 | -| tau_uint | int | tau(T3412)定时器单位 | -| tau_time | int | tau(T3412)定时器时间周期值 | -| act_uint | int | act(T3324)定时器单位 | -| act_time | int | act(T3324)定时器时间周期值 | - -* **tau定时器说明** +* `mode`,是否启用PSM,int类型: + `0 `禁用PSM + `1 `启用PSM + `2 `(仅BC25平台)禁用PSM并删除PSM的所有参数,如有默认值,则重置默认值。(注意此种模式禁用的情况下,如果要启用PSM必须用**模式1**,用**模式2**没有任何的意义,因为设置的TAU和ACT时间全部清零了)。 +* `tau_uint`,tau(T3412)定时器单位,int类型 | tau定时器单位值 | 类型 | 单位值说明 | | --------------- | ---- | ------------ | @@ -171,7 +146,8 @@ pm.set_psm_time(mode)# 单独设置启用或禁用 <模式2> | 6 | int | 320 小时 | | 7 | int | 定时器被停用 | -* **act定时器单位说明** +* `tau_time`,tau(T3412)定时器时间周期值,int类型 +* `act_uint`,act(T3324)定时器单位,int类型 | act定时器单位值 | 类型 | 单位值说明 | | --------------- | ---- | ------------ | @@ -180,13 +156,16 @@ pm.set_psm_time(mode)# 单独设置启用或禁用 <模式2> | 2 | int | 6 分钟 | | 7 | int | 定时器被停用 | -* **返回值** +* `act_time`,act(T3324)定时器时间周期值,int类型 + +> **注意:**实际设置的tau和act,为单位值和周期值的积 - True: 成功 - False: 失败 +**返回值描述** +`True: ` 成功 +`False:` 失败 -- **示例** +**示例** ```python >>> import pm @@ -205,28 +184,21 @@ True pm.get_psm_time() ``` +**返回值描述** +成功:返回值为list类型,说明如下: -* **参数** - - 无 - -* **返回值** +| 参数 | 类型 | 单位值说明 | +| ------- | ---- | ------------------------------------------------------------------------------------------------------------------------- | +| list[0] | int | mode说明:
0-禁用PSM.
1-启用PSM.
2-(仅BC25平台)禁用 PSM 并删除 PSM 的所有参数,若有默认值,则重置为默认值。 | +| list[1] | int | tau定时器单位 | +| list[2] | int | tau定时器时间周期值 | +| list[3] | int | act定时器单位 | +| list[4] | int | act定时器时间周期值 | - 成功:返回值为list类型,说明如下: - - | 参数 | 类型 | 单位值说明 | - | ------- | ---- | ------------------------------------------------------------ | - | list[0] | int | mode说明:
0-禁用PSM.
1-启用PSM.
2-(仅BC25平台)禁用 PSM 并删除 PSM 的所有参数,若有默认值,则重置为默认值。 | - | list[1] | int | tau定时器单位 | - | list[2] | int | tau定时器时间周期值 | - | list[3] | int | act定时器单位 | - | list[4] | int | act定时器时间周期值 | - - 失败:返回None。 - -- **示例** +失败:返回 `None`。 +**示例** ```python >>> pm.get_psm_time() @@ -238,7 +210,7 @@ pm.get_psm_time() > **注意**:仅BC25/ECX00U/ECX00E平台支持 -##### 使用示例 +**使用示例** 模拟测试,实际开发请根据业务场景选择使用! @@ -264,5 +236,3 @@ while 1: num = pm.get_wakelock_num() # 获取已创建锁的数量 print(num) ``` - - diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/quecgnss.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/quecgnss.md" new file mode 100644 index 00000000..5561732e --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/quecgnss.md" @@ -0,0 +1,143 @@ +# `quecgnss` - 内置GNSS + +此模块提供内置GNSS的使用接口 + +> **说明**:当前仅 EC200UCNAA/EC200UCNLA/EC200UEUAA/EC800MCNGA/EC800GCNGA 型号支持该功能。 + +## GNSS 功能初始化 + +### **`quecgnss.init`** + +```python +quecgnss.init() +``` + +模组内置GNSS模块功能的初始化。 + +**返回值描述** +成功返回整形`0`,失败返回整形`-1`。 + +## GNSS 工作状态获取 + +### **`quecgnss.get_state`** + +```python +quecgnss.get_state() +``` + +获取GNSS模块当前工作状态 + +**返回值描述** + +| 返回值 | 类型 | 说明 | +| ------ | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0 | int | GNSS模块处于关闭状态 | +| 1 | int | GNSS模块固件升级中 | +| 2 | int | GNSS模块定位中,这种模式下即可开始读取GNSS定位数据,定位数据是否有效需要用户获取到定位数据后,解析对应语句来判断,比如判断GNRMC语句的status是 A 还是 V,A 表示定位有效,V 表示定位无效。 | + +## GNSS开关 + +### `quecgnss.gnssEnable` + +```python +quecgnss.gnssEnable(opt) +``` + +开启或者关闭GNSS模块。如果是上电后第一次使用内置GNSS功能,一般不需要调用该接口来开启GNSS功能,直接调用init()接口即可,init() 接口在初始化时会自动开启GNSS功能。 + +**参数描述** + +`opt`,int类型 + + `0` - 关闭GNSS功能 + + `1` - 开启GNSS功能 + +**返回值描述** + +成功返回整形 `0`,失败返回整形 `-1`。 + +## GNSS定位数据获取 + +### `quecgnss.read` + +```python +quecgnss.read(size) +``` + +读取GNSS定位数据。 + +**参数描述** + +`size`,int类型,指定读取数据的大小,单位字节。 + +**返回值描述** + +成功返回一个元组,失败返回整形-1。元组形式如下: +`(size, data)` +`size` - 实际读取数据的大小 +`data` - GNSS定位数据 + +**GNSS使用示例** + +```python +import quecgnss + + +def main(): + ret = quecgnss.init() + if ret == 0: + print('GNSS init ok.') + else: + print('GNSS init failed.') + return -1 + data = quecgnss.read(4096) + print(data[1].decode()) + + quecgnss.gnssEnable(0) + + +if __name__ == '__main__': + main() + + +#=================================================================================================== +#运行结果 +167,169,170,,,,,,,,1.773,1.013,1.455*15 +$GPGSV,2,1,8,3,23,303,34,16,32,219,28,22,74,98,26,25,16,43,25*77 +$GPGSV,2,2,8,26,70,236,28,31,59,12,38,32,55,127,34,4,5,,21*49 +$BDGSV,2,1,8,163,51,192,32,166,70,11,31,167,52,197,32,169,59,334,31*61 +$BDGSV,2,2,8,170,40,205,31,161,5,,31,164,5,,27,165,5,,29*59 +$GNRMC,022326.000,A,3149.324624,N,11706.921702,E,0.000,261.541,180222,,E,A*38 +$GNGGA,022326.000,3149.324624,N,11706.921702,E,1,12,1.013,-8.580,M,0,M,,*47 +$GNGLL,3149.324624,N,11706.921702,E,022326.000,A,A*44 +$GNGSA,A,3,31,32,3,16,22,25,26,,,,,,1.773,1.013,1.455*1C +$GNGSA,A,3,163,166,167,169,170,,,,,,,,1.773,1.013,1.455*15 +$GPGSV,2,1,8,3,23,303,34,16,32,219,27,22,74,98,26,25,16,43,25*78 +$GPGSV,2,2,8,26,70,236,28,31,59,12,37,32,55,127,34,4,5,,20*47 +$BDGSV,2,1,8,163,51,192,32,166,70,11,31,167,52,197,32,169,59,334,31*61 +$BDGSV,2,2,8,170,40,205,31,161,5,,31,164,5,,27,165,5,,29*59 +$GNRMC,022327.000,A,3149.324611,N,11706.921713,E,0.000,261.541,180222,,E,A*3F +$GNGGA,022327.000,3149.324611,N,11706.921713,E,1,12,1.013,-8.577,M,0,M,,*48 +$GNGLL,3149.324611,N,11706.921713,E,022327.000,A,A*43 +...... # 数据较多,省略 +$GNGSA,A,3,31,32,3,16,22,25,26,,,,,,1.837,1.120,1.456*11 +$GNGSA,A,3,163,166,167,169,170,,,,,,,,1.837,1.120,1.456*18 +$GPGSV,2,1,8,3,23,302,27,16,32,220,26,22,73,101,27,25,16,43,27*45 +$GPGSV,2,2,8,26,70,237,28,31,59,13,33,32,54,128,28,4,5,,24*44 +$BDGSV,2,1,8,163,51,192,33,166,71,11,35,167,52,198,33,169,59,334,34*6E +$BDGSV,2,2,8,170,40,205,32,161,5,,33,164,5,,28,165,5,,30*5F +$GNRMC,022507.000,A,3149.324768,N,11706.922344,E,0.000,261.541,180222,,E,A*31 +$GNGGA,022507.000,3149.324768,N,11706.922344,E,1,12,1.120,-8.794,M,0,M,,*48 +$GNGLL,3149.324768,N,11706.922344,E,022507.000,A,A*4D +$GNGSA,A,3,31,32,3,16,22,25,26,,,,,,1.837,1.120,1.455*12 +$GNGSA,A,3,163,166,167,169,170,,,,,,,,1.837,1.120,1.455*1B +$GPGSV,2,1,8,3,23,302,26,16,32,220,26,22,73,101,27,25,16,43,26*45 +$GPGSV,2,2,8,26,70,237,28,31,59,13,32,32,54,128,28,4,5,,24*45 +$BDGSV,2,1,8,163,51,192,24,166,71,11,35,167,52,198,33,169,59,334,34*68 +$BDGSV,2,2,8,170,40,205,31,161,5,,33,164,5,,28,165,5,,30*5C +$GNRMC,022508.000,A,3149.324754,N,11706.922338,E,0.002,261.541,180222,,E,A*38 +$GNGGA,022508.000,3149.324754,N,11706.922338,E,1,12,1.120,-8.750,M,0,M,,*4B +$GNGLL,3149.324754,N,11706.922338,E,022508.000,A,A*46 +$GNGSA,A,3,31,3 +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/securedata.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/securedata.md" new file mode 100644 index 00000000..e7771e95 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/securedata.md" @@ -0,0 +1,84 @@ +# `SecureData` - 安全数据区 + +模组提供一块裸flash区域及专门的读写接口供客户存贮重要信息,且信息在烧录固件后不丢失(烧录不包含此功能的固件无法保证不丢失)。提供一个存储和读取接口,不提供删除接口。 + +> 目前除BC25/BG95/EC200A系列外,其余平台均支持本功能 + +## 数据存储 + +### `SecureData.Store` + +```python +SecureData.Store(index,databuf,len) +``` + +**参数描述** + +* `index`,int类型 + | index序号 | 最大存储量 | + | --------- | ---------- | + | 1 - 8 | 52字节 | + | 9 - 12 | 100字节 | + | 13 - 14 | 500字节 | + | 15 - 16 | 1000字节 | +* `databuf`,待存储的数据数组,bytearray类型 +* `len`,要写入数据的长度,int类型 + +> 存储时按照databuf和len两者中长度较小的进行存储 + +**返回值描述** + +`-1`: 参数有误 +`0`: 执行正常 + +## 数据读取 + +### `SecureData.Read` + +```python +SecureData.Read(index,databuf,len) +``` + +**参数描述** + +* `index`,index范围为1-16:读取存储数据对应的索引号,int类型 +* `databuf`,存储读取到的数据,bytearray类型 +* `len`,要读取数据的长度,int类型 + +> 若存储的数据没有传入的len大,则返回实际存储的数据长度 + +**返回值描述** + +`-2`存储数据不存在且备份数据也不存在 +`-1`参数有误 +`其他`实际读取到的数据长度 + +**示例** + +```python +import SecureData +# 即将存储的数据buf +databuf = '\x31\x32\x33\x34\x35\x36\x37\x38' +# 在index为1的存储区域中存储长度为8的数据databuf +SecureData.Store(1, databuf, 8) +# 定义一个长度为20的数组用于读取存储的数据 +buf = bytearray(20) +# 读取index为1的存储区域中的数据至buf中,将读取到数据的长度存储在变量length中 +length = SecureData.Read(1, buf, 20) +# 输出读到的数据 +print(buf[:length]) +``` + +**使用示例** + +```python +>>> import SecureData +>>> databuf = '\x31\x32\x33\x34\x35\x36\x37\x38' +>>> SecureData.Store(1, databuf, 8) +0 +>>> buf = bytearray(20) +>>> length = SecureData.Read(1, buf, 20) +>>> print(buf[:length]) +bytearray(b'12345678') +>>> +``` -- Gitee From 9e11661e83e242f0a67e1da6c61dc7267c2d9ff7 Mon Sep 17 00:00:00 2001 From: "Mark.Zhu" Date: Sun, 19 Feb 2023 21:25:07 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=BA=93uos=E3=80=81sys=E3=80=81math=E3=80=81urandom=E7=9A=84?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=A0=BC=E5=BC=8F=EF=BC=8C=E5=88=A0=E5=8E=BB?= =?UTF-8?q?gnss.md=E4=B8=AD=E5=A4=9A=E4=BD=99=E7=9A=84=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0yaml=E6=9D=A1=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../math.md" | 243 +++++++++++++++--- .../sys.md" | 21 +- .../uos.md" | 228 +++++++++------- .../urandom.md" | 55 +++- .../README.md" | 2 +- .../gnss.md" | 9 - docs/API_reference/zh/sidebar.yaml | 13 + 7 files changed, 433 insertions(+), 138 deletions(-) diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" index 9be62b7e..a24c1fed 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/math.md" @@ -10,7 +10,15 @@ math 模块提供数学运算函数。该模块实现相应CPython模块的子 math.pow(x, y) ``` -返回x的y次方,返回值是浮点数。 +返回x的y次方 + +**参数描述** + +* `x`:浮点数 +* `y`:浮点数 + +**返回值描述** +浮点数:`x`的 `y`次方 **示例:** @@ -28,7 +36,14 @@ math.pow(x, y) math.acos(x) ``` -返回x的反余弦弧度值,返回值为浮点数。x是-1~1之间的数,包括-1和1,如果小于-1或者大于1,会产生错误。 +返回x的反余弦弧度值 + +**参数描述** + +* `x`:浮点数,是-1~1之间的数,包括-1和1,如果小于-1或者大于1,会产生错误。 + +**返回值描述** +浮点数:`x`的反余弦弧度值 **示例:** @@ -46,7 +61,14 @@ math.acos(x) math.asin(x) ``` -返回x的反正弦弧度值,返回值为浮点数。x是-1~1之间的数,包括-1和1,如果小于-1或者大于1,会产生错误。 +返回x的反正弦弧度值 + +**参数描述** + +* `x`:浮点数,是-1~1之间的数,包括-1和1,如果小于-1或者大于1,会产生错误。 + +**返回值描述** +浮点数:`x`的反正弦弧度值 **示例**: @@ -64,7 +86,14 @@ math.asin(x) math.atan(x) ``` -返回x的反正切弧度值,返回值为浮点数。 +返回x的反正切弧度值 + +**参数描述** + +* `x`:浮点数 + +**返回值描述** +浮点数:`x`的反正切弧度值 **示例:** @@ -84,7 +113,15 @@ math.atan(x) math.atan2(x, y) ``` -返回给定的 X 及 Y 坐标值的反正切值,返回值为浮点数。 +返回给定的 X 及 Y 坐标值的反正切值 + +**参数描述** + +* `x`:浮点数 +* `y`:浮点数 + +**返回值描述** +浮点数:坐标 (`x` ,`y`)的反正切值 **示例:** @@ -104,9 +141,16 @@ math.atan2(x, y) math.ceil(x) ``` -返回数字的上入整数。 +返回数字的上入整数 + +**参数描述** + +* `x`:浮点数 -示例: +**返回值描述** +整数:`x`的上入整数 + +**示例:** ``` >>> import math @@ -122,7 +166,15 @@ math.ceil(x) math.copysign(x, y) ``` -把y的正负号加到x前面,可以使用0,返回值为浮点数。 +把y的正负号加到x前面 + +**参数描述** + +* `x`:浮点数 +* `y`:浮点数 + +**返回值描述** +浮点数,把 `y`的正负号加到 `x`前面 **示例:** @@ -144,11 +196,18 @@ math.copysign(x, y) math.cos(x) ``` -返回x的弧度的余弦值,范围再-1~1之间,返回值为浮点数。 +返回x的弧度的余弦值 + +**参数描述** + +* `x`:浮点数 + +**返回值描述** +浮点数,`x`的弧度的余弦值,范围-1~1之间 **示例:** -``` +```python >>> import math >>> math.cos(3) -0.9899925 @@ -158,11 +217,18 @@ math.cos(x) ### `math.degrees` -```py +```python math.degrees(x) ``` -将弧度转换为角度,返回值为浮点数。 +将弧度转换为角度 + +**参数描述** + +* `x`:浮点数 + +**返回值描述** +浮点数,弧度 `x`转换为角度 **示例:** @@ -180,7 +246,7 @@ math.degrees(x) 数学常量 `e`,`e`即自然常数。 -### 返回e的x次幂 +## 返回e的x次幂 ### `math.exp` @@ -188,7 +254,14 @@ math.degrees(x) math.exp(x) ``` -返回e的x次幂,返回值为浮点数。 +返回e的x次幂 + +**参数描述** + +* `x`:浮点数 + +**返回值描述** +浮点数,`e`的 `x`次幂 **示例:** @@ -208,7 +281,14 @@ math.exp(x) math.fabs(x) ``` -返回数字的绝对值,返回值为浮点数。 +返回数字的绝对值 + +**参数描述** + +* `x`:浮点数 + +**返回值描述** +浮点数,`x`的绝对值 **示例:** @@ -226,7 +306,14 @@ math.fabs(x) math.floor(x) ``` -返回数字的下舍整数。 +返回数字的下舍整数 + +**参数描述** + +* `x`:浮点数 + +**返回值描述** +浮点数,`x`的下舍整数 **示例:** @@ -248,7 +335,14 @@ math.floor(x) math.fmod(x, y) ``` -返回x/y的余数,返回值为浮点数。 +返回x/y的余数 + +**参数描述** + +* `x`:浮点数 +* `y`:浮点数 + **返回值描述** + `x`/`y`的余数,浮点数 **示例:** @@ -270,6 +364,12 @@ math.modf(x) 返回由x的小数部分和整数部分组成的元组。 +**参数描述** + +* `x`:浮点数 + **返回值描述** + `x`/`y`的余数,浮点数 + **示例:** ``` @@ -286,7 +386,13 @@ math.modf(x) math.modf(x) ``` -返回一个元组(m,e),其计算方式为:x分别除0.5和1,得到一个值的范围,2e的值在这个范围内,e取符合要求的最大整数值,然后x/(2e),得到m的值。如果x等于0,则m和e的值都为0,m的绝对值的范围为(0.5,1)之间,不包括0.5和1。 +返回一个元组(m,e) + +**参数描述** + +* `x`:浮点数 + **返回值描述** + 返回一个元组 `(m,e)`,其计算方式为:`x`分别除0.5和1,得到一个值的范围,`2e`的值在这个范围内,`e`取符合要求的最大整数值,然后 `x/(2e)`,得到 `m`的值。如果 `x`等于0,则 `m`和 `e`的值都为0,`m`的绝对值的范围为(0.5,1)之间,不包括0.5和1。 **示例:** @@ -304,7 +410,15 @@ math.modf(x) math.isfinite(x) ``` -判断 x 是否为有限数,是则返回True,否则返回False。 +判断 x 是否为有限数 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +判断 `x` 是否为有限数,是则返回 `True`,否则返回 `False`。 **示例:** @@ -322,7 +436,15 @@ True math.isinf(x) ``` -如果x是正无穷大或负无穷大,则返回True,否则返回False。 +判断是否无穷大或负无穷大 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +如果 `x`是正无穷大或负无穷大,则返回 `True`,否则返回 `False`。 **示例:** @@ -340,7 +462,15 @@ False pymath.isnan(x) ``` -如果x不是数字,返回True,否则返回False。 +判断是否数字 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +如果 `x`不是数字,返回 `True`,否则返回 `False`。 **示例:** @@ -358,7 +488,15 @@ False math.ldexp(x, exp) ``` -返回x*(2**i)的值。 +**返回x*(2**i)的值 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +浮点数,返回 `x`*(2**i)的值。 **示例:** @@ -376,7 +514,15 @@ math.ldexp(x, exp) math.log(x) ``` -返回x的自然对数,x > 0,小于0会报错。 +返回x的自然对数 + +**参数描述** + +* `x`,浮点数,小于0会报错 + +**返回值描述** + +浮点数,返回 `x`的自然对数 **示例:** @@ -400,7 +546,15 @@ math.log(x) math.radians(x) ``` -将角度转换为弧度,返回值为浮点数。 +将角度转换为弧度 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +浮点数,将角度 `x`转换为弧度 **示例:** @@ -418,7 +572,15 @@ math.radians(x) math.sin(x) ``` -返回x弧度的正弦值,数值在 -1 到 1 之间。 +返回x弧度的正弦值 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +返回 `x`弧度的正弦值,数值在 -1 到 1 之间。 **示例:** @@ -438,7 +600,15 @@ math.sin(x) math.sqrt(x) ``` -返回数字x的平方根,返回值为浮点数。 +返回x弧度的平方根 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +返回数字 `x`的平方根,返回值为浮点数。 **示例:** @@ -458,7 +628,15 @@ math.sqrt(x) math.tan(x) ``` -返回 x 弧度的正切值,数值在 -1 到 1 之间,为浮点数。 +返回 x 弧度的正切值 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +返回 `x` 弧度的正切值,数值在 -1 到 1 之间,为浮点数。 **示例:** @@ -476,7 +654,15 @@ math.tan(x) math.trunc(x) ``` -返回x的整数部分。 +返回x的整数部分 + +**参数描述** + +* `x`,浮点数 + +**返回值描述** + +返回x的整数部分,为整数。 **示例:** @@ -614,4 +800,3 @@ if __name__ == '__main__': # 6 ``` - diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" index d11b4ad3..29975116 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/sys.md" @@ -1,8 +1,6 @@ - sys 模块中提供了与QuecPython运行环境有关的函数和变量。该模块实现相应CPython模块的子集。更多信息请参阅阅CPython文档:[sys](https://docs.python.org/3.5/library/sys.html#module-sys) - # `sys` - 系统相关功能 -> 新架构代码升级了MPY的版本,sys变更为usys。导入模块时建议使用以下方式进行导入 +> 新架构代码升级了MPY的版本,sys变更为usys。导入模块时建议使用以下方式进行导入 ```python try: @@ -58,8 +56,6 @@ MicroPython 语言版本,字符串格式。 MicroPython 语言版本,整数元组格式。 - - ## **方法** ### `sys.exit` @@ -68,7 +64,15 @@ MicroPython 语言版本,整数元组格式。 sys.exit(retval=0) ``` -使用给定的参数退出当前程序。与此同时,该函数会引发`SystemExit`退出。如果给定了参数,则将其值作为参数赋值给`SystemExit`。 +使用给定的参数退出当前程序。 + +**参数描述** + +* `retval`,int型,退出参数 + +**返回值描述** + +该函数会引发 `SystemExit`退出。如果给定了参数,则将其值作为参数赋值给 `SystemExit`。 ### `sys.print_exception` @@ -76,7 +80,10 @@ sys.exit(retval=0) sys.print_exception(exc, file=sys.stdout) ``` +打印异常到文件对象,默认是 sys.stdout,即输出异常信息的标准输出。 +**参数描述** -打印异常到文件对象,默认是 sys.stdout,即输出异常信息的标准输出。 +* `exc`,exception对象 +* `file`,指定输出文件,默认为sys.stdout diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" index 3e0011a4..4f5c55dd 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/uos.md" @@ -1,25 +1,34 @@ - 本文阐述了QuecPython的uos模块的用法,描述了uos模块最新版本的特性。 # `uos` - 基本系统服务 `uos`模块包含文件系统访问和挂载构建,该模块实现了CPython模块相应模块的子集。更多信息请参阅阅CPython文档:[os](https://docs.python.org/3.5/library/os.html#module-os) ## 删除文件 -### `uos.remove` +### `uos.remove` ```python uos.remove(path) ``` -删除文件。path表示文件名。 +删除文件。 + +**参数描述** + +* `path`,字符串,表示文件名。 ## 改变当前目录 ### `uos.chdir` + ```python uos.chdir(path) ``` -改变当前目录。path表示目录名。 + +改变当前目录。 + +**参数描述** + +* `path`,字符串,表示目录名。 ## 获取当前路径 @@ -31,6 +40,10 @@ uos.getcwd() 获取当前路径。 +**返回值描述** + +字符串,当前路径 + ## 列出指定目录文件 ### `uos.listdir` @@ -39,7 +52,15 @@ uos.getcwd() uos.listdir( [dir] ) ``` -没有参数列出当前目录文件,否则列出给定目录的文件。dir为可选参数,表示目录名,默认为 ‘/’ 目录。 +没有参数列出当前目录文件,否则列出给定目录的文件。 + +**参数描述** + +* `dir`为字符串,可选参数,表示目录名,默认为 ‘/’ 目录。 + +**返回值描述** + +元组,列出路径下所有存在的对象(目录&文件) **示例:** @@ -56,7 +77,11 @@ uos.listdir( [dir] ) uos.mkdir(path) ``` -创建一个新的目录。path表示准备创建的目录名。 +创建一个新的目录。 + +**参数描述** + +* `path`表示准备创建的目录名。 **示例:** @@ -74,7 +99,12 @@ uos.mkdir(path) uos.rename(old_path, new_path) ``` -重命名文件。old_path表示旧文件或目录名,new_path表示新文件或目录名。 +重命名文件。 + +**参数描述** + +* `old_path`,字符串,表示旧文件或目录名, +* `new_path`,字符串,表示新文件或目录名。 **示例:** @@ -90,7 +120,11 @@ uos.rename(old_path, new_path) uos.rmdir(path) ``` -删除指定目录。path表示目录名。 +删除指定目录。 + +**参数描述** + +* `path`,字符串,表示目录名。 **示例:** @@ -108,11 +142,21 @@ uos.rmdir(path) uos.ilistdir( [dir] ) ``` -该函数返回一个迭代器,该迭代器会生成所列出条目对应的3元组。dir为可选参数,表示目录名,没有参数时,默认列出当前目录,有参数时,则列出dir参数指定的目录。元组的形式为 `(name, type, inode[, size])`: +该函数返回一个迭代器,该迭代器会生成所列出条目对应的3元组。 + +**参数描述** + +* `dir`为可选参数,字符串,表示目录名,没有参数时,默认列出当前目录,有参数时,则列出dir参数指定的目录。 -* name 是条目的名称,字符串类型,如果dir是字节对象,则名称为字节; -* type 是条目的类型,整型数,0x4000表示目录,0x8000表示常规文件; -* 是一个与文件的索引节点相对应的整数,对于没有这种概念的文件系统来说,可能为0; +**返回值描述** + +返回一个迭代器,该迭代器会生成所列出条目对应的3元组 + +元组的形式为 `(name, type, inode[, size])`: + +* `name` 是条目的名称,字符串类型,如果dir是字节对象,则名称为字节; +* `type` 是条目的类型,整型数,0x4000表示目录,0x8000表示常规文件; +* `inode`是一个与文件的索引节点相对应的整数,对于没有这种概念的文件系统来说,可能为0; * 一些平台可能会返回一个4元组,其中包含条目的size。对于文件条目,size表示文件大小的整数,如果未知,则为-1。对于目录项,其含义目前尚未定义。 ## 获取文件或目录的状态 @@ -123,7 +167,15 @@ uos.ilistdir( [dir] ) uos.stat(path) ``` -获取文件或目录的状态。path表示文件或目录名。返回值是一个元组,返回值形式为: +获取文件或目录的状态。 + +**参数描述** + +* `path`,字符串,表示文件或目录名。 + +**返回值描述** + +返回值是一个元组,返回值形式为: `(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)` @@ -146,7 +198,15 @@ uos.stat(path) uos.statvfs(path) ``` -获取文件系统状态信息。path表示文件或目录名。返回一个包含文件系统信息的元组: +获取文件系统状态信息。 + +**参数描述** + +* `path`,字符串,表示文件或目录名。 + +**返回值描述** + +返回一个包含文件系统信息的元组: `(f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax)` @@ -178,7 +238,11 @@ uos.statvfs(path) uos.uname() ``` -获取关于底层信息或其操作系统的信息。该接口与micropython官方接口返回值形式有所区别,返回一个元组,形式为: +获取关于底层信息或其操作系统的信息。 + +**返回值描述** + +该接口与micropython官方接口返回值形式有所区别,返回一个元组,形式为: `(sysname, nodename, release, version, machine)` @@ -199,15 +263,17 @@ uos.uname() 'EC600S-CNLB' ``` - - ### `uos.uname2` ```python uos.uname2() ``` -获取关于底层信息或其操作系统的信息。该接口与micropython官方接口返回值形式一致。注意与上面uos.uname()接口返回值的区别,返回值形式为: +获取关于底层信息或其操作系统的信息。 + +**返回值描述** + +该接口与micropython官方接口返回值形式一致。注意与上面uos.uname()接口返回值的区别,返回值形式为: `(sysname, nodename, release, version, machine, qpyver=)` @@ -230,8 +296,6 @@ uos.uname2() 'EC600S with QUECTEL' ``` - - ## 返回具有*n个*随机字节的bytes对象 ### `uos.urandom` @@ -242,6 +306,14 @@ uos.urandom(n) 返回具有*n个*随机字节的bytes对象,只要有可能,它就会由硬件随机数生成器生成。 +**参数描述** + +* `n`,整形,随机字节的个数 + +**返回值描述** + +具有*n个*随机字节的bytes对象 + **示例:** ```python @@ -250,8 +322,6 @@ uos.urandom(n) b'\xb3\xc9Y\x1b\xe9' ``` - - ## 注册存储设备 - SPI - SD卡 > 目前仅EC600N/EC800N平台支持。 @@ -264,16 +334,19 @@ uos.VfsFat(spi_port, spimode, spiclk, spics) 初始化SD卡,和SD卡通信。使用SPI通信方式。 -* 参数 +**参数描述** + +* `spi_port`,int,通道选择[0,1] +* `spimode`,int,PI 的工作模式(模式0最常用):`
`0 : CPOL=0, CPHA=0 1 : CPOL=0, CPHA=12: CPOL=1, CPHA=0 3: CPOL=1, CPHA=1 + +> 时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平) -| 参数 | 参数类型 | 参数说明 | -| -------- | -------- | ------------------------------------------------------------ | -| spi_port | int | 通道选择[0,1] | -| spimode | int | SPI 的工作模式(模式0最常用):
时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2: CPOL=1, CPHA=0
3: CPOL=1, CPHA=1 | -| spiclk | int | 时钟频率 0 : 812.5kHz 1 : 1.625MHz 2 : 3.25MHz 3 : 6.5MHz 4 : 13MHz | -| spics | int | 指定CS片选引脚为任意GPIO,硬件CS可以接这里指定的脚,也可以接默认的SPI CS脚
1~n:指定Pin.GPIO1~Pin.GPIOn为CS脚 | +* `spiclk`, int, 时钟频率 0 : 812.5kHz 1 : 1.625MHz 2 : 3.25MHz 3 : 6.5MHz 4 : 13MHz +* `spics`,int,指定CS片选引脚为任意GPIO,硬件CS可以接这里指定的脚,也可以接默认的SPI CS脚 -* 返回值 +> 1-n:指定Pin.GPIO1-Pin.GPIOn为CS脚 + +**返回值描述** 成功则返回VfsFat object,失败则会卡住。 @@ -283,8 +356,6 @@ uos.VfsFat(spi_port, spimode, spiclk, spics) >>> cdev = uos.VfsFat(1, 0, 4, 1) ``` - - ## 注册存储设备 - SDIO - SD卡 > 目前仅EC600U/EC200U平台支持。 @@ -297,22 +368,20 @@ uos.VfsSd(str) 初始化SD卡,使用SDIO通信方式。 -* 参数 +**参数描述** -| 参数 | 参数类型 | 参数说明 | -| ---- | -------- | ----------- | -| str | str | 传入"sd_fs" | +* `str`,str, 传入"sd_fs" -* 返回值 +**返回值描述** 成功则返回vfs object,失败则会报错。 -- 引脚说明 +**引脚说明** -| 平台 | 引脚 | -| ------ | ------------------------------------------------------------ | +| 平台 | 引脚 | +| ------ | --------------------------------------------------------------------------------------------------------------- | | EC600U | CMD:引脚号48
DATA0:引脚号39
DATA1:引脚号40
DATA2:引脚号49
DATA3:引脚号50
CLK:引脚号132 | -| EC200U | CMD:引脚号33
DATA0:引脚号31
DATA1:引脚号30
DATA2:引脚号29
DATA3:引脚号28
CLK:引脚号32 | +| EC200U | CMD:引脚号33
DATA0:引脚号31
DATA1:引脚号30
DATA2:引脚号29
DATA3:引脚号28
CLK:引脚号32 | **示例:** @@ -331,16 +400,14 @@ uos.set_det(vfs_obj.GPIOn,mode) 指定sd卡插拔卡的检测管脚和模式。 -* 参数 +**参数描述** -| 参数 | 参数类型 | 参数说明 | -| ------------- | -------- | ------------------------------------------------------------ | -| vfs_obj.GPIOn | int | 用于sd卡插拔卡检测的GPIO引脚号,参照Pin模块的定义 | -| mode | int | 0:sd卡插上后,检测口为低电平;sd卡取出后,检测口为高电平
1:sd卡插上后,检测口为高电平;sd卡取出后,检测口为低电平 | +* `vfs_obj.GPIOn`,int类型,用于sd卡插拔卡检测的GPIO引脚号,参照Pin模块的定义 +* `mode`,int类型 `
0`:sd卡插上后,检测口为低电平;sd卡取出后,检测口为高电平 `
1`:sd卡插上后,检测口为高电平;sd卡取出后,检测口为低电平 -* 返回值 +**返回值描述** -成功返回0,失败返回-1。 +成功返回 `0`,失败返回 `-1`。 **示例:** @@ -353,7 +420,7 @@ uos.set_det(vfs_obj.GPIOn,mode) ## 设置插拔SD卡回调函数 -### `uos.set_callback` +### `uos.set_callback` ```python uos.set_callback(fun) @@ -361,20 +428,18 @@ uos.set_callback(fun) 设定发生插拔卡事件时的用户回调函数。 -* 参数 - -| 参数 | 参数类型 | 参数说明 | -| ---- | -------- | ------------------------------------------------------------ | -| fun | function | 插拔卡回调 [ind_type]
ind_type: 事件类型,0:拔卡 1:插卡 | +**参数描述** -* 返回值 +* `fun`,function类型,插拔卡回调 `[ind_type]` +* `ind_type`: 事件类型,0:拔卡 1:插卡 -成功返回0,失败返回-1。 +**返回值描述** +成功返回 `0`,失败返回 `-1`。 -SD卡使用示例(SDIO接口) +**SD卡使用示例(SDIO接口)** ->目前仅EC600U/EC200U平台支持。 +> 目前仅EC600U/EC200U平台支持。 **示例:** @@ -401,15 +466,13 @@ def call_back(para): print(uos.listdir('/usr')) elif(para == 0): print("plug out") - + udev.set_callback(call_back) ``` - - ## 注册littleFS存储设备 - SPI NOR FLASH ->目前仅EG915U支持 +> 目前仅EG915U/EC600N支持 ### `uos.VfsLfs1` @@ -417,23 +480,20 @@ udev.set_callback(call_back) uos.VfsLfs1(readsize,progsize,lookahead,pname,spi_port,spi_clk) ``` - 初始化spi nor flash,和外挂nor flash通信。使用SPI通信方式,将此存储设备挂载为littleFS文件系统。 -* 参数 +**参数描述** -| 参数 | 参数类型 | 参数说明 | -| --------- | -------- | ------------------------------------------------------------ | -| readsize | int | 预留,暂未使用 | -| progsize | int | 预留,暂未使用 | -| lookahead | int | 预留,暂未使用 | -| pname | str | 固定为“ext_fs”。后续扩展 | -| spi_port | int | 支持的端口参照SPI章节说明 | -| spi_clk | int | 时钟频率:
EG915U:0:6.25M 1:12.5M 2:25M 3:50M 4:3.125M 5:1.5625M 6:781.25K | +* readsize,int类型,预留,暂未使用 +* progsize,int类型,预留,暂未使用 +* lookahead,int类型,预留,暂未使用 +* pname,str类型,固定为“ext_fs”。后续扩展 +* spi_port,int类型,支持的端口参照SPI章节说明 +* spi_clk,int类型 `
`时钟频率:`
`0:6.25M 1:12.5M 2:25M 3:50M 4:3.125M 5:1.5625M 6:781.25K -* 返回值 +**返回值描述** - 成功则返回VfsLfs1 object,失败则 OSError 19。 +成功则返回VfsLfs1 object,失败则 OSError 19。 **示例:** @@ -452,9 +512,6 @@ uos.VfsLfs1(readsize,progsize,lookahead,pname,spi_port,spi_clk) ``` - - - ## 挂载文件系统 ### `uos.mount` @@ -465,16 +522,10 @@ uos.mount(vfs_obj, path) 挂载实体文件系统(如littleFS/FATFS等)到虚拟文件系统(VFS)。 -* 参数 +**参数描述** -| 参数 | 参数类型 | 参数说明 | -| ------- | ---------- | ---------------- | -| vfs_obj | vfs object | 文件系统对象 | -| path | str | 文件系统的根目录 | - -* 返回值 - -无。 +* vfs_obj,vfs object,文件系统对象 +* path,str类型,文件系统的根目录 **示例:** @@ -483,9 +534,9 @@ uos.mount(vfs_obj, path) >>> uos.mount(cdev, '/sd') ``` -**SD卡(SPI接口)使用示例: ** +**SD卡(SPI接口)使用示例:** ->目前仅EC600N/EC800N平台支持。 +> 目前仅EC600N/EC800N/EC600U/EC200U平台支持。 ```python >>> cdev = uos.VfsFat(1, 0, 4, 1) @@ -498,4 +549,3 @@ uos.mount(vfs_obj, path) >>> f.read() >>> f.close() ``` - diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" index dfd050e6..c7625bf8 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/urandom.md" @@ -12,6 +12,14 @@ urandom.choice(obj) 随机生成对象 obj 中的元素,obj 类型 string。 +**参数描述** + +* `obj`,str类型 + +**返回值描述** + +`obj`中随机某个元素,str + **示例**: ``` @@ -30,6 +38,14 @@ urandom.getrandbits(k) 随机产生一个在k bits范围内的十进制数。 +**参数描述** + +* `k`,int类型,表示范围(单位bit) + +**返回值描述** + +int类型,在k bits范围内的十进制随机数 + **示例**: ``` @@ -52,6 +68,15 @@ urandom.randint(start, end) 随机生成一个 start 到 end 之间的整数。 +**参数描述** + +* `start`,int类型,区间最小值 +* `end`,int类型,区间最大值 + +**返回值描述** + +int类型,在`start `到 `end` 之间的随机整数 + **示例**: ``` @@ -72,6 +97,10 @@ urandom.random() 随机生成一个 0 到 1 之间的浮点数。 +**返回值描述** + +浮点数,在0 到 1 之间。 + **示例**: ``` @@ -90,6 +119,16 @@ urandom.randrange(start, end, step) 随机生成 start 到 end 间并且递增为 step 的正整数。 +**参数描述** + +* `start`,int类型,区间最小值 +* `end`,int类型,区间最大值 +* `step`,int类型,递增长度 + +**返回值描述** + +int类型,在 `start `到 `end` 之间的随机整数 + **示例**: ``` @@ -110,6 +149,10 @@ urandom.seed(sed) 指定随机数种子,通常和其它随机数生成函数搭配使用。 +**参数描述** + +* `sed`,int类型,区间最小值 + **示例**: ```python @@ -117,7 +160,7 @@ urandom.seed(sed) >>> urandom.seed(20) #指定随机数种子 >>> for i in range(0, 15): #生成0~15范围内的随机序列 ... print(urandom.randint(1, 10)) -... +... 8 10 9 @@ -143,7 +186,14 @@ urandom.seed(sed) urandom.uniform(start, end) ``` -随机生成 start 到 end 范围内的浮点数。 +**参数描述** + +* `start`,任意实数类型,区间最小值 +* `end`,任意实数类型,区间最大值 + +**返回值描述** + +浮点数类型,在 `start `到 `end` 之间的随机整数 **示例**: @@ -214,4 +264,3 @@ if __name__ == '__main__': random_log.info(num) ``` - diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" index 670dc1f3..09511d64 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" @@ -13,7 +13,7 @@ - [atcmd - 发送AT指令](./atcmd.md) - [machine - 硬件相关功能](./machine.md) - [pm - 低功耗相关功能](./pm.md) -- [modem - 设备信息相关功能](./modem.md) +- [modem - 设备相关功能](./modem.md) - [quecgnss - 内置GNSS相关功能](./quecgnss.md) - [gnss - GNSS相关功能](./gnss.md) - [securedata - 安全数据区相关功能](./securedata.md) diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" index fd4a2fad..dee1a610 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/gnss.md" @@ -16,15 +16,6 @@ gnss.GnssGetData(uartn,baudrate,databits,parity,stopbits,flowctl) **参数描述** -| 参数 | 类型 | 说明 | -| :------- | :--- | ------------------------------------------------------------------------------------------------------------------------- | -| uartn | int | UARTn范围为0-3:
0-UART0 - DEBUG PORT
1-UART1 – BT PORT
2-UART2 – MAIN PORT
3-UART3 – USB CDC PORT | -| baudrate | int | 波特率,常用波特率都支持,如4800、9600、19200、38400、57600、115200、230400等 | -| databits | int | 数据位(5 ~ 8),展锐平台当前仅支持8位 | -| parity | int | 奇偶校验(0 – NONE,1 – EVEN,2 - ODD) | -| stopbits | int | 停止位(1 ~ 2) | -| flowctl | int | 硬件控制流(0 – FC_NONE, 1 – FC_HW) | - * `uartn`,int类型 UARTn范围为0-3: `0`-UART0 - DEBUG PORT diff --git a/docs/API_reference/zh/sidebar.yaml b/docs/API_reference/zh/sidebar.yaml index 062a2a92..50660c6f 100644 --- a/docs/API_reference/zh/sidebar.yaml +++ b/docs/API_reference/zh/sidebar.yaml @@ -34,6 +34,19 @@ items: file: QuecPython标准库/uhashlib.md - label: QuecPython类库 file: QuecPython类库/README.md + items: + - label: - 执行Python脚本 + file: QuecPython类库/example.md + - label: - 低功耗相关功能 + file: QuecPython类库/pm.md + - label: - 设备相关功能 + file: QuecPython类库/modem.md + - label: - 内置GNSS相关功能 + file: QuecPython类库/quecgnss.md + - label: - GNSS相关功能 + file: QuecPython类库/gnss.md + - label: - 安全数据区相关功能 + file: QuecPython标准库/securedata.md - label: QuecPython组件库 file: QuecPython组件库/README.md items: -- Gitee