Python 轻应用开发工具 amp-python¶
重要注意事项
本页面仅用来支持部分前期使用 amp-python 插件的开发者,新用户请使用 Python 轻应用开发工具 HaaS-Studio
后期我们不会继续维护 amp-python, 最新功能只会集成到 haas-studio 插件中。
前言¶
Python作为一种高级语言,借助于交互式解释器(Read Eval Print Loop:REPL)解释执行。这意味着其可以逐条执行,随时查看变量信息,这对在IoT设备上调试非常方便。 传统的调试方式都是先逐行调试相关功能,在一定阶段后将相关功能集成到一个Python文件,通过Python命令直接解析执行。 在集成调试阶段,我们经常会增加,删除,修改部分文件,并拷贝修改后的文件到SD卡上执行。 这虽然节省了编译时间,但是重复的插拔Sdcard为开发工作引入了额外的操作,如果能实现一键推送就好了。
借鉴alios-studio现有的交互功能,我们增加了针对Python轻应用的相关底层实现,重新打造了新的 VS code 插件amp-python(已经上传到VS Code插件市场), 实现Python轻应用工程创建,编译,上传和运行一站式的开发环境,极大地方便开发者的Python轻应用开发。
下面我们详细介绍一下新插件的原理,操作方式及新增特色功能。
1、工作原理¶
开发者首先选择创建工程,此时插件会从 轻应用市场 获取应用列表并展示在 VS Code 页面上。
开发者可以选择关心的应用并按照提示完成工程创建。插件后台会顺序执行下列操作:
1)下载并解压应用zip包到用户选择的工作台;
2)获取github仓库上的Python语法库,该语法库为Python开发提供自动补齐和高亮功能。
应用创建完成后,开发者可以编辑相关代码,编译工程以进行语法检测。
语法检测成功后通过串口实现本地更新,或者云端实现在线更新,将工程文件打包上传到HaaS设备的data分区或者Sdcard,最终触发Python文件的自动运行。
2、操作介绍¶
2.1 安装VS Code¶
开发者首先需要到微软的官方网站上下载 VS Code 安装包并进行安装,VS Code安装包要求不低于版本 1.57。
VS Code安装包下载网站为: https://code.visualstudio.com/
系统推荐
推荐 Windows 系统版本为 win10, MacOS 版本不低于 10.15。
2.2 安装插件¶
安装完 VS Code 之后,开发者按照下图的指示完成 amp-python 插件的安装。
如果用户之前安装过alios-studio插件,则会在 VS Code 状态栏出现如下所示的图标
我们建议你先关掉alios-studio插件。右键点击 status bar 的空白处,在弹出的选项列表里点击alios-studio即可。
2.3 按钮介绍¶
插件安装完成后,如果你当前的 VS Code 未打开任何工作台,则 VS Code 左下角的状态栏只会显示 新建工程 的图标:
如果你已经打开了某个工作台,则会在 VS Code 底部的状态栏显示如下一排按钮:
将鼠标悬浮在相关按钮即可显示该按钮的具体功能,各个按钮的功能如下:
从左到右依次为:
切换工程
创建工程
语法检测 (仅用于语法检测,编译产物不是最终运行文件)
推送并运行(打包文件并上传到设备并运行Python文件)
串口监控
清除
2.4 详细操作¶
2.4.1 创建工程¶
点击
创建工程
按键,会弹出轻应用市场上的Python工程。选择关心的工程
根据提示输入项目名称,点击回车使用应用名称(python_gpio)作为工程名称:
注意事项
文件夹不要有中文,空格及其他异常字符。
指定工程存放的路径,插件默认会推荐路径:
工程创建完成后,插件会自动打开工作台文件夹,点击 solutions 展开可以看到你同步下来的示例工程。
( 示例代码是针对 HaaS100 硬件设计的,如果想在 HaaS EDU K1 使用该示例代码,需要修改第7行的内容如下 ):
leds=("led_r", "led_g", "led_b")
2.4.2 语法检测¶
点击 语法检测
按钮即可实现对工程的语法编译。 这里的编译仅实现对Python文件的语法检测,其生成的pyc文件也不是最终设备运行时候使用的文件。
开发者可以直接跳过这一步操作。
2.4.3 推送并执行¶
Python支持文件解析执行,点击 推送并执行
按钮实行 Python 文件上传到设备端。目前支持两种推送方式:
串口本地更新
云端在线更新
开发者点击 推送执行
按钮后,会弹出如下的窗口让开发者选择,接下来我们分别介绍两种更新方式。
2.4.3.1 串口本地更新¶
之后会弹出如下所示的提示框及输出信息。 开发者 需要重启设备 完成更新及自动运行操作。
更新完成后,会在 .vscode
文件下生成 update.json 文件,文件记录了当前烧录模式及串口配置信息。后续更新操作会使用该文件里面的内容作为配置。
如果开发者的串口名称或波特率发生变化,可以直接修改内容;或者删除 update.json 文件,下次更新的时候会根据用户的输入重新生成该文件。
2.4.3.2 云端在线更新¶
开发者首先需要获取设备的 devicename, 并参考 3、申请token并绑定设备 申请token并绑定设备。
在获取kv值之前开发者需要连接网络。在命令行 CLI 模式下通过下面的命令连接 WiFi:
python /data/python-apps/wifi/main.py wifi_ssid wifi_password
联网成功后,输入下面的命令得到 devicename
kv get _amp_internal_devicename
命令执行后可以得到下面的输出:
value is haas_xxxxxxxxxxxxxxx
之后会弹出如下所示的提示框及输出信息,开发者 不需要需要重启设备,文件更新完成后会自动重启设备运行。
更新完成后,同样会在 .vscode
文件下生成 update.json 文件。开发者可以直接修改 mode 数值实现两种更新模式的切换:
1 表示串口本地更新
0 表示云端在线更新
3、文件推送¶
amp-python可以推送任意格式的文件,文件会被推送到设备的 /data/pyamp`路径。开发者仅需要把需要推送的文件放置到当前工程下,重新点击 ``推送并运行` 即可。
下图是以 board.json 文件为例,目前使用的工程为 python_gpio 。开发者只需要把配置文件放到工程目录下即可实现推送。 board.json 文件将被推送到 data/pyamp 文件夹下。
5、其他¶
1、目前串口终端和本地文件上传使用相同的terminal页面,所以如果插件功能有任何异常,请先关闭当前terminal。关闭后请重新触发相关操作。
2、如果在update的过程中遇到下面的提示,请重新插拔 USB 数据线并重新起送更新。
3、如果用户遇到下面的提示信息,则表明当前已经有一个 Python 引擎在运行中。
Python is running, cannot start another engine可以通过两种方式解决这个问题
在 CLI 模式下重命名 /data/pyamp/main.py 文件,譬如:
mv /data/pyamp/main.py /data/pyamp/main.py-bak
或者重新推送一个空的 main.py 文件到系统上,空的 main.py 文件中内容如下:
# -*- coding: UTF-8 -*- if __name__ == '__main__': print('Hello Python')