Skip to content

作业文件传输

用于无作业文件指令运行,向作业文件里插入指令,请使用 0x3121

0x3001 FILE_INSTRUCTION

示教器发送作业文件指令时使用此命令。

json
{
    "robot": 1,      // 机器人号
    "cmd->toJson()" // 指令json列表
}

作业文件收发过程

场景一:控制器中的作业文件少于示教器,则需要示教器向控制器上传作业文件

步骤 1:示教器向控制器发送获取控制器 ID 指令

0x5052 IDENTIFY_NUMBER_INQUIRE

控制器回复:0x5053 IDENTIFY_NUMBER_RESPOND

json
{
    "controllerID": "4DC9F0249098C82E" // 控制器ID
}
参数类型描述
controllerIDstring控制器ID

获取到连接的控制器ID之后,在同步作业文件时需判断此ID是否已知。已知则判断路径 dir/controllerID 是否存在,若存在则不做操作;若不存在则创建工作文件路径,格式:dir/controllerID/robotJob/R1。多个机器人则表示 R1-4。

步骤 2:示教器向控制器发送获取作业文件列表指令

0x5532 JOBFILE_LIST_INQUIRE

控制器回复:0x5533 JOBFILE_SUM_RESPOND

json
{
    "absolutepath": ["/job/R1/", "/job/R2/", "/job/R3/", "/job/R4/"], // 作业文件的文件夹列表
    "jobfilenum": [2, 33, 233, 666]                                   // 作业文件夹中包含的文件个数
}
参数类型描述
absolutepatharray作业文件的文件夹列表
jobfilenumarray各作业文件夹中包含的文件个数

此时开启停止下载计时器,设定5秒,作用为判断下载文件过程中是否等待超时。

步骤 3:控制器主动向示教器发送作业文件列表

0x5534 JOBFILE_LIST_RESPOND

json
{
    "robot": 1,
    "listnum": 2, // 最多10个
    "jobfilelist": [
        {
            "name": "xxx.JBR", // 作业文件名字
            "MD5": "123"       // MD5值,用于判断文件是否相同
        },
        {
            "name": "yyy.JBR",
            "MD5": "132"
        }
    ]
}
参数类型描述
robotint机器人号
listnumint列表数量,最多10个
jobfilelistarray作业文件列表

控制器回复的参数作用是于本地的作业文件作比较。若文件相同,判断MD5值是否相同,若MD5值相同则不做处理,不同则需要删除本地文件并重新下载。记录需要下载的文件:文件名和路径存储在下载作业文件列表中(加绝对路径),若文件不同,也需记录需要被下载的文件到列表中。

步骤 4:文件传输连接

关于文件下载与上传,需要示教器连接 5000 端口进行文件传输(指令等命令传输走 6000 端口)。

步骤 5:示教器与控制器文件传输网络已连接,开始进行文件传输

步骤 6:示教器发送需要上传的作业文件的名字与大小

0x5501 REQUEST_UPLOAD_FILE

json
{
    "name": "vxWorks", // 示教器发送文件的文件名
    "size": 4096       // 示教器发送文件的大小
}
参数类型描述
namestring示教器发送文件的文件名
sizeint示教器发送文件的大小

示教器开始请求上传文件,等待控制器回复。

步骤 7:控制器回复是否同意上传

0x5502 REQUEST_UPLOAD_RESPOND

json
{
    "answer": "yes" // "yes" 表示同意上传文件请求,"busy" 表示控制器忙碌
}
参数类型描述
answerstringyes=同意上传,busy=控制器忙碌

步骤 8:示教器接受 "yes" 开始发送文件

0x5512

文件写入二进制流,采取切片循环发送,若剩余文件大小超过规定数值(2*1024),则每次发送规定数据大小,直到剩余文件大小小于规定的每次发送数据大小,将剩余文件数据发送完毕。

步骤 9:控制器接收文件完毕

0x5513 RECEIVE_UPLOAD_FINISH

