脱离HaaS Studio调试老版本HaaS100 Python轻应用项目
2023-09-11 14:21:25 时间
HaaS官方在HaaS Studio 2.0之后移除了对HaaS100的支持,除了API的大幅改动,原有的HaaS100项目代码也不能从HaaS Studio 2.0以上的版本部署上传到板子了。新项目也不建议使用HaaS100,本文只是作为一个记录,以免以后浪费时间。毕竟手里还有3块HaaS100开发板…
由于一些原因我还需要使用HaaS100临时做一个东西,所以如何在这种情况下将代码部署到板子上去就是个问题。
首先直接在HaaS Studio 2.0+版本打开旧项目上传是不行的。于是我将HaaS Studio 回退到当时创建项目的旧版本,然后从旧版HaaS Studio创建新项目,将原先的代码复制粘贴到新项目中,从HaaS Studio底部快捷工具栏点击上传的时候还是一堆报错。
然后我想到旧项目开发的时候,我为了提高效率实际上做了几个命令行alias来实现代码的打包上传。于是找出了当时的alias,解决了代码打包上传到HaaS100的问题。
首先我们要分析一下HaaS100 Python轻应用项目代码部署的大致流程。这个流程实际上可以从旧版的HaaS Studio终端窗口看到。基本上是如下的流程:
- 激活miniconda的虚拟环境
- 项目文件打包到
upgrade/pyamp.zip
- 通过
.utility/python/transymodem.py
脚本将pyamp.zip
传输到板子上
下面我们手动来完成这几个步骤:
- 激活miniconda虚拟环境:
新建一个终端窗口,输入如下命令:
source ~/.aliot/miniconda3/bin/activate ~/.aliot/miniconda3/envs/_aos_env ; export PATH="~/.aliot/miniconda3/envs/_aos_env:~/.aliot/miniconda3/envs/_aos_env/bin:$PATH" ; echo "=> set miniconda env finished."
- 打包文件
我创建了一个python脚本pack.py
,只需要python pack.py 项目名称
即可完成打包,脚本内项目文件夹需要自行修改,你也可以自行修改代码,把参数修改为项目绝对路径。
其中对音频资源文件的处理请酌情根据情况自行修改。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os,sys,time
from zipfile import *
import zipfile
filepath = '~/haas100/upgrade/pyamp.zip'
filepath = os.path.expanduser(filepath)
if os.path.exists(filepath):
os.remove(filepath)
print('删除旧文件')
project_name = sys.argv[1]
startdir = "~/haas100/solutions/{}".format(project_name)
startdir = os.path.expanduser(startdir)
print('打包文件 %s'%startdir)
def packfile():
global startdir
f = zipfile.ZipFile(filepath,'w',zipfile.ZIP_DEFLATED)
for dirpath, dirnames, filenames in os.walk(startdir):
for filename in filenames:
if (filename == 'main.py' or filename == 'board.json'):
f.write(os.path.join(dirpath, filename), arcname=filename)
if (filename == "connected.wav" or filename == "poweron.wav" or filename == "aliyunconnected.mp3"):
f.write(os.path.join(dirpath, filename), arcname='resource/{}'.format(filename))
f.close()
def zipDir(dirpath,outFullName):
zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED)
for path,dirnames,filenames in os.walk(dirpath):
# 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
fpath = path.replace(dirpath,'')
for filename in filenames:
if (filename == 'main.py' or filename == 'board.json' or filename == "connected.wav" or filename == "poweron.wav" or filename == "aliyunconnected.mp3"):
zip.write(os.path.join(path,filename),os.path.join(fpath,filename))
zip.close()
def TimeStampToTime(timestamp):
timeStruct = time.localtime(timestamp)
return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct)
def get_FileSize(filePath):
# filePath = filePath.encode('UTF-8')
fsize = os.path.getsize(filePath)
print('fsize:%d'%fsize)
fsize = fsize/float(1024)
return round(fsize,2)
def get_FileCreateTime(filePath):
# filePath = filePath.encode('UTF-8')
t = os.path.getctime(filePath)
return TimeStampToTime(t)
#输出文件的基本信息
packfile()
print('文件路径:',filepath)
print("文件大小:%d KB"%get_FileSize(filepath),end=' ')
print("创建时间:",get_FileCreateTime(filepath))
运行效果:
3. 部署上传pyamp.zip
文件。
这里我们需要调用旧项目
文件夹下的.utility/python/transymodem.py
文件。具体路径请根据自己的旧项目
文件夹自行修改,串口也需修改为自己设备上的串口。本例为macOS识别到的串口名称。
python ~/workspace/aos-works/.utility/python/transymodem.py -d /dev/cu.usbserial-1410 -b 1500000 /Users/simonliu/haas100/upgrade/pyamp.zip
看到提示复位板子即可。
上传成功后,可使用新版的HaaS Studio串口工具查看,或者直接命令行:
python -m serial.tools.miniterm /dev/cu.usbserial-1410 1500000
相关文章
- 【Python成长之路】python 基础篇 -- 装饰器【华为云分享】
- 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
- Python视觉深度学习系列教程 第三卷 第11章 车辆识别
- Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
- Python编程:利用python编程实现对基于时间序列的数据(dataframe格式)按照指定时间范围进行单方向关联,不存在的日期补充为默认的NaN
- Python语言学习:python语言代码调试—异常处理之详细攻略
- Python:Python技巧之80个经典题——课程笔记(二)
- 〖Python WEB 自动化测试实战篇③〗- python-selenium环境配置搭建
- 创建Python程序
- 【LeetCode Python实现】119. 杨辉三角 II(中等)
- Python编程:sh模块执行shell命令
- Python 23种设计模式全(python例子)
- python '%r'或者'{!r}'的意思
- Python中os与sys两模块的区别
- 使用Android Studio build tensorflow/examples/android——直接用android studio即可
- python基础===八大排序算法的 Python 实现
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
- 【python】Python实现网络爬虫demo实例
- 【Python】3.python实现图片上传到阿里云OSS