如何扩展Python轻应用编程接口¶
Python语言介绍¶
特点¶
Python是基于C++创造的,它们的区别主要体现在,C++效率高,编程难;Python效率低,编程简单。
MicroPython 和Python 的关系¶
MicroPython是Python3编程语言的精简高效实现,包括Python标准库的一小部分,并且经过优化,可在微控制器和受限环境中运行。
MicroPython 功能特点和资源占用¶
MicroPython包含了诸如交互式提示,任意精度整数,关闭,列表解析,生成器,异常处理等高级功能。
足够精简,适合运行在只有 256K 的代码空间和 16K 的RAM的芯片上(官网:https://micropython.org/)
适配¶
Python 适配涉及到的基础概念¶
netmgr,driver和 Python 的module 对应,ADC和 Python Class 相对应
可以只有module 的适配
Class 必须挂在module 下面
通过 Python 的 Module 进行关联¶
下面以 netmgr 功能作为 Module 方式关联C代码的例子讲解,代码路径:components/py_engine/mpy-adaptor/component/netmgr/modnetmgr.c
module结构变量定义:
模块对应的功能函数映射表:
具体的函数实现:
通过Python 的Module + Class 进行关联¶
下面以adc功能作为Module +Class 方式关联C代码的例子讲解,代码路径:
模块定义:
Driver 模块包含了多个Class 的定义,adc,dac,owm,spi 等. 映射表为:
ADC Class 定义:
ADC 功能映射表格定义:
函数实现:
Python 代码和C代码字符对应关系¶
根据上面的讲解,大家应该基本上可以了解适配的过程,但是模块名,类名,变量名,函数名的字符是 Python 和 C 是怎么关联起来的呢?
映射关系在代码中的呈现形式¶
C 层字符:
Python层字符:
是通过映射的脚本:
components/py_engine/mpy-adaptor/genhdr/gen_qstr.py
进行生成的, 生成的结果存放到文件:
操作方式:
目录结构¶
调试方法¶
开机默认会启动之前烧录进去的程序,打开串口工具,选择对应的串口设备,设置波特率为 1500000 并连接。
交互式调试¶
文件执行调试¶
命令行输入 python /data/python-apps/driver/led/main.py,执行led app
python /data/python-apps/driver/led/main.py效果:
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # -*- coding: UTF-8 -*- import utime from driver import GPIO # 初始化GPIO 类 gpio = GPIO() leds=("led1", "led2", "led3", "led4", "led5") for i in range(5): for led in leds: #open 函数支持的参数列表: led1, led2, led3, led4, led5 gpio.open(led) #点亮led gpio.write(0) utime.sleep_ms(200) #熄灭led gpio.write(1) utime.sleep_ms(200) gpio.close()