阅读( 231 ) 我要纠错

8.1.2、写文件

在发送该命令前请先发送开始写文件命令,以判断是否有足够空间存储该文件。该命令用于发送文件数据到控制器,如果文件大小不超出控制器接收缓冲区(6代字库卡最大为1024Byte, 5代字库卡最大为 512Byte)的大小,可以单包发送。如果已经超出接收缓冲区大小,则必须分包发送,分包大小可以自行定义。

参数

数据长

默认

描述

CmdGroup

1

0XA1

命令分组编号

Cmd

1

0x06

命令编号

Response

1

0x01

是否要求制器回复:

0x01控制器必须回复

0x02控制器不必回复。

Reserved

2

0

保留

FileName

4


文件名,参考节目文件格式

LastBlockFlag

1

0x00

用于标志是否最后一包 0x00 不是最后一包

0x01 最后一包。

BlockNum

2


包号,如果是单包发送,则默认为0x00

BlockLen

2


包长,若是单包发送,此处为文件长度。

BlockAddr

4


本包数据在文件中的起始位置,如果是单包发送,此处默

认为 0。

Data

N


文件包数据,参考目文件格式

 

控制器接收完最后一个Block后,需对整个文件进行CRC16校验,如校验错误则返回ERR_FILE_CRC16错误。控制器接收完一个文件后,如校验出现错误(ERR_FILE_CRC16,ERR_FIRMWARE_TYPE)控制器会自动删除此文件。如BlockAddr出错,即BlockAddr不连续则返回ERR_FILE_BLOCK_NUM错误状态 和即将要写的块地址。返回值为:

参数

数据

长度

默认值

描述

CmdGroup

1

0xA1

命令分组编号

Cmd

1

0x06

命令编号

CmdError

1


命令处理状态

Reserved

2

0

保留

BlockAddr

4


包地址,如果当前包成功接收则返回下一包的文件地址,否则返回当前包的文件地址。

命令示例7

A5 A5 A5 A5 A5 A5 A5 A5 FE FF 00 80 00 00 00 00 00 00 FE 02 59 00 A1 06 01 00 00 50 30 30 30 01 00 00 47 00 00 00 00 00 00 50 30 30 30 47 00 00 00 FF 00 00 01 FF FF FF FF FF FF FF FF 01 00 00 01 2C 00 00 00 00 00 80 00 00 80 80 20 00 FF 00 00 00 00 00 00 00 02 02 02 00 0A OA OD 00 00 00 BB B6 D3 AD B9 E2 C1 D9 4F 6E 62 6F 6E OF 18 EC FO 5A

相应写命令发送后,控制卡返回ACK后,发送命令7。命令7为发送的节目1的内容,节目名为P000 体分析见下表。

 

 

参数

数据

描述

命令分组

A1

命令分组编号

命令

06

命令编

控制器是否回复

01

需要回复

保留字

00 00

2个保留字节

文件名

50303030

文件名

是否最后包

01

最后一

00 00

包号

包长

47 00

包长(低位 在前)

包位置

00 00 00 00

包位置默认为0

00 50 30 30 30 47 00 00 00 FF 00 00 01 FF FF FF FF FF FF FF FF 01 00 00 01 2C 00 00 00 00 00 80 00 00 80 80 20 00 FF 00 00 00 00 00 00 00 02 02 02 00 0A 0A 0D 00 00 00 BB B6 D3 AD B9 E2 C1 D9 4F 6E 62 6F 6E0F 18

文件包数据, 参考节目文件格式

 


×