22.11.7.6 写入文件

从地址中读取定义字节数的数据,并将数据写入定义的文件。数据存储模式包括“新建”、“附加”或“覆盖”,如存储格式概况表中所示。

_CF_write/_SD_write/_USB_write (文件夹名称, 文件名, 读取源地址, 偏移, 字节数, 模式)

存储格式概述

模式

名称

描述

0

新建

创建一个新文件。如果存在一个具有相同名称的文件,它将被删除。

1

添加

向指定文件添加数据。如果指定文件不存在,将会创建一个新文件。

2

覆盖

覆盖部分文件。如果指定偏移大于文件大小,将用0填充剩余区域,并将数据写入该区的后面。如果将偏移指定为文件数据的末尾,就相当于向文件添加数据。如果文件不存在,则会发生错误。有关该错误的更多信息,请参阅22.11.7.7 标签设置

表达式示例:

[w:[#INTERNAL]LS0200] = 0 //偏移量(当模式为“新建”时为“0”)
[w:[#INTERNAL]LS0202] = 100 // 字节数 (100 bytes)。
[w:[#INTERNAL]LS0204] = 0   //模式(新建)。
_CF_write ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], [w:[#INTERNAL]LS0200],[w:[#INTERNAL]LS0202], [w:[#INTERNAL]:LS0204])

上例中,从LS0100中读取100字节的数据,以DATA0001.BIN为名保存在\DATA文件夹中。可以通过定义内部寄存器的偏移、字节数和模式间接定义字节数和模式。

用一个内部寄存器定义文件名

_CF_write ("\DATA", [w:[#INTERNAL]LS0100], [w:[#INTERNAL]LS0200], 0, 100, 0)

通过将文件名保存在LS0100中,可间接指定文件名。在本例中,按如下方式将文件名保存在LS0100至LS0106中。

例如,文本数据模式 = 1

上述表达式从LS0200中读取100字节的数据,并新建文件(“\DATA\DATA0001.BIN”)用于保存数据。

存储格式表达式示例

在上例中,从LS0100中读取100字节的数据,DATA0001.BIN文件刚在\DATA文件夹中创建。

如果指定文件(如例子中的DATA0001.BIN)已经存在且执行了上面的语句,会从LS0100和之后区域中读取100个字节的数据并将其写入\DATA文件夹中的DATA0001.BIN文件。

如果指定文件(如例子中的DATA0001.BIN)已经存在且执行了上面的语句,就会读取保存在LS0100和之后区域的10个字节的数据,并覆盖保存在\DATA文件夹下DATA0001.BIN文件中的偏移之后第17个及之后的10个字节的数据。

(将被覆盖的文件小于偏移值和增加字节数总和。)

指定文件(如例子中的DATA0001.BIN)已经存在且文件大小是100字节。如果为覆盖操作将偏移设置为96字节,字节数设置为10字节,会读取保存在LS0100及之后区域中的10字节数据。然后,前4个字节的已读取数据会覆盖保存在文件中的第97个及之后的4字节数据,剩余的6字节数据被添加到文件数据的末尾。最终文件就包含了106字节的数据。

(要覆盖的文件小于偏移值。)

指定文件(如例子中的DATA0001.BIN)已经存在且文件大小是100字节。如果为覆盖操作将偏移设置为110字节,字节数设置为10字节,则会用0填充第101字节和第110字节之间的区域,从LS0100及之后区域中读取的10字节数据会被写入第111字节及之后的字节中。最终文件就包含了120字节的数据。