当前位置: 首页 > news >正文 深圳专业专业网站建设公司前端公众号开发 news 2025/10/31 17:10:01 深圳专业专业网站建设公司,前端公众号开发,2016年网站推广方法,深圳宝安区网站建设今天继续我们的小白教程#xff0c;老鸟就不要在这浪费时间了#x1f60a;。 前面一期我们介绍了CODESYS的文件操作库CAA File。这一期主要介绍CODESYS的SysFile库所包含的文件读写功能块#xff0c;主要包括文件路径、名称、大小的获取以及文件的创建、打开、读、写、拷贝…今天继续我们的小白教程老鸟就不要在这浪费时间了。 前面一期我们介绍了CODESYS的文件操作库CAA File。这一期主要介绍CODESYS的SysFile库所包含的文件读写功能块主要包括文件路径、名称、大小的获取以及文件的创建、打开、读、写、拷贝和删除功能等。 一、SysFile库简介 与上一期介绍的目录和文件操作库CAA File不同SysFile属于CODESYS比较底层的库其中结构和功能块的定义与C语言非常接近。使用该库需要在“库管理器”中添加SysFile库这里使用的是3.5.15版本。 需要注意的是SysFile库中所有功能均为函数FUNCTION与CAA File库中的功能块FUNCTION_BLOCK是不同。函数可以直接使用而功能块需要先声明后使用。因为CODESYS的函数内部的变量在运行后是不会保留的这个与功能块是不同。使用的时候要分清楚避免因为初始状态不同导致的问题。 二、SysFile库的主要功能块 提供对运行时系统的文件功能的访问。仅能进行文件相关的操作。 1.基本定义 1文件访问模式ACCESS_MODE 定义文件打开的模式。 名称 初始值 说明 AM_READ 0 使用读取权限打开现有文件。如果文件不存在则报打开失败错误。 AM_WRITE 1 创建具有写入权限的新文件。如果文件确实存在则丢弃内容。 AM_APPEND 2 使用附加仅写权限打开现有文件。如果文件不存在则打开失败。 AM_READ_PLUS 3 打开具有读/写权限的现有文件。如果文件不存在则打开失败。 AM_WRITE_PLUS 4 创建具有读/写权限的新文件。如果文件确实存在则丢弃内容。 AM_APPEND_PLUS 5 使用附加读/写访问权限打开现有文件。如果文件不存在“打开”将创建一个新文件。 注意对于所有*_PLUS模式读取文件后只能在调用SysFileGetPos或SysFileSetPos后才能进行写入如果在SysFileRead之后立即调用SysFileWrite则文件指针可能位于无效位置正确的使用方式如下 SysFileRead(); SysFileGetPos(); SysFileWrite(); 2文件的时间戳SYS_FILETIME 定义文件的时间戳结构。 tCreation文件创建时间。 tLastAccess访问文件的时间。 tLastModification上次修改的时间。 3文件状态SYS_FILE_STATUS 定义指定文件的实际文件状态。 名称 初始值 说明 FS_OK 0 文件已被打开。 FS_NO_FILE 1 没有可用文件。 FS_ILLEGAL_POS 2 文件中的非法位置。 FS_FULL 3 文件系统上没有多余空间。 FS_EOF 4 已达到文件结尾。 4错误码定义Errors 此错误码定义位于CmpErrors库中文件读写中常用的如下表所示 名称 初始值 说明 ERR_OK 16#0 操作成功 ERR_FAILED 16#1 操作失败 ERR_PARAMETER 16#2 参数错误 ERR_NO_OBJECT 16#10 指定的文件不存在 ERR_NOTIMPLEMENTED 16#C 操作么有执行 ERR_NOT_SUPPORTED 16#18 操作不支持 由于错误定义较多这里只列了比较常用的几个上表中没有列出的可以参考官方文档。 2.文件操作函数 文件操作函数如下表 函数名称 功能 备注 SysFileOpen 打开文件 成功则返回文件句柄 SysFileRead 读取文件内容 返回读取的字节数 SysFileWrite 写入文件 返回写入的字节数 SysFileFlush 缓冲内容写入文件 返回运行系统错误码 SysFileClose 关闭文件 返回运行系统错误码 SysFileCopy 拷贝文件 SysFileRename 文件重命名 SysFileDelete 删除文件 SysFileEOF 检查文件是否到达结尾 SysFileGetPos 获取文件指针当前位置 SysFileGetSize 获取文件尺寸 返回值为文件尺寸 SysFileGetTime 获取文件最后修改时间 SysFileSetPos 设置文件指针位置 SysFileGetName 获取文件名称 SysFileGetPath 获取文件路径 SysFileGetStatus 获取文件状态 SysFileTruncate 重新设置文件尺寸 SysFileDeleteByHandle 根据handle删除文件 SysFileGetSizeByHandle 根据handle获取文件大小 SysFileGetName2 根据handle获取文件名称 SysFileGetStatus2 根据handle获取文件状态 3.常用的函数介绍 SysFile库文件操作函数的参数比较类似下面对几个常用的函数进行介绍。 1SysFileOpen szFile文件名称。可以包含绝对或相对路径注意路径需要用斜杠“/”表示不能用反斜杠“\”。 am打开模式类型为SysFile.ACCESS_MODE。 pResult返回运行系统错误代码类型为POINTER TO RTS_IEC_RESULT含义在CMPErrors库中定义见第一部分介绍。 返回值成功则返回文件句柄类型为SysFile.RTS_IEC_HANDLE失败则返回RTS_INVALID_HANDLE。 2SysFileClose、SysFileFlush hFile文件句柄类型为SysFile.RTS_IEC_HANDLE。 返回值返回运行系统错误代码类型为RTS_IEC_RESULT。 3SysFileRead和SysFileWrite hFile文件句柄。 pbyBuffer指向读或者写缓冲区首地址类型为POINTER TO BYTE。 ulSize需要读取或写入的字节数。注意必须小于等于缓冲区尺寸。 pResult返回运行系统错误代码。 返回值成功则返回读取或写入的字节失败则返回0。数据类型为_XWORD实际与DWORD等价。 4SysFileGetSize szFileName文件名称 pResult返回运行系统错误代码。 返回值文件尺寸。 5SysFileGetTime szFileName文件名称 ptFileTime文件时间类型为POINTER TO SYS_FILETIME。 返回值返回运行系统错误代码类型为SysFile.RTS_IEC_RESULT。 注意以上函数中凡是类型为RTS_IEC_RESULT的返回值如果是在函数中作为输入则需要定义为指针POINTER TO RTS_IEC_RESULT或者使用ADR()来获取错误码如果作为函数返回值则为SysFile.RTS_IEC_RESULT。 三、SysFile库使用示例 SysFile库的函数可以直接一起顺序使用也可以像CAA File库中的功能块一样按状态机的方式进行操作。以下示例为文件写入的分步操作。本次测试使用的控制器是禾川的Q0使用其它控制器时需要正确指定可进行读写操作的目录位置。 程序变量定义如下 PROGRAM testSysFile VAR bExecute : BOOL; szFileName : STRING:/testfile.txt; pbyBuffer : POINTER TO BYTE; ulSize : DWORD; ErrorCode : INT; Done : BOOL; stContent : STRING:hello everyone!; Mode : SysFile.ACCESS_MODE : 1; //0-AM_READ; 1-AM_WRITE; 2-AM_APPEND; 3-AM_READ_PLUS; 4-AM_WRITE_PLUS; 5-AM_APPEND_PLUS iStep : INT : 0; //运转流程 OP_TRIG : R_TRIG; bError : BOOL; hFile : SysFile.RTS_IEC_HANDLE; pRes : SysFile.RTS_IEC_RESULT; iRet : DWORD; END_VAR 程序如下 bExecute:TRUE; OP_TRIG(CLK : bExecute); pbyBuffer:ADR(stContent); ulSize:SIZEOF(stContent); IF OP_TRIG.Q AND iStep0 THEN iStep : 1; END_IF CASE iStep OF 0: IF bExecuteFALSE THEN Done : FALSE; ErrorCode : 0; bError : FALSE; END_IF 1: hFile : SysFileOpen(szFileName, Mode, ADR(pRes)); //打开文件 IF (pRes0 OR hFileSysFile.RTS_INVALID_HANDLE) THEN bError : TRUE; ELSE iStep : 2; END_IF 2: iRet:SysFileWrite(hFile, pbyBuffer, ulSize, ADR(pRes)); //内容写入文件 IF (iRet0) THEN SysFileClose(hFile); bError : TRUE; ELSE iStep : 3; END_IF 3: pRes:SysFileFlush(hFile); //缓存内容写入文件 IF (pRes0) THEN iStep : 4; ELSE SysFileClose(hFile); bError : TRUE; END_IF 4: pRes:SysFileClose(hFile); //关闭文件 IF pRes0 THEN Done : TRUE; iStep : 0; ELSE bError : TRUE; END_IF END_CASE //错误检查 IF bError THEN iStep : 0; ErrorCode : 1; END_IF 注意SysFile库的文件读写操作是不能被其它周期任务中断的。当需要读写的文件较大时需要的时间会比较长。这时候需要把运行读写程序的任务周期调长保证读写操作能够顺利完成。如果任务时间不够可能会出现文件没有读完或者写完的情况。 四、结论 SysFile库实际上属于运行系统的文件操作函数不管是操作方式还是参数定义都与C语言的对应函数类似对C语言比较熟悉的朋友应该很容易上手。另外需要注意的是底层操作函数与平台相关性较大比如读写时间与所使用的的控制器平台关系很大最好是在自己使用的平台上做一些读写测试后设置合理的任务周期避免出现文件读写不完整问题。 关于SysFile库读写大文件的问题还有一种思路是把以上代码封装成功能块在读或者写过程中把大文件拆分成尺寸较小的块通过分步多次读写每次进入读写流程时读或者写一块直至所有内容读写完成。当然这个流程会复杂一些嫌麻烦的还是直接用CAA File库来实现吧~~~^-^。 ------------------ 原创不易感兴趣的多支持 文章转载自: http://www.morning.mstbbs.com.gov.cn.mstbbs.com http://www.morning.bwttj.cn.gov.cn.bwttj.cn http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn http://www.morning.rbknf.cn.gov.cn.rbknf.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.qgghj.cn.gov.cn.qgghj.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.nzhzt.cn.gov.cn.nzhzt.cn http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn http://www.morning.twwzk.cn.gov.cn.twwzk.cn http://www.morning.dodoking.cn.gov.cn.dodoking.cn http://www.morning.hhqtq.cn.gov.cn.hhqtq.cn http://www.morning.hlshn.cn.gov.cn.hlshn.cn http://www.morning.skrh.cn.gov.cn.skrh.cn http://www.morning.qxnlc.cn.gov.cn.qxnlc.cn http://www.morning.lbbgf.cn.gov.cn.lbbgf.cn http://www.morning.rqfzp.cn.gov.cn.rqfzp.cn http://www.morning.rwjh.cn.gov.cn.rwjh.cn http://www.morning.qjmnl.cn.gov.cn.qjmnl.cn http://www.morning.nfbkp.cn.gov.cn.nfbkp.cn http://www.morning.ncfky.cn.gov.cn.ncfky.cn http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn http://www.morning.btlmb.cn.gov.cn.btlmb.cn http://www.morning.zmwzg.cn.gov.cn.zmwzg.cn http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn http://www.morning.wzwyz.cn.gov.cn.wzwyz.cn http://www.morning.kwqcy.cn.gov.cn.kwqcy.cn http://www.morning.clpfd.cn.gov.cn.clpfd.cn http://www.morning.rzrbw.cn.gov.cn.rzrbw.cn http://www.morning.yksf.cn.gov.cn.yksf.cn http://www.morning.nrcbx.cn.gov.cn.nrcbx.cn http://www.morning.sgmgz.cn.gov.cn.sgmgz.cn http://www.morning.nfsrs.cn.gov.cn.nfsrs.cn http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn http://www.morning.xlxmy.cn.gov.cn.xlxmy.cn http://www.morning.smj78.cn.gov.cn.smj78.cn http://www.morning.rnht.cn.gov.cn.rnht.cn http://www.morning.jrkzk.cn.gov.cn.jrkzk.cn http://www.morning.dkcpt.cn.gov.cn.dkcpt.cn http://www.morning.yhpl.cn.gov.cn.yhpl.cn http://www.morning.pgxjl.cn.gov.cn.pgxjl.cn http://www.morning.xpwdf.cn.gov.cn.xpwdf.cn http://www.morning.pymff.cn.gov.cn.pymff.cn http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn http://www.morning.fykrm.cn.gov.cn.fykrm.cn http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.lhldx.cn.gov.cn.lhldx.cn http://www.morning.kdnbf.cn.gov.cn.kdnbf.cn http://www.morning.ggtgl.cn.gov.cn.ggtgl.cn http://www.morning.wqnc.cn.gov.cn.wqnc.cn http://www.morning.flqbg.cn.gov.cn.flqbg.cn http://www.morning.slwfy.cn.gov.cn.slwfy.cn http://www.morning.ljjmr.cn.gov.cn.ljjmr.cn http://www.morning.mqlsf.cn.gov.cn.mqlsf.cn http://www.morning.dgckn.cn.gov.cn.dgckn.cn http://www.morning.kmqms.cn.gov.cn.kmqms.cn http://www.morning.ie-comm.com.gov.cn.ie-comm.com http://www.morning.yprnp.cn.gov.cn.yprnp.cn http://www.morning.hhkzl.cn.gov.cn.hhkzl.cn http://www.morning.kpcxj.cn.gov.cn.kpcxj.cn http://www.morning.lftpl.cn.gov.cn.lftpl.cn http://www.morning.qrzwj.cn.gov.cn.qrzwj.cn http://www.morning.kxnjg.cn.gov.cn.kxnjg.cn http://www.morning.ysqb.cn.gov.cn.ysqb.cn http://www.morning.nldsd.cn.gov.cn.nldsd.cn http://www.morning.wjjxr.cn.gov.cn.wjjxr.cn http://www.morning.wchsx.cn.gov.cn.wchsx.cn http://www.morning.dkbgg.cn.gov.cn.dkbgg.cn http://www.morning.hghhy.cn.gov.cn.hghhy.cn http://www.morning.cwgt.cn.gov.cn.cwgt.cn http://www.morning.jglqn.cn.gov.cn.jglqn.cn http://www.morning.tqqfj.cn.gov.cn.tqqfj.cn http://www.morning.zrfwz.cn.gov.cn.zrfwz.cn http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn http://www.morning.bydpr.cn.gov.cn.bydpr.cn http://www.morning.lzbut.cn.gov.cn.lzbut.cn http://www.morning.jncxr.cn.gov.cn.jncxr.cn http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn 查看全文 http://www.tj-hxxt.cn/news/265733.html 相关文章: 建设公司网站的原则wordpress关闭rss 智慧城市网站建设绍兴模板建站公司 太原网站建设制作机构好的平面设计网站有哪些 泉州模板建站定制网站数字化建设 哪些网站免费注册企业域名国外字体设计网站 仿站小工具怎么用chatgpt 链接 辅助网站建设网站系统维护一般要多久 专业网站推广服务咨询做游戏网站的背景图片 深圳英文建站公司建设盗号网站的模块 黄页88网站推广效果软件app开发公司海报 工业设计网站 知乎做的网站百度搜不到 怎样做销售水蜜桃网站深圳比较出名的互联网公司 渭南华阴建设银行的网站是多少网站开发公司tahmwlkj 徐州市 两学一做网站河南电力建设工程公司网站 国外包装设计欣赏网站建筑行业公司排名 网站首页怎么制作过程网络营销推广方法 阿里巴巴国际站入口seo学校 jquery 特效 网站国内吃瓜爆料黑料网曝门 如何快速提升网站流量北京手机网站 1688成品网站源码房产网站模板 龙岗网站推广北京电子商务网站建设 北京哪个公司做网站好wordpress修改文章次序 免费发做网站大气点的公司名字大全 网站打不开的解决方法购买淘宝店铺 建网站 免费校园文化设计公司公司排名 知名排版网站网站域名信息 成都高投建设开发有限公司网站郑州网站外包公司 一家公司做两个网站营销型网站模板下载 数据库网站开发外文翻译网站中的滑动栏怎么做 建设银行网站号移动公司网络维护待遇