《基于Python鴻蒙開發板外設控制》直播圖文及答疑
在鴻蒙設備上 Python 以原生 App 的形式存在,其職責是執行 Python 腳本文件,并把對設備操作的請求傳遞到鴻蒙系統,由系統執行具體的操作,進而達到“使用 Python 語言操作設備”的目的。


目前由于代碼版本差異和硬件廠商的定制化差異,Python 框架需要進行適配才能按照預期的方式運行(詳細適配步驟后續會以文檔方式給出)。隨著持續開發,最終適配好的版本可以完全屏蔽 C 語言的開發方式,使用 Python 實時對代碼進行解釋執行。

Python 框架以靜態庫的形式提供,因此可通過 API 將 Python 代碼集成到 C 源碼中。同時,也是因為這些 API 的存在,后續我就可以開發專用的 Python 任務,動態解釋執行 Python 代碼。如何動態執行?嗯。。。 REPL 在路上了!!!

這是一個多文件 Python 腳本示例。目前在開發板上支持了多個 Python 文件的相互依賴,比如:test.py 調用 another.py 中的代碼。對于熟悉 Python 編程的同學來說這本身是一件很正常的事,然而,在鴻蒙 L0 級別的設備(資源受限設備)中需要花一些功夫定制支持這個特性。





Python 接口提供了 GPIO 編程的能力,詳見帖子《使用Python開發鴻蒙設備程序(1-GPIO外設控制)》。




Python 接口提供了 I2C 編程的能力,詳見帖子《使用Python開發鴻蒙設備程序(2-I2C應用實例)》。
直播答疑:
1. Python 也很容易讀,與 C 比較哪個更容易?
答:從語言的角度,Python 比 C 更容易學習和掌握,因此使用 Python 開發設備的難度要比使用 C 語言低很多,簡而言之就是:使用 Python 更容易上手。
2. 唐老師,這個 Python 引擎是你自己開發的嗎?
答:這個 Python 框架的語言解釋器取自 MicroPython-v1.13 。我在解釋器的基礎做了鴻蒙系統的適配進而可以進行設備開發。Python 解釋器不是我開發的,但是整個 Python 框架是我設計開發的,包括后續的一些列工具鏈,也會由我開發完成。
3. 老師回調函數怎么支持多參數?
答:Python 版本的回調函數參數可以是對象,比如:list 對象。因此,只要把需要的多個參數存入一個 list 對象,然后將這個 list 對象作為回調參數使用即可。
4. import gpio 能否改成類似樹莓派的導入 import RPi.GPIO ,比如 import HOS.GPIO,這樣在未來能知道是鴻蒙的 gpio 庫。
答:這個 Python 框架專為鴻蒙 L0 設備開發的,沒有移植到其它系統的打算。所以,所有庫都是為鴻蒙而開發的。另外,大家現在看到的接口都只是我設計規劃中的底層 Python 接口,使用上還稍顯繁瑣;后續,我會開發上層面向對象的接口,使用起來更加的輕松愉快。
5. 老師,不能實時執行 Python 嗎?
答:可以,相關接口已經提供了,如:DTPython_RunCode(const char* code) ,只需要開發一個 REPL 命令行工具就可以有實時執行 Python 代碼的體驗了,而這個 REPL 命令行工具的開發稍后會啟動。
6. 唐老師,支持 Pygame 或 Turtle 嗎?結合外設可以做非常炫酷的外設硬操作游戲或傳感,呈現一體的軟件。
答:鴻蒙 L0 設備的能力比較有限,目前主要作為數據采集器以及外設主控板使用,沒法做太多炫酷的東西,并且這類庫對資源需求大,L0 設備沒法支持。如果真要做這類東西,可以考慮富鴻蒙設備(如:Hi3516),在這類設備上可以實現很多炫酷效果。
7. GPIO 底層是調用 OHOS 什么接口?
答:Python 中的 GPIO 接口會適配到鴻蒙本地 GPIO 接口上,即:最終調用 iot_gpio.h 定義的函數。
8. Python 鴻蒙如何實現遠程升級?
答:如果是升級 Python 代碼,那么直接遠程下載 Python 文件即可實現升級。
9. 發布產品后,如何保證 Python 源代碼不外泄?
答:Python 源碼最終存儲于設備的 Flash 中,最終的產品只要不提供對外的調試接口,那么就沒法直接拿到源碼,除非強制對產品進行逆向才有可能。當然,可以考慮采用加密 Python 源碼的方式防止外泄。
10. 鴻蒙開發有沒有什么低成本的深度學習視覺開發板?Hi3516 價格 1000 左右有點貴,別家同類開發板比要便宜很多,比如K210只要200左右。
答:目前支持視覺的富鴻蒙開發板確實只有 Hi3516 一種,但是隨著適配鴻蒙的硬件廠商越來越多,相信適合大家使用的高性價比視覺開發板會陸續出現。
文章相關附件可以點擊下面的原文鏈接前往下載
https://harmonyos.51cto.com/resource/1265