天天看點

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

AliOS Things 3.3.0新版本中,其中非常中的一個特點,就是支援Python輕應用,也就是可以直接使用Python代碼來寫物聯網程式,并且控制軟體裝置。

這是HaaS物聯網裝置雲端一體Low Code開發架構的核心之一。

那本文講介紹如何給Python輕應用添加新的元件,比如之前Python應用中沒有操作ADC的元件,可以使用本文的方法去進行擴充适配,來增加這個ADC元件。

1、Python語言介紹

1.1、現狀

2021年1月熱門語言排行榜:Python榮獲TIOBE年度之星排在第三名.(排名逼近第二JAVA)

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

1.2、特點

Python是基于C++創造的,它們的差別主要展現在,C++效率高,程式設計難;Python效率低,程式設計簡單。

1.3、MicroPython 和Python 的關系

MicroPython是Python3程式設計語言的精簡高效實作,包括Python标準庫的一小部分,并且經過優化,可在微控制器和受限環境中運作。

1.4、MicroPython 功能特點和資源占用

MicroPython包含了諸如互動式提示,任意精度整數,關閉,清單解析,生成器,異常處理等進階功能。足夠精簡,适合運作在隻有256k的代碼空間和16k的RAM的晶片上(官網:

https://micropython.org/

)

2、适配

開發手冊:

https://g.alicdn.com/HaaSAI/PythonDoc/quickstart/index.html

2.1、Python 适配涉及到的基礎概念

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們
  • netmgr ,driver 和python 的module 對應,ADC 和python Class 相對應
  • 可以隻有module 的适配
  • Class 必須挂在module 下面

2.2 、Python 代碼和C 代碼關聯方式

Module 定義的入口檔案:components/py_engine/mpy-adaptor/system/mpconfigport.h

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

2.2.1、通過Python 的Module 進行關聯

下面以netmgr 功能作為Module 方式關聯C代碼的例子講解

代碼路徑:components/py_engine/mpy-adaptor/component/netmgr/modnetmgr.c

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

module結構變量定義:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

子產品對應的功能函數映射表:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

具體的函數實作:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

2.2.2、通過Python 的Module + Class 進行關聯

下面以adc功能作為Module +Class 方式關聯C代碼的例子講解

代碼路徑:

Module:components/py_engine/mpy-adaptor/system/moddriver.c

Class:components/py_engine/mpy-adaptor/system/driver/adc.c

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

子產品定義:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

Driver 子產品包含了多個Class 的定義,adc,dac,owm,spi 等. 映射表為:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

ADC Class 定義:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

ADC 功能映射表格定義:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

函數實作:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

2.3、Python 代碼和C代碼字元對應關系

根據上面的講解,大家應該基本上可以了解适配的過程,但是子產品名,類名,變量名,函數名的字元是python 和C 是怎麼關聯起來的呢?

2.3.1 、映射關系在代碼中的呈現形式

C 層字元:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

Python層字元:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

是通過映射的腳本:components/py_engine/mpy-adaptor/genhdr/gen_qstr.py 進行生成的, 生成的結果存放到檔案:components/py_engine/mpy-adaptor/genhdr/qstrdefs.generated.h

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

操作方式:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

3、目錄結構

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

4、調試方法

開機預設會啟動之前燒錄進去的程式,打開序列槽工具,選擇對應的序列槽裝置,設定波特率為1500000 并連接配接。

Python輕應用預設支援兩種運作模式: 互動式 和 檔案執行,在序列槽下輸入不同的指令進入不同的模式

4.1、互動式調試

指令行輸入python進入互動模式,在互動模式輸入python代碼,就能看到執行結果。鍵盤按下ctrl+d 退出互動模式

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

4.2 、檔案執行調試

指令行輸入python /data/python-apps/driver/led/main.py,執行led app

python /data/python-apps/driver/led/main.py

效果:

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們

示例代碼:

  1. # -*- coding: UTF-8 -*-
  2. import utime
  3. from driver import GPIO
  4. # 初始化GPIO 類
  5. gpio = GPIO()
  6. leds=("led1", "led2", "led3", "led4", "led5")
  7. for i in range(5):
  8. for led in leds:
  9. #open 函數支援的參數清單: led1, led2, led3, led4, led5
  10. gpio.open(led)
  11. #點亮led
  12. gpio.write(0)
  13. utime.sleep_ms(200)
  14. #熄滅led
  15. gpio.write(1)
  16. gpio.close()

5、加入我們

如何給Python輕應用添加新的元件:Python輕應用擴充适配介紹1、Python語言介紹2、适配3、目錄結構4、調試方法5、加入我們