名称 | 操作 | 版本 | 日期 | 说明 | 编辑 |
《文件流控件使用说明》 | 创建中 | V1.0 | 2019-01-17 | 第一次编辑完成,正式发布。 | lyh |
《文件流控件使用说明》 | 修订 | V1.1 | 2020-07-31 | 补充本控件中所有属性详解 | qjj |
【目录】
一、文件流控件-概述
3.1、控件属性描述
3.2、控件属性编辑
3.2.1、编辑属性
3.2.2、读属性
3.2.3、写属性
3.3 、属性详解
3.3.1、vscope属性
3.3.2、objname属性
3.3.3、id属性
3.3.4、type属性
3.3.5、val属性
3.3.6、qty属性
3.3.7、en属性
4.1、open方法
4.2、read方法
4.3、write方法
4.4、close方法
4.5、find方法
5.1、在页面上新建文件流控件
5.2、文件流控件实战使用
5.3、文件流控件使用过程中常见问题
1.1、文件流控件是串口屏诸多功能控件里面的其中一个。
1.2、用于在串口屏上系统文件操作。
1.3、在《USART HMI》软件左侧工具箱里面(如下图所示)。
注:仅X系列支持。
通过文件流控件实现自己的读写文件工程工程(如下图所示)。
事件下代码设计
页面事件
写入按钮
读取按钮
串口屏所有控件操作的实质都是对属性的修改。文件流控件具有的属性如下表所示。
如下图所示,当鼠标选中对应属性时,会在属性窗口的最下方出现该属性的详细描述信息。
用户可以随时调整、编辑列表中的属性参数。
注意:type和id属性由开发环境指定,用户不可修改。可通过软件左上角置顶置底间接操作。
如上图所示的控件属性列表,可以在设备运行中随时读取。
sys0=fs0.id 将文件流控件fs0的id号赋值给sys0变量 prints fs0.id,0 将fs0的id号从串口发送出去。
注意:objname属性不可以读取。比如在事件代码中写"t0.txt=fs0.objname"编译将报错。
所有绿色控件可以在运行中实时修改。
注意:因产品系列不同,属性的写权限也不完全相同。比如X系列可以在运行该过程中修改x,y属性。但是T0,K0系列不能在运行过程中修改x,y属性!
vscope属性。控件内存占用属性。控件支持私有属性。
objname属性。控件名称属性。该属性在运行中不能获取。
id属性。控件id是每个控件在当前页面的唯一标识号。由系统分配,不可修改。可通过软件左上角置顶置底间接修改。
type属性。控件类型属性。由系统分别固定数据,比如文件流控件属性为63。
val属性。此文件流当前数据指针(打开文件时恢复为0,读写操作过程中自动移动,支持手动设置)。
qty属性。文件大小(运行中根据实际打开的文件自动更新,只可获取不可设置)。
en属性。文件打开状态(只可获取不可设置)。
注:有文件被打开(open)的时候,en=1;没有文件打开的时候,en=0。
该方法为文件流控件独有的,对于其他控件不生效。使用方式类似于指令。
文件流包含相关方法软件存放位置
int open(string path)
path 文件路径如“sd0/aa.txt”
例:fs0.open("sd0/aa.txt") (打开sd0下aa.txt如果成功返回1 失败则返回0)
注 ①文件打开读写操作完成后一定要记得关闭文件,同一个文件在打开后,关闭之前,是不能被另外一个文件流控件打开的。
②文件每次打开,文件流属性val都会被赋值为0。
int read(object att,int star,int lenth)
att 变量名称
att star 变量(非文件地址)的起始地址(一般为0)
lenth 读入数据长度
例:fs0.read(va2.txt,0,100) (va2.txt读取打开的文件从0读到100) 读取成功返回1,失败返回0
注 ①起始地址不为0时,若读取文本地址也应不为0,且相对应得地址有数据 否则导致读到文本为空。
②读取要注意控件属性(txt_maxl),读取数据长度超过范围,则无法显示读取的内容。
例 有一个文件文本内容为“ABCDEF” fs0.read(va2.txt,1,2) va2.txt="12" 读到va2.txt=“1AB”。
此时读到文件数据是出现1的后面。如果1后面有别的数据,那么他们对应的位置会被替换掉。 读取完,文件流指针(val)加上数据长度(2)。
int write (object att,int star,int lenth)
att 变量名称
att star 变量(非文件地址)的起始地址(一般为0)
lenth 写入数据长度
例 fs0.write(va2.txt,0,100) (将va2.txt的字符内容写入当前打开的文件中) 写入成功返回1,失败返回0
注 ①写入完,文件流指针(val)加上数据长度(lenth)。
②star设置不为0时,写入变量的起始地址,不是文件的起始位置。
例:t0.txt="123456"
fs0.write(t0.txt,1,6) 此时写入"23456"加一个空格
例:fs0.close() 成功返回1,失败返回0
注 文件打开读写操作完成后一定要记得关闭文件,同一个文件在打开后,关闭之前,是不能被另外一个文件流控件打开的
int find(string key) 成功返回1,失败返回0
key 关键字字符串变量/常量
例:文件aa.txt内容为123
fs0.open("sd0/aa.txt")
s0.find("2") (查找文件中的"2",此时fs0.val为1)
注 从当前流的当前数据指针(val属性)位置开始查询关键字,如果查询成功,数据指针将会移动到关键字中第一个字符串:如果查询失败保持数据当前指针不变
![]() | |
1、打开一个新的空白界面▲ | 2、点击左侧<工具箱>里面的<文件流>按钮,当前页面左上角出现一个文件流▲ |
点击文件流控件,他就将会出现在特殊控件窗口。
操作sd文件步骤:
1.通过open方法打开文件
注:如果没有该文件将会报文件操作失败(06 FF FF FF)。
2.接下来可以通过write方法写入文件或者read方法读取文件
3.操作完文件后使用close方法关闭文件流
相关例程
素材说明:
将数据点通过文件流控件写入sd卡文件。
②通过文件浏览器以及文件流实现文件系统 点击下载
素材说明:
文件浏览器显示文件,文件夹。
文件流打开,读取文件显示在相应控件上。
相关方法 up方法
相关指令 newfile指令 newdir指令 deldir指令 redir指令 findflie指令 finddir指令 refile指令 redir指令 这些指令实现文件系统对文件的基本操作。
注:视频控件属性from设置外部文件
电脑是有虚拟sd卡文件夹 可以在电脑模拟和调试好之后 再下载屏上仿真。(存放路径:菜单栏—文件—虚拟sd卡文件夹)
①文件流read方法读取文件读出来为空。
可能原因:读取长度比文件大小还大导致读取失败。
解决办法:读取长度不要超过文件大小即属性qty。
②文件流find方法查找换行符"\r",读取文件它的下一个字符不正常。
可能原因:"\r"在屏幕里面存储的是0d 0a。
解决办法:fs0.val=fs0.val+2这样赋值就会正常。
END