使用Python开发鸿蒙设备程序(0-初体验) 原创 精华

唐佐林
发布于 2020-11-26 22:32
浏览
15收藏

到目前为止,鸿蒙设备开发的“官方指定语言”还是C语言!

 

这看起来是一件正常的事,毕竟鸿蒙设备开发还是属于嵌入式开发的范畴,而在嵌入式开发中C语言又是当之无愧的首选,所以,大家也都接受了这个现实。。。。。。。

 

上周末,有幸能和华为的大佬们进行面对面交流(其实我是去抱大腿的),我们都一致认为:如果设备开发能支持更简洁的开发方式(如:简单的语言,简单的开发环境),相信会有更多的开发者加入。。。

 

那么现在,有没有一种语言,受众面很广又简单易学呢?

 

当然是有的,相信你已经知道了,就是 Python !

使用Python开发鸿蒙设备程序(0-初体验)-鸿蒙开发者社区

这几年 Python 借助 AI 的兴起而进入大众视野,她的简单易学深受欢迎,很多小学生都能够用她来编程了。

所以,一个看起来很疯狂的想法从我大脑蹦了出来:如果鸿蒙设备开发可以用 Python ,那么肯定能降低学习门槛,吸引更多的开发者。。。

 

于是,说干就干。。。

 

我先调研了目前的各种Python实现(Python是开源的,可以通过源码了解实现),发现公版 Python 和 MicroPython 都可以是我的起点(baseline),毕竟我没有必要照着 Python 规范写一个解释器出来!然而,困难还是有的,这两种实现都有非常多的依赖,而且设计目标又分别不同:公版 Python 是一个大而全的系统(解释器,库,等等),目标是只要资源丰富爱怎么玩就怎么玩;MicroPython 从公版 Python 剪裁而来,并做了扩展,基本定义成了一个微型嵌入式设备上的操作系统。

 

那么,怎么开始呢,做选择真的很难啊!!!!

 

我开始整理思路,我想干什么?!之后有了下面的架构图。

使用Python开发鸿蒙设备程序(0-初体验)-鸿蒙开发者社区

很显然,我想的是提供鸿蒙设备开发的其它方式,而不是用 Python 替换 C 语言!所以,我的第一个里程碑(milestone)是获得一个可以在鸿蒙设备(Hi3861)上运行的 Python 解释器!有了这个 Python 解释器,接下来就是设计 Python 版的鸿蒙系统开发接口了。。。

 

确定了目标之后,接下来的问题就是:究竟是用公版 Python 开刀还是用 MicroPython 开刀?

 

通过两者代码的对比阅读,我发现 MicroPython 居然在解释器部分对公版 Python 也做了剪裁。。。这,为什么啊??? 我暂时也没有确切答案,不过从代码实现可以看出 MicroPython 是为了适配更多低配置的硬件而做了取舍!那显然,很多东西人家都考虑过了!我想着目前鸿蒙设备的定位也是低配硬件,那么用 MicroPython 开刀看起来更合适。

 

=========== 华丽的分割线 Begin ===========

 

通过 2 天的手术的改造,能够运行的版本(DTPython)就有了!!

 

使用方式如下:

1. 下载文末附件中的 libdtpython.a,并将其拷贝到 \code-1.0\vendor\hisi\hi3861\hi3861\build\libs 目录下,如图:

使用Python开发鸿蒙设备程序(0-初体验)-鸿蒙开发者社区

2. 【可选】编写 Python 代码(目前未提供任何库支持),并使用文末附件中的 Txt2Str 工具将其转换为 C 字符串,用法如下:

使用Python开发鸿蒙设备程序(0-初体验)-鸿蒙开发者社区

说明:

  • Txt2Str 将 Python 代码用 C 字符串的形式存储到 C 文件中(如上图中的 test.c)
  • 将转换得到的 C 文件加入工程中即可在 C 代码中使用 Python 代码(可参考文末附件中的示例)

 

