zl程序教程

您现在的位置是:首页 >  后端

当前栏目

脱离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传输到板子上

下面我们手动来完成这几个步骤:

  1. 激活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."
  1. 打包文件
    我创建了一个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