json
{
    "finish": true // 等待下载计时器停止,导入新上传文件
}
参数类型描述
finishbooltrue=等待下载计时器停止,导入新上传文件

步骤 10:若有多个作业文件需要同步到控制器中则需要重复步骤 6~9


场景二:控制器中的作业文件多于示教器,则需要示教器向控制器下载作业文件

1~5 上传下载一样通信,示教器与控制器文件传输网络已连接,开始进行文件传输。

步骤 1:示教器向控制器发送获取控制器 ID 指令

0x5052 IDENTIFY_NUMBER_INQUIRE

控制器回复:0x5053 IDENTIFY_NUMBER_RESPOND

json
{
    "controllerID": "4DC9F0249098C82E" // 控制器ID
}
参数类型描述
controllerIDstring控制器ID

获取到连接的控制器ID之后,在同步作业文件时需判断此ID是否已知。已知则判断路径 dir/controllerID 是否存在,若存在则不做操作;若不存在则创建工作文件路径,格式:dir/controllerID/robotJob/R1。多个机器人则表示 R1-4。

步骤 2:示教器向控制器发送获取作业文件列表指令

0x5532 JOBFILE_LIST_INQUIRE

控制器回复:0x5533 JOBFILE_SUM_RESPOND

json
{
    "absolutepath": ["/job/R1/", "/job/R2/", "/job/R3/", "/job/R4/"], // 作业文件的文件夹列表
    "jobfilenum": [2, 33, 233, 666]                                   // 作业文件夹中包含的文件个数
}
参数类型描述
absolutepatharray作业文件的文件夹列表
jobfilenumarray各作业文件夹中包含的文件个数

此时开启停止下载计时器,设定5秒,作用为判断下载文件过程中是否等待超时。

步骤 3:控制器主动向示教器发送作业文件列表

0x5534 JOBFILE_LIST_RESPOND

json
{
    "robot": 1,
    "listnum": 2, // 最多10个
    "jobfilelist": [
        {
            "name": "xxx.JBR", // 作业文件名字
            "MD5": "123"       // MD5值,用于判断文件是否相同
        },
        {
            "name": "yyy.JBR",
            "MD5": "132"
        }
    ]
}
参数类型描述
robotint机器人号
listnumint列表数量,最多10个
jobfilelistarray作业文件列表

控制器回复的参数作用是于本地的作业文件作比较。若文件相同,判断MD5值是否相同,若MD5值相同则不做处理,不同则需要删除本地文件并重新下载。记录需要下载的文件:文件名和路径存储在下载作业文件列表中(加绝对路径),若文件不同,也需记录需要被下载的文件到列表中。

步骤 4:文件传输连接

关于文件下载与上传,需要示教器连接 5000 端口进行文件传输(指令等命令传输走 6000 端口)。

步骤 5:示教器与控制器文件传输网络已连接,开始进行文件传输

步骤 6:示教器开始发送列表中的作业文件名称

0x5504

json
{
    "name": "job/R1/WWWWW.JBR" // 需要下载的作业文件名称
}
参数类型描述
namestring需要下载的作业文件名称(包含路径)

参数 name 是作业文件在控制器中的作业文件路径加上名字。在 0x5533 和 0x5534 中控制器有向示教器发送路径和名字。示教器提示开始同步作业文件。

步骤 7:控制器回复

0x5505

json
{
    "answer": "yes",             // 控制器是否同意下载
    "name": "job/R1/WWWWW.JBR",  // 需要被下载的作业文件名称
    "size": 217                  // 此作业文件的大小
}
参数类型描述
answerstring控制器是否同意下载
namestring需要被下载的作业文件名称
sizeint此作业文件的大小

步骤 8:控制器主动发送

0x5522

步骤 9:查看示教器是否接收参数成功

0x5523

json
{
    "finish": true // 示教器接收成功
}
参数类型描述
finishbool示教器接收成功

以上过程代表一个作业文件下载完成。若有多个作业文件需要下载,则在 0x5534 中存入的列表减一,继续重复以上过程。