注意:目前还没有简单的方法直接将 Python 源文件烧写到设备中,因此才需要上述步骤。

 

3. 在设备开发中使用 Python 代码,示例如下:

使用Python开发鸿蒙设备程序(0-初体验)-鸿蒙开发者社区

4. 运行结果如下:

使用Python开发鸿蒙设备程序(0-初体验)-鸿蒙开发者社区

 

=========== 华丽的分割线 End ===========

 

后记:

目前仅仅能够运行基本的 Python 代码,大概率还存在很多需要解决的问题。

希望大家都来试玩我的这个方案,多找Bug,多提Issue。

 

现阶段的代码乱一坨,实在不好意思拿出来丢人现眼,基本功能稍微稳定些,直接开源!!!

 

Enjoy It !

 

下一篇:

使用Python开发鸿蒙设备程序(1-GPIO外设控制)

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
Txt2Str.zip 3.68K 453次下载
dt_python_demo.zip 2.32K 419次下载
libdtpython.zip 165.19K 455次下载
已于2021-9-9 22:41:28修改
30
收藏 15
回复
举报
16条回复
按时间正序
/
按时间倒序
鲜橙加冰
鲜橙加冰

上周末跟人说可以看一下,这周就实现了。

鸿蒙系统上的Python第一人!

回复
2020-11-26 22:47:46
wx5b361edf0619c
wx5b361edf0619c

大牛请收下我的膝盖。这么低内存的嵌入式设备都能python了。

回复
2020-11-26 22:51:53
HMFanXinhao
HMFanXinhao

唐老师这速度太快了,牛!

回复
2020-11-26 23:12:55
Python编程与实战
Python编程与实战

您好,可以申请转载吗?会注明来源和原文链接

回复
2020-11-27 09:25:38
狄泰Damon
狄泰Damon 回复了 Python编程与实战
您好,可以申请转载吗?会注明来源和原文链接

可以的,欢迎申请转载,大家一起来打造

回复
2020-11-27 09:48:31
jiecho
jiecho

可以,唐老师又开辟了一块新的领域。

回复
2020-11-27 10:16:05
wg_caddBjEB
wg_caddBjEB

这是一篇可以炸街的文章👍

回复
2020-11-27 10:18:28
longlong899
longlong899

这篇文章太🐮🍺!!

回复
2020-11-27 10:39:58
FrostyRiver
FrostyRiver

👍 

回复
2020-11-27 16:18:09
卫斯理
卫斯理

最近社区好内容真的不少,最近几期公开课全报名了https://harmonyos.51cto.com/activity/23

回复
2020-11-27 18:24:56
jkfox
jkfox 回复了 卫斯理
最近社区好内容真的不少,最近几期公开课全报名了https://harmonyos.51cto.com/activity/23

别问,问就是已报名哈哈哈哈

回复
2020-11-27 18:35:30
wx5fc5f805205de
wx5fc5f805205de

这个事官方来做比较好,可以长期维护。建议官方开放模板接口。

回复
2020-12-1 16:15:47
wx5e7ea2655d419
wx5e7ea2655d419

他也人特人

回复
2020-12-18 11:30:34
ap1689
ap1689 回复了 狄泰Damon
可以的,欢迎申请转载,大家一起来打造

博主唐老师,你好!请考虑建一个QQ群,方便大家互相交流,一起来打造,请回复,谢谢!

回复
2020-12-24 11:39:31
SummerRic
SummerRic 回复了 ap1689
博主唐老师,你好!请考虑建一个QQ群,方便大家互相交流,一起来打造,请回复,谢谢!

社区有官方用户微信群哦。

已于2020-12-24 11:57:01修改
回复
2020-12-24 11:56:32
狄泰Damon
狄泰Damon 回复了 ap1689
博主唐老师,你好!请考虑建一个QQ群,方便大家互相交流,一起来打造,请回复,谢谢!

可以到QQ上搜索狄泰软件学院

回复
2020-12-28 18:49:42
回复
    相关推荐