1.3.3 Device Agent本地客户端

优质
小牛编辑
122浏览
2023-12-01

更新时间:2019-02-27 17:38:48

Device Agent简介

Hacklab IDE device agent是一个运行在本地开发机、将物理开发板通过浏览器连接到云端IDE开发环境的后台程序,接下来文档中的device agent就是指这个后台程序。

image

上图是云端IDE、Device Agent和设备之间运行时的关系示意,Device Agent和设备通过设备的串口进行通讯。Device Agent内置连接认证机制,确保每个用户的Device Agent只能连接到自己的云端IDE工作空间。

我们提供了可运行在64位Windows, Mac以及Linux上的Device Agent程序。接下来就介绍如何快速在本地机器上快速运行 Device Agent.

快速开始

下载Device Agent

访问Hacklab,用阿里云账号登陆成功后可以在IDE的状态栏上看到如下的Device Agent下载按钮,点击下载,IDE会根据你所使用的系统自动下载对应的版本的Device Agent程序。

download_agent

注意:从0.9.0版本开始,每个用户下载的Device Agent包中包含该用户对应IDE实例的唯一认证信息,因此请勿将该压缩包发送给其他人,该Device Agent只能由用于连接用户自己的IDE。

下载完毕后解压缩下载到本地的zip包。

启动Device Agent之前,打开IDE,查看其中的Device View (可通过菜单View中的Device进入),会看到如下界面:

no_agent

表示当前并无远程的Device Agent连接到IDE中。

启动运行Device Agent

解压后Device Agent目录如下(以Windows为例):

agent_win

接下来让我们运行Device Agent。

由于启动脚本使用相对路径调用Device Agent可执行程序,执行以下命令时,当前工作目录应当为agent解压后的根目录。

  • Linux/Mac用户:在Terminal中执行
$ cd <agent path>

# Mac
$ ./run-mac.sh

# Linux上为了访问硬件,可能需要以sudo权限运行该脚本
$ ./run-linux.sh
  • Windows用户: 在命令行中执行以下命令,或者也可直接双击run-win.bat批处理文件来启动。
cd <agent path>
.run-win.bat

Device Agent运行窗口将会运行,如下图所示(以Windows为例):

image

再次查看IDE中的Device View,本地设备管理Tab中状态已经从等待远程Device Agent连接变成已连接状态,如果本地开发机上还没有开发板接入,会显示如下:

image

连接开发板

将自己的开发板通过串口连接到开发机上,之后IDE中会显示该开发板信息,如下图例中所示:

board

你可以将开发板从本地开发机USB上做插拔操作测试一下,云端IDE现在可以实时检测到本地开发机上的设备连接状态了。

开发板的驱动程序根据使用的开发板需要提前安装,并且确保在使用IDE前,开发板本身已经能通过OS提供的功能查询到,Mac/Linux用户可以ls /dev检查,Windows用户通过设备管理器查看COM串口设备。

定制Device Agent显示名

Device Agent启动,开发板连接到IDE后,默认每个设备的Hostname显示Agent所在的主机名。为了方便开发者起一个对自己有意义的Agent名,例如在办公室运行的开发机上Agent启动后叫office,家里的机器Agent启动后显示home,可以通过将定制的agent名称参数--name xxxx保存在启动脚本中。

以Windows上的启动脚本run.bat为例,本地编辑改文件,将定制名称参数增加到启动命令后即可:

:: Copyright (C) 2017-present Alibaba Group Holding Limited

start "Hacklab Agent" .hacklab-agent-win-x64.exe start --name office

Device Agent连接Secret重置功能

用户通常不需要关心连接认证secret的,但是如果用户自己的device agent文件发生泄漏等,可以通过Hacklab菜单中提供的Reset Agent Secret功能重置连接认证信息。在重置之后,原有的Agent已经无法通过重置前的认证信息连接IDE,需要重新下载新的Device Agent。

reset_